{
  "schemaVersion": "2025-06-18",
  "name": "geocast-mcp",
  "displayName": "Geocast MCP Server",
  "description": "Model Context Protocol server for Geocast-published properties. Provides agents with structured access to property metadata, story content, Today Feed real-time recommendations, and sourced narrative content. Supports per-property and (when authorized) per-organization conversational scopes.",
  "version": "1.0.0",
  "publisher": {
    "name": "Geocast AI, Inc.",
    "url": "https://geocast.ai"
  },
  "homepage": "https://geocast.ai",
  "endpoint": "https://mcp.geocast.ai/mcp",
  "transport": "streamable-http",
  "capabilities": {
    "tools": {
      "listChanged": true
    }
  },
  "scopes": [
    {
      "id": "property",
      "description": "Property-scoped conversation. Agent can answer questions about a single property's content, today feed, and metadata. This is the default scope.",
      "endpoint": "https://mcp.geocast.ai/mcp/properties/{property-slug}",
      "authentication": "none"
    },
    {
      "id": "organization",
      "description": "Organization-scoped conversation. Agent can answer questions across all properties owned by a single organization. Used by chain operators for unified property management. Requires authentication.",
      "endpoint": "https://mcp.geocast.ai/mcp/orgs/{org-slug}",
      "authentication": "oauth2"
    },
    {
      "id": "country",
      "description": "Country-scoped discovery. Agent can list and describe all public properties in a country. Read-only.",
      "endpoint": "https://mcp.geocast.ai/mcp/countries/{country-code}",
      "authentication": "none"
    }
  ],
  "tools": [
    {
      "name": "get_property_story",
      "description": "Returns the narrative story layer for a given property address. Takes a street address and returns sourced narrative content, heritage stories, and structured property metadata. This is the universal entry point: any agent can ask about any address, and Geocast returns either the published guide for properties in our catalog or generates a story layer on demand for unpublished addresses.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "description": "Street address of the property (e.g. \"17600 Center Drive, Sunriver, OR 97707\")"
          }
        },
        "required": ["address"]
      }
    }
  ],
  "plannedTools": [
    {
      "name": "get_today_feed",
      "description": "Planned. Returns the current Today Feed for a property: phase-aware recommendations and storm overrides if active. Time-sensitive; will include freshness timestamps."
    },
    {
      "name": "list_properties",
      "description": "Planned. Lists public properties published on Geocast, optionally filtered by country, region, or category."
    },
    {
      "name": "search",
      "description": "Planned. Search across all public Geocast content. Returns canonical URLs and snippets."
    }
  ],
  "authentication": {
    "schemes": ["none", "oauth2"],
    "oauth2": {
      "discovery": "https://geocast.ai/.well-known/oauth-authorization-server",
      "protectedResource": "https://geocast.ai/.well-known/oauth-protected-resource"
    }
  },
  "rateLimits": {
    "anonymous": "60 requests per minute",
    "authenticated": "600 requests per minute"
  },
  "contentSignals": {
    "ai-train": "yes",
    "search": "yes",
    "ai-input": "yes"
  }
}
