server.json
1 field changed
- version
-
1.10.01.13.0
io.github.takodata/tako-mcp
22 changes recorded. MCP Harbor re-reads this listing from the official registry every six hours and asks the live server what it exposes, and keeps what changed between one look and the next.
https://raw.githubusercontent.com/takodata/tako-mcp/HEAD/AGENTS.md
− - **Tool registry**: auto-generated from `workers/src/tools/*.ts` via `workers/scripts/gen-registry.ts`; outputs `workers/src/tools/_registry.ts`, `registry/server.json`, `registry/lhm.plugin.json` and `docs/TOOLS.md` in lockstep (CI checks all four for drift)− | `workers/scripts/gen-registry.ts` | Codegen for `_registry.ts` + `registry/server.json` |− Two path-selected surfaces, no User-Agent sniffing (`workers/src/surface.ts`): `/mcp` is the generic surface every client shares (anonymous tier allowed; charts as inline PNG); `/mcp/chatgpt` is the OAuth-only surface submitted to OpenAI's app directory (MCP Apps widget, top-level `securitySchemes`, Apps-review annotation overrides via `annotationsBySurface`). Membership per surface: `workers/src/tools/_surface.ts` — two constant name sets plus `resolveToolSet(surface, requested)`. `?tools=` is − 1. `tako_search` — Fast retrieval of a **list of structured cards** (top renders as an inline chart). Four parameters — `query`, `sources`, `country_code`, `locale` — and no defaults of its own, so an omitted field takes the v3 API's. It finds data; `tako_contents` fetches it. Reach for it when fanning out queries in parallel to see what exists, or when the chart is the deliverable. Default.− 2. `tako_contents` — Fetch what's behind a result url in full: a web page's text, or an exportable card's data rows as one projected `rows` shape. Four inputs — `urls` (required), `max_rows`, `max_chars`, `query`. Requires a signed-in connection. Default.− 3. `tako_available_data` — Find **what proprietary, structured data exists** on an entity or metric, and confirm a specific figure exists (and its exact name) before spending a priced `tako_search`. Lists the available metrics in one free call. Each match carries its canonical name — search on that name, since `tako_search` takes no pin — plus an `id` for `tako_graph_related` traversal. Ambiguous `q` returns the top entity and top metric as candidates; `metric` is the substring browse filter; `l− 5. `tako_search_advanced` — The WHOLE v3 `SearchRequest` body plus `include_answer` and `output_schema`, derived from `workers/src/generated/schemas.ts` so the set cannot drift (parity is tested, not asserted in a header). `include_answer: true` runs `POST /api/v1/answer` instead of `/api/v3/search`: one synthesized, citation-backed answer with the retrieval as its citations. Every level is `.strict()`, and `mcp.ts` registers the full schema object, so an unknown key is a -32602 on the wire. It − 6. `tako_agent` — Answer Agent for multi-step data questions (~30–90s; the Worker polls the run to a terminal state inside the one tool call and returns the finished answer). Both channels carry the projected run: `answer`, `citations`, the `cards` it built, and the definitions/assumptions/methodology maps. NO progress notification reaches any host — the transport discards request-scoped notifications under `enableJsonResponse: true`, so the client's own tool timeout is the ceiling (TAKO-4485). − 7. `tako_visualize` — Create a card from your own structured data. The one tool here that WRITES: the card is public and permanent, and anyone with the returned url can open it without signing in. Opt-in on `/mcp`, listed by default on `/mcp/chatgpt`, the host that renders the widget inline.− Items 5-7 are opt-in: name the tool in `?tools=` (an allowlist that replaces the defaults; see `workers/src/tools/_tools_param.ts` and `_surface.ts`). The generated reference is `docs/TOOLS.md`; `registry:check` fails when it is stale.− | `/mcp` | POST | MCP JSON-RPC over streamable HTTP — the generic surface every client shares |− - `chatgpt-app-submission.json` is what we INTEND to submit next, not what OpenAI currently holds. OpenAI snapshots names, descriptions and input schemas at submission and does not update them live, so between submissions this file and OpenAI's copy disagree by exactly the changes waiting to ship — `tako_graph_related` was added to it before any resubmission. `chatgpt-app-snapshot.json` is the sha256 parity record of the same surface as last ACCEPTED here; `registry:check` compares the live tool+ - **Tool registry**: auto-generated from `workers/src/tools/*.ts` via `workers/scripts/gen-registry.ts`; outputs `workers/src/tools/_registry.ts`, `registry/server.json`, `registry/lhm.plugin.json`, `docs/TOOLS.md` and `workers/src/generated/skills.ts` in lockstep (CI checks all five for drift)+ - **Skills**: `/mcp` serves the `skills/` directory through the MCP Skills extension (SEP-2640): `skills/list`, `skills/get` and `skill://<name>/SKILL.md` resources. A connection gets only the skills whose every named tool it registers, so a default `/mcp` gets `tako-search`. A connection declares the extension only when it serves a skill, and declares `resources` when it serves a skill or a widget tool. `/mcp/chatgpt` serves no skills; ChatGPT gets them from the plugin zip (`chatgpt-plugin/buil+ | `workers/src/mcp_session.ts` | Reads MCP Apps support from `initialize`, and mints and classifies the `ui-` and `noui-` `Mcp-Session-Id` that decides widget or PNG on `/mcp` |+ | `workers/src/tools/_input_pins.ts` | `?sources=` URL pins: parsing, the 400 message, and how each tool's schema, input, and description change on a pinned connection |+ | `workers/src/skills.ts` | Skills extension on `/mcp`: `skillsForTools` filter, `skills/list`, `skills/get` and `skill://` resources |+ | `workers/src/generated/skills.ts` | Auto-generated skill records (text, frontmatter, digest, size, named tools) — DO NOT edit by hand; run `npm run registry:gen` after you change `skills/` |+ | `workers/scripts/gen-registry.ts` | Codegen for `_registry.ts`, `registry/server.json` and `src/generated/skills.ts` (through `gen-skills.ts`) |+ Two path-selected surfaces, no User-Agent sniffing (`workers/src/surface.ts`): `/mcp` is the generic surface every client shares (anonymous tier allowed; charts render in the MCP Apps widget for a client whose `initialize` declares MCP Apps support, and as an inline PNG for any other client. The Worker mints a `ui-` or `noui-` `Mcp-Session-Id` at `initialize`, so a client that doesn't echo that header on later calls gets the PNG, and the `[mcp] session` log line records each request's session ki+ 1. `tako_search` — Fast retrieval of a **list of structured cards** (every card renders as a chart in the widget on `/mcp/chatgpt` and for a `/mcp` client that declares MCP Apps support; any other `/mcp` client gets the first card as a PNG). Four parameters — `query`, `sources`, `country_code`, `locale`, with `sources` dropped on a `?sources=` connection — and no defaults of its own, so an omitted field takes the v3 API's. It finds results; `tako_contents` fetches them. Reach for it when fanning+ 2. `tako_contents` — Fetch what's behind a result url in full: a web page's text, or an exportable card's data rows as one projected `rows` shape. Eight inputs on `/mcp` — `urls` (required), `max_rows`, `max_chars`, `query`, `delivery`, `format`, `offset` and `premium` — and six on `/mcp/chatgpt`, which has no `delivery` or `format` and returns rows inline only. `delivery: "link"` returns a file that expires 5 minutes after the call (CSV for `rows`, JSON for `card`), and is the path to analyze r+ 3. `tako_available_data` — Find **what proprietary, structured data exists** on an entity or metric, for questions about what Tako covers. Lists the available metrics in one call. Each match carries its canonical name — search on that name, since `tako_search` takes no `node_ids` pin — plus an `id` for `tako_graph_related` traversal. Ambiguous `q` returns the top entity and top metric as candidates; `metric` is the substring browse filter; `limit` (max 20) widens the list. Default.+ 5. `tako_search_advanced` — The WHOLE v3 `SearchRequest` body plus `include_answer` and `output_schema`, derived from `workers/src/generated/schemas.ts` so the set cannot drift (parity is tested, not asserted in a header). `include_answer: true` runs `POST /api/v1/answer` instead of `/api/v3/search`: one synthesized, citation-backed answer with the retrieval as its citations. Every level is `.strict()`, and `mcp.ts` registers the full schema object, so an unknown key is a -32602 on the wire. It + 6. `tako_agent` — Answer Agent for multi-step data questions. Start-or-resume: a call takes `query` (start) or `run_id` (resume), exactly one. It waits up to 45 s (`AGENT_CALL_WINDOW_MS`) and returns the finished run, or `status: "running"` with an `answer_run_…` `run_id` to send back. Neither agent tool cancels a run; an aborted call leaves it going. Both channels carry the projected run: `answer`, `citations`, the `cards` it built, and the definitions/assumptions/methodology maps. On `/mcp`, a+ 7. `tako_company_agent` — Company Agent for lists of companies or people: companies by location, industry, status, founding date, funding stage, or size, and the officers, directors, owners, or employees of those companies. Same start-or-resume contract, 45 s window, SSE progress, and chart widget as `tako_agent`, with a `company_run_…` `run_id`. It sends `cards: true` and leaves `locale`, `timezone`, and `output_settings` unset. Opt-in via `?tools=company_agent` on the generic surface; always l+ 8. `tako_visualize` — Create a card from your own structured data. The one tool here that WRITES: the card is public and permanent, and anyone with the returned url can open it without signing in. Opt-in on `/mcp`, listed by default on `/mcp/chatgpt`. On `/mcp/chatgpt`, and on `/mcp` for a client that declares MCP Apps support, the card renders in the chart widget.+ On `/mcp`, items 5-8 are opt-in: name the tool in `?tools=` (an allowlist that replaces the defaults; see `workers/src/tools/_tools_param.ts` and `_surface.ts`). `/mcp/chatgpt` lists items 6-8 by default. The generated reference is `docs/TOOLS.md`; `registry:check` fails when it is stale.+ | `/mcp` | POST | MCP JSON-RPC over streamable HTTP — the generic surface every client shares. Also serves the skills its tools support through the Skills extension |+ - OpenAI rescans `/mcp/chatgpt` daily and updates each tool after its automated checks pass. Until a changed tool passes, ChatGPT keeps its earlier definition. So a production deploy, not a resubmission, is what moves a tool's name, description, or schema in ChatGPT. `chatgpt-app-snapshot.json` is the sha256 parity record of that surface as last ACCEPTED here; `registry:check` compares the live tools against it, and `npm run registry:gen -- --accept-chatgpt-snapshot` is the only thing that moves+ - Before you change a bundled skill, the server instructions, a tool+ description, or what a result says about cost, read+ `docs/WRITING_FOR_MODELS.md`. The skill, not the descriptions, decides+ whether a model calls Tako, and prices stay out of descriptions.
We can't find the internet
Attempting to reconnect
Something went wrong!
Attempting to reconnect