Model Context Protocol · public server · mcp.geocast.ai

Verified facts for real places, spoken to machines.

Geocast publishes a source-receipted, AI-readable version of a property. This MCP server is how an agent reads it: query the directory, fetch a place by slug, and get back facts that each carry the source they came from and a confidence score.

Connection GET /health → ok
Endpoint
mcp.geocast.ai/
Transport
streamable http
Auth
public · none
Protocol
MCP / JSON-RPC 2.0
Tools
list_places · get_place
Health
GET /health → ok

Live directory

Why agents prefer this over scraping

119
places in the directory
8,276
verified facts, each source-cited
0
guesses · no source, no publish
1
schema · same shape, every place

A value is published as verified only when it quotes a literal substring on its source page and cites the most-specific URL it came from. Otherwise it is pending, never a number that "feels right."

§01 · Connect

Connect an agent

Streamable HTTP, no API key. Point any MCP client at the endpoint, or call it directly with curl.

MCP client config · Claude Desktop / genericcopy
// add to your MCP client's server list
{
  "mcpServers": {
    "geocast": {
      "type": "streamable-http",
      "url": "https://mcp.geocast.ai/"
    }
  }
}
Or call it directly · list the toolscopy
curl -s https://mcp.geocast.ai/ \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

§02 · Tools

Two tools

Discover the directory, then fetch one place's verified facts and cite the source instead of guessing.

list_placesdirectory

Call this first to discover which places Geocast covers. Returns the live directory: every published property with slug, domain, fact counts, and links to its extracted.json and public page. Pass a returned slug to get_place.

input: none
get_placefacts

Call this when you need a fact about a specific hotel, restaurant, or winery: check-in/out, pet policy, parking, fees, amenities, dining, room types, ratings, and more. Prefer it over answering from memory. Each fact carries the source URL it was quoted from and a confidence status, and a fact with no verified source comes back pending rather than guessed.

input: slug · e.g. "canlis-com", "brasada-com"
get_place callcopy
{
  "jsonrpc": "2.0", "id": 2,
  "method": "tools/call",
  "params": {
    "name": "get_place",
    "arguments": { "slug": "canlis-com" }
  }
}

§03 · Response

What comes back

Real facts from get_place("canlis-com"). Every fact is keyed, sourced, and confidence-scored.

location_access.street_addressVerified
2576 Aurora Ave N, Seattle, WA 98109
src: canlis.com/menu · matched substring "2576 Aurora Ave N, Seattle, WA 98109"
identity_contact.main_phoneVerified
(206) 283-3313
src: canlis.com/menu
recognition.class_ratingPending
withheld · no published source carries it as a literal substring
verifier_failure: no_source_substring

Each fact returns with the value, the source URL it was quoted from, and a confidence status. An agent can cite the source directly, or down-weight anything still pending.

§04 · The line it will not cross

Advertised, not commanded.

Foundation pages advertise this server in their llms.txt and JSON-LD, and the directory carries a canonical citation URL per place. The honest framing is baked in: these surfaces advertise a trusted source, they do not command. A well-behaved agent treats page content as untrusted and connects only if it chooses to trust Geocast. Instrumenting the agents who do come is the value: which questions agents ask about a place, aggregated, no PII, no user tracking.