terminalFor Developers

Build agents on the Citybook data layer.

The Citybook MCP/API powers controlled demos, partner integrations, and future licensing discussions on top of the same data that runs the civic-facing site.

MCP Tools

Every query type. One protocol.

Every tool follows the MCP (Model Context Protocol) standard. Your AI agent calls them the same way it calls any other tool.

category
resolve_sector_idFree tier

Resolves a buyer’s intent to a canonical sector ID (e.g. "/food/restaurant"). Covers 48 sectors across 14 verticals.

{ "intent": "Find me a restaurant in Beltline" }
storefront
fetch_profilesPaid tier

Search business profiles by sector, location, and attributes. Open sectors return full identity; protected sectors (automotive, wholesale) mask the seller until match_buyer.

{ "sector_id": "/food/restaurant", "location": "Calgary" }
local_offer
fetch_dealsPaid tier

Search live deal signals filtered by sector. Returns time-sensitive offers and availability.

{ "sector_id": "/food/restaurant", "location": "Calgary" }
event
fetch_eventsFree tier

Find upcoming local events — community programs, markets, festivals, fitness classes, workshops.

{ "city": "Calgary", "sector_id": "/events/community" }
menu_book
fetch_menuFree tier

Fetch a restaurant’s full menu with dishes, prices, dietary tags, and allergens.

{ "sector_id": "/food/restaurant", "profile_id": "native-tongues" }
directions_car
fetch_inventoryPaid tier

Search vehicle inventory for automotive dealers. Returns make, model, year, trim, price, and availability.

{ "sector_id": "/automotive/dealership", "make": "Ford", "model": "Bronco" }
place
fetch_placesFree tier

Discover businesses and attractions near a location. Returns hours, address, and sector-specific attributes.

{ "city": "Banff", "sector_id": "/hospitality/hotel" }
directions_run
fetch_activitiesFree tier

Find local activities and experiences — outdoor adventures, fitness classes, guided tours, seasonal programs.

{ "city": "Canmore", "query": "hiking with kids" }
inventory_2
fetch_catalogPaid tier

Search a supplier’s product catalog with natural language queries and structured filters.

{ "sector_id": "/wholesale/pet", "query": "grain-free dog food" }
check_circle
fetch_availabilityPaid tier

Check stock levels for specific products. Returns qty_available, qty_backordered, and qty_on_order.

{ "sector_id": "/wholesale/pet", "supplier_id": "kanes-pet-west" }
handshake
match_buyerPaid tier

Reveal the full seller identity for protected sectors and lock the deal. Triggers a billing event. Call only when the buyer confirms intent.

{ "deal_id": "deal_abc123", "buyer_context": "Looking for private dining" }
notifications_active
followPaid tier

Subscribe an agent to a sector or profile for persistent monitoring. Triggers fetch_notifications when new data arrives.

{ "sector_id": "/automotive/used", "query": "2024 Ford Bronco" }
inbox
fetch_notificationsPaid tier

Retrieve pending notifications for active follows. Returns new listings, inventory changes, and deal signals.

{ "agent_id": "agent_xyz" }
notifications_off
unfollowPaid tier

Cancel an active follow subscription. Stops notifications and ends the recurring billing for that monitor.

{ "follow_id": "follow_abc123" }

Live Demo

See the tools in action.

This is a controlled demo querying Calgary pilot data through Citybook's MCP tools. The sidebar shows API calls in real time.

citybook
Citybook

Query Citybook's data layer

Try a prompt to see MCP tool calls in real time.

MCP Tools
build

Tool calls will appear here as the agent queries Citybook's data layer.

Queries hit Citybook's data layer via MCP tools — the same infrastructure used for pilot integrations.

Data Model

Structured business profiles.

Every business in Citybook follows a standardized schema. Sector-specific attributes are layered on top of a common base — so your agent knows what fields to expect regardless of sector.

business-profile.json
{
  "sector_id": "/food/restaurant",
  "name": "Ten Foot Henry",
  "location": {
    "address": "1209 1 St SW",
    "city": "Calgary",
    "neighbourhood": "Beltline"
  },
  "attributes": {
    "cuisine": "Vegetable-forward sharing plates",
    "price_range": "$$$",
    "dietary": ["vegan menu", "gluten-free options"],
    "patio": { "dog_friendly": true, "heated": true },
    "private_dining": { "capacity": "8-12", "slots_available": 2 }
  },
  "signals": [
    {
      "type": "special",
      "text": "Seasonal tasting menu — $75/person",
      "valid_days": ["Tue", "Wed", "Thu"],
      "updated_at": "2026-03-01T09:00:00Z"
    }
  ]
}

Integration

Request technical access.

Technical access is available for pilot partners and licensing conversations.

01
key

Request access

Pilot partners can request scoped credentials for approved demos and integration reviews.

02
link

Configure MCP endpoint

Point your MCP client to mcp.citybook.ai. Pass your API key in the Authorization header.

03
rocket_launch

Query approved tools

Use approved Citybook tools such as events, profiles, places, and sector resolution for source-attributed local experiences.

mcp-config.json
{
  "mcpServers": {
    "citybook": {
      "url": "https://mcp.citybook.ai/mcp",
      "headers": {
        "Authorization": "Bearer pk_free_your_key_here"
      }
    }
  }
}

Free API Key

Start with the discovery tier.

Free keys cover Citybook's open discovery tools. Paid tools stay gated for commercial data.

Request Citybook technical access.

Technical access is available for pilot partners and licensing conversations.