Documentation — the apex door
Connector documentation for the apex door of the Capital Markets Knowledge Graph: how to connect, the five tools, the identifiers, the record shape, where records live, what data is handled, limits and versioning, support. Counts on this page are read live from list_nodes at render: 11 live nodes, 28479 issuer records, 2386821 dated disclosure events.
1. Connect
Server URL https://mcp.capitalmarketsknowledgegraph.ai/mcp. Transport: Streamable HTTP over the Model Context Protocol (MCP), JSON-RPC 2.0 (JavaScript Object Notation Remote Procedure Call) over HTTPS. Authentication: none. Sign-in: not required. Claude: Settings → Connectors → Add custom connector → paste the URL. The same URL serves every client; a plain GET on it answers 405 by design — the door speaks JSON-RPC by POST.
{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"resolve_issuer","arguments":{"identifier":"TSX:SHOP"}}}
→ {"matches":[{"cmr":"ca-cm-kg/TSX/SHOP","node":"ca-cm-kg","version":1,"as_of":"2026-09-10","name":"Shopify Inc.","ticker":"SHOP","exchange":"TSX","isin":"CA82509L1076","lei":"549300HGQ43STJLLP808","event_count":2,"record_url":"https://mcp.ca-cm-kg.ai/record/TSX/SHOP"}],"matched_by":"ticker","ambiguous":false,"nodes_asked":["ca-cm-kg"]}
2. Tools
Five tools, all read-only (every tool carries readOnlyHint: true in its annotations). Parameters marked ? are optional.
| tool | parameters | returns | wire example |
|---|---|---|---|
resolve_issuer | identifier | record summary: node, version, as_of, name, ticker, exchange, ISIN, LEI, event count, record and events URLs; matched_by, ambiguous | |
get_record | identifier, version? | the full Capital Markets Record (CMR): identity fields each with value, source_url, read_by and state; aliases; events URL and count; gaps; served_by | |
list_events_since | identifier, since?, cursor?, limit? | dated, sourced disclosure events since a date (YYYY-MM-DD; omitted = the full twelve-month window), paged by cursor | |
list_aliases | identifier | sourced trade and former names, each with its source URL and reader | |
list_nodes | none | the twelve market nodes, which are live, their regional doors, record and event counts, drop dates | |
Examples of record: TSX:SHOP and LSE:BARC, both verified live on the wire on 2026-09-13; responses trimmed to the leading fields, "…" marks the cut.
3. Identifiers
An identifier is any of: a ticker with or without its exchange (SHOP, TSX:SHOP, SHOP.TO, SHEL.L, BHP.AX, 7203.T); an International Securities Identification Number (ISIN); a Legal Entity Identifier (LEI); the exact legal name; a sourced alias; or a CMR key such as ca-cm-kg/TSX/SHOP. The apex holds an index only: it names the owning node and forwards. The record is served by that node's regional door in the issuer's own jurisdiction and is never stored at the apex.
4. The record shape
Every field of a Capital Markets Record carries four parts: value, source_url (the public filing or registry page it was read from), read_by (the registry API or the reading engine) and state — one of sourced (read from the filing), filled (read by an engine, not yet confirmed), confirmed (two sources agree), conflict (sources disagree; both kept) or unverified. Record level: as_of (the drop date), version, a gaps list naming what could not be read, and served_by (node, regional door, Agent Card). Machine descriptions: openapi.json (OpenAPI 3.1, the REST twin of the door) and mcp.json (the MCP descriptor).
5. Residency
Records are stored and served in the issuer's own jurisdiction. Eleven live nodes, one Microsoft Azure region each, region written in full; counts and drop dates read live from list_nodes at render.
| node | Azure region | regional door (MCP) | Agent Card (A2A) | issuer records | events | drop |
|---|---|---|---|---|---|---|
| Canada | Canada Central Azure (Toronto, Canada) | https://mcp.ca-cm-kg.ai/mcp | https://agent.ca-cm-kg.ai/.well-known/agent-card.json | 4820 | 25222 | 2026-09-10 |
| United States | East US Azure (Virginia, United States) | https://mcp.us-cm-kg.ai/mcp | https://agent.us-cm-kg.ai/.well-known/agent-card.json | 7710 | 1872343 | 2026-09-12 |
| United Kingdom | UK South Azure (London, United Kingdom) | https://mcp.uk-cm-kg.ai/mcp | https://agent.uk-cm-kg.ai/.well-known/agent-card.json | 1570 | 128191 | 2026-09-11 |
| France | France Central Azure (Paris, France) | https://mcp.fr-cm-kg.ai/mcp | https://agent.fr-cm-kg.ai/.well-known/agent-card.json | 712 | 10469 | 2026-09-11 |
| Netherlands | West Europe Azure (Amsterdam, Netherlands) | https://mcp.nl-cm-kg.ai/mcp | https://agent.nl-cm-kg.ai/.well-known/agent-card.json | 123 | 2742 | 2026-09-11 |
| Switzerland | Switzerland North Azure (Zurich, Switzerland) | https://mcp.ch-cm-kg.ai/mcp | https://agent.ch-cm-kg.ai/.well-known/agent-card.json | 829 | 1512 | 2026-09-11 |
| Germany | Germany West Central Azure (Frankfurt, Germany) | https://mcp.de-cm-kg.ai/mcp | https://agent.de-cm-kg.ai/.well-known/agent-card.json | 3436 | 35570 | 2026-09-11 |
| Australia | Australia East Azure (Sydney, Australia) | https://mcp.au-cm-kg.ai/mcp | https://agent.au-cm-kg.ai/.well-known/agent-card.json | 1874 | 124581 | 2026-09-11 |
| Singapore | Southeast Asia Azure (Singapore) | https://mcp.sg-cm-kg.ai/mcp | https://agent.sg-cm-kg.ai/.well-known/agent-card.json | 639 | 3620 | 2026-09-12 |
| Japan | Japan East Azure (Tokyo, Japan) | https://mcp.jp-cm-kg.ai/mcp | https://agent.jp-cm-kg.ai/.well-known/agent-card.json | 3964 | 39274 | 2026-09-12 |
| South Korea | Korea Central Azure (Seoul, South Korea) | https://mcp.kr-cm-kg.ai/mcp | https://agent.kr-cm-kg.ai/.well-known/agent-card.json | 2802 | 143297 | 2026-09-12 |
Hong Kong is a beacon at Width 0: the roster is held, not served; no door, no Agent Card; Hong Kong identifiers answer not found at the apex until a local partner reads the filings.
6. Data handling
Public-record data only: listing rosters, company registries, exchange notices and newswire releases, each field named to its source. No prices, no quotes, no licensed market data. No user data is collected or stored: the door takes an identifier and returns a record; there is no account, no session, no token on the public routes, no write path, and no cookies on any surface of the estate. Calls are not attributed to a caller. The operator's identity is on every response in the X-CMR-Operator header.
7. Limits and versioning
Record version: as it stands on the wire, every record response carries X-CMR-Version: 1 and version: 1 in the body (record version 1; a prior version can be asked for with get_record(identifier, version)). The apex and node doors report serverInfo.version 0.12.1 on initialize; this surface reports X-Surface-Version: 2026-09-13.13. Rate limit: none of the operator's at the edge — no rate-limiting rule is configured on the doors; the doors answer every caller at the same speed, and a caller that floods one will see the edge's ordinary connection limits, not a quota.
8. Support and security
Support: allooloo.io/support. Security and responsible disclosure: allooloo.io/security and /.well-known/security.txt. The agents that built this read their own mail: allooloo@hey.com.