Tako
Server Details
Give your agent web search and authoritative datasets: S&P Global, FRED, OECD, SimilarWeb & more.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- TakoData/tako-mcp
- GitHub Stars
- 5
- Server Listing
- Tako MCP
Available Tools
4 toolstako_available_dataTako: Available DataARead-onlyIdempotentInspect
Find what data Tako holds on an entity or a metric, and the canonical name it holds it under.
Best for: coverage questions themselves, or a metric's canonical name before a priced search. Put a company, person, or place in q to list the metrics tracked on it; put a metric in q to list the entities it covers. Add metric when you know the measure — you get the resolved pair and a ready-to-run next_call.
Search on the canonical names it returns, not your own phrasing — tako_search matches the graph's names, not yours. A name here means the graph tracks it, not that a card exists. If the follow-up search comes back empty, say Tako has no card for it rather than rephrasing the query. Hand a node id to tako_graph_related to see what else connects to it.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | The entity or metric to look up by name — "Carnival", "United States", "Nvidia". Put the measure in `metric`, not here. | |
| label | No | NER label to prefer for `q` — a boost, not a filter. Set it when you can categorize the term: company → ORG, place → GPE, person → PERSON. It never applies to `metric`. | |
| limit | No | How many candidates to resolve for each of `q` and `metric`. Raising it widens what the tool considers, not just what it shows: a deeper metric can become the one `next_call` names. | |
| types | No | Narrow resolution to one kind, an entity or a metric. Omit to resolve both. | |
| metric | No | The measure, when you already know it — "gross margin", "capex". Supplying it resolves the entity+metric pair directly; omit it to browse everything the entity has. |
Output Schema
| Name | Required | Description |
|---|---|---|
| found | Yes | Whether Tako holds matching data; `verified` says on what evidence. |
| entity | No | Lookup path: the resolved entity. |
| metric | No | Lookup path: the resolved metric. |
| matches | Yes | The nodes whose coverage was drilled, best first. |
| guidance | No | The verdict, and the one next action. |
| verified | No | What was checked. `pair`: the metric is on the entity's own list. `coverage`: a list was drilled. `unlinked`: the list was checked, the metric is absent. `resolution`: names resolved only. |
| next_call | Yes | A follow-up search in canonical names. Null when no target is unambiguous. |
| candidates | Yes | The other nodes `q` resolved to, best first. |
| entity_candidates | No | Runners-up. |
| metric_candidates | No | Runners-up. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, and the description adds behavior beyond that: a name here means the graph tracks it, not that a card exists, and a resolved pair returns a ready-to-run next_call. It also warns that tako_search matches the graph's names, not the user's phrasing, which is critical behavioral context for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well structured with a front-loaded purpose statement, a 'Best for' section, and short actionable paragraphs. Every sentence contributes either selection guidance or behavioral nuance; there is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete given the rich input and output schemas and annotations. It covers the tool's purpose, when to use it, how parameters affect behavior, what a result means, and how to handle empty follow-up searches. It also points to the relevant sibling tools without needing to describe return values in detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 100% schema coverage, the description adds meaningful parameter semantics: it explains how to use q for entities or metrics, when to add metric to resolve a pair, that label is a boost rather than a filter and never applies to metric, and that raising limit widens what the tool considers and can change which metric next_call names. This clearly goes beyond the schema's property descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Find what data Tako holds on an entity or a metric, and the canonical name it holds it under.' This clearly states the tool's function and distinguishes it from siblings like tako_search, which matches names, and tako_graph_related, which explores connections. It leaves no ambiguity about what the tool is for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool: for coverage questions and getting a metric's canonical name before a priced search. It also gives concrete alternative routing: use tako_search on canonical names and tako_graph_related with a node id, plus a clear instruction to report 'no card' instead of rephrasing when search returns empty. This is strong, actionable selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tako_contentsTako: Fetch ContentsARead-onlyIdempotentInspect
Fetch the full content behind a url: a web page's text, or an exportable Tako card's data rows. Batch up to 10 urls in one call — each one is billed and fails on its own.
Fetch only cards that tako_search marked exportable: true. Rows bill per 1,000 delivered, so set max_rows when the recent rows are enough. If a page is long, such as a filing or an annual report, set query to get back only the passages that match.
Best for: reading one source in full — a page you need to quote, or the rows behind a card you need to compute over.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | The urls to fetch: a Tako card url or a web result url. One call for 8 urls costs the same as 8 separate calls and saves 7 round trips. | |
| query | No | Web pages only: return the passages around matches of this phrase instead of the whole page. The full page is always scanned, so no match means the phrase isn't there. | |
| max_rows | No | Tako cards only: how many rows to return. Omit it for the whole card, up to 2,000 rows. Every row delivered is billed, so lower it when the recent rows are enough. | |
| max_chars | No | Web pages only: character cap on the extracted text. Inline fetches default to 100,000 per url, less across a batch. Raise it for a long document; `truncated` reports a cut. |
Output Schema
| Name | Required | Description |
|---|---|---|
| usage | Yes | What this request cost. |
| results | Yes | One per requested url, in order. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even though annotations already declare readOnly, idempotent, and non-destructive behavior, the description adds substantial non-obvious context: batching up to 10 with independent billing/failure, row-based billing, full-page scanning for query, and the `truncated` cut signal. This greatly exceeds what the annotations alone convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight paragraphs: what it does, cost/scope caveats, and best-fit use cases. Every sentence carries information, and the most important capability is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers operation, batching limits, billing behavior, exportable precondition, per-type parameter guidance, truncation reporting, and use-case fit. Combined with the detailed input schema and output schema, nothing essential is missing for an agent to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds extra selection guidance beyond the schema: use `query` for long documents, lower `max_rows` when recent rows suffice, and only pass card URLs that tako_search marked exportable. This pushes it above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-resource pair ('Fetch the full content behind a url') and precisely delimits two object types: web page text and Tako card data rows. This clearly separates tako_contents from its siblings like tako_search and tako_available_data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when the tool is best ('reading one source in full') and states the exportable-card precondition from tako_search. It does not explicitly spell out when not to use it or name alternatives, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tako_searchTako: SearchARead-onlyIdempotentInspect
Search Tako's data graph and the live web in one call: many results at once, as structured cards plus web results, with the top card rendered inline as a chart.
It finds data; tako_contents fetches it. Each card carries a headline value, node ids, and a url — pass the url to tako_contents for rows (exportable: true cards) or a web result's full page text. When exportable is false the rows are locked — read the headline value from the card's description.
Best for: breadth — fan out several narrow queries in parallel. Each query resolves one metric — for one entity, or a comparison set ("Apple revenue", "Nvidia vs AMD gross margin"); several metrics or topics in one query retrieve poorly. To learn what Tako covers, or a metric's canonical name, run tako_available_data first, then search on the canonical name it returns.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Natural-language search query (e.g. "US GDP growth", "Intel vs Nvidia revenue"). Double-quote a multi-word name to keep it one entity ("tesla motors" club revenue); an unpaired quote disables quoting. Website-traffic data is keyed by domain — query "openai.com monthly visits", not "OpenAI website visits". | |
| locale | No | BCP-47 locale tag for language and formatting. Omit it and the server uses en-US. Set it to localize for the user. | |
| sources | No | Which corpora to search; default is both. Narrow to ["data"] once `tako_available_data` confirms coverage; narrow to ["web"] only for news or page text — website traffic is in the data graph. | |
| country_code | No | ISO 3166-1 alpha-2 country code for localized results. Omit it and the server uses US. Set it to localize for the user. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cards | Yes | The data cards. Fetch an exportable card's rows with tako_contents on its url. |
| usage | Yes | Cost-plus usage for this request (null when not metered). |
| guidance | No | Zero-card responses only: what this response is evidence about, and the one next action. |
| web_results | Yes | Web results. |
| source_notes | No | What each source is and how it builds its data, keyed by source name. |
| metric_definitions | No | What each metric means (unit, basis, caveats), keyed by metric name, deduped across cards. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, openWorldHint, idempotentHint) already establish safety, and the description adds meaningful behavioral detail: exportable true/false row-locking behavior, direct instruction to read headline value from card.description when locked, and the top-card chart rendering. These are not visible in annotations or schema, and nothing contradicts the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action, then progresses to result interpretation, best-for usage, and setup steps. Every paragraph serves a distinct purpose with no filler or redundancy, and the length is justified by the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists and annotations cover the safety profile, the description covers the remaining needed context: how to interpret cards, when rows are locked, and how to chain with `tako_contents` and `tako_available_data`. No critical guidance gap remains for selecting and invoking the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description adds substantial guidance beyond the schema: it explains query strategy ('Each query resolves one metric'), recommends using canonical names from `tako_available_data`, and describes when to narrow sources (web only for news/page text, website traffic is in data graph). This meaningfully improves correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('Search Tako's data graph and the live web') and describes the result shape (structured cards plus web results, top card rendered as chart). It explicitly differentiates from siblings by noting 'It finds data; `tako_contents` fetches it,' so an agent can distinguish it without opening other tool definitions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance: 'Best for: breadth — fan out several narrow queries in parallel' and warns against combining several metrics in one query. It also routes to `tako_available_data` for canonical names and to `tako_contents` for fetching, naming alternatives and conditions clearly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
5 tool updates
- Removed
tako_answer - Changed
tako_available_data42 fields changed- changed
Input schema / properties / label / descriptionPrevious value: -"NER label to prefer for `q` (boost, not a filter). Supply when you can categorize the term (company→ORG, place→GPE, person→PERSON, ...). Describes the ENTITY only — it is not applied to `metric`."New value: +"NER label to prefer for `q` — a boost, not a filter. Set it when you can categorize the term: company → ORG, place → GPE, person → PERSON. It never applies to `metric`." - added
Input schema / properties / limitAdded value: +{ + "description": "How many candidates to resolve for each of `q` and `metric`. Raising it widens what the tool considers, not just what it shows: a deeper metric can become the one `next_call` names.", + "maximum": 20, + "minimum": 1, + "type": "integer" +} - changed
Input schema / properties / metric / descriptionPrevious value: -"The measure you want, when you already know it — e.g. \"gross margin\", \"passenger cruise days\", \"capex\". Supplying it is the FAST path: the tool resolves the entity+metric pair directly and hands back a runnable next_call, instead of listing every metric the entity has. Omit it only to browse what exists."New value: +"The measure, when you already know it — \"gross margin\", \"capex\". Supplying it resolves the entity+metric pair directly; omit it to browse everything the entity has." - changed
Input schema / properties / q / descriptionPrevious value: -"The NAME of the entity (or metric) to look up, min 2 chars — e.g. \"Carnival\", \"United States\", \"Nvidia\". Put the measure in `metric`, not here."New value: +"The entity or metric to look up by name — \"Carnival\", \"United States\", \"Nvidia\". Put the measure in `metric`, not here." - changed
Input schema / properties / types / descriptionPrevious value: -"Narrow resolution to a \"thing\" (\"entity\") or a \"measure\" (\"metric\"). Omit to search both."New value: +"Narrow resolution to one kind, an entity or a metric. Omit to resolve both." - added
Output schema / properties / candidatesAdded value: +{ + "description": "The other nodes `q` resolved to, best first.", + "items": { + "additionalProperties": {}, + "properties": { + "coverage": { + "additionalProperties": {}, + "properties": { + "total": { + "type": "number" + }, + "total_capped": { + "description": "`total` is a floor.", + "type": "boolean" + } + }, + "required": [ + "total", + "total_capped" + ], + "type": "object" + }, + "id": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "name": { + "description": "Canonical graph name — search on this.", + "type": "string" + }, + "type": { + "description": "entity or metric; also what `coverage` counts.", + "type": "string" + } + }, + "required": [ + "id", + "name", + "type" + ], + "type": "object" + }, + "type": "array" +} - changed
Output schema / properties / entity / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "name": { - "type": "string" - }, - "node_id": { - "type": "string" - }, - "type": { - "type": "string" - } - }, - "required": [ - "node_id", - "name", - "type" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "id", + "name" + ], + "type": "object" + }, + { + "type": "null" + } +] - added
Output schema / properties / entity / descriptionAdded value: +"Lookup path: the resolved entity." - removed
Output schema / properties / entity_alternatesRemoved value: -{ - "items": { - "additionalProperties": false, - "properties": { - "name": { - "type": "string" - }, - "node_id": { - "type": "string" - }, - "type": { - "type": "string" - } - }, - "required": [ - "node_id", - "name", - "type" - ], - "type": "object" - }, - "type": "array" -} - added
Output schema / properties / entity_candidatesAdded value: +{ + "description": "Runners-up.", + "items": { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "id", + "name" + ], + "type": "object" + }, + "type": "array" +} - changed
Output schema / properties / found / descriptionPrevious value: -"The OUTCOME. Discovery path (no `metric`): at least one match has live data coverage, not mere node resolution. Lookup path (`metric` supplied): both halves resolved and the pinned metric passed the name test — read `verified` for what was actually CHECKED. Never means a chart exists; only running `next_call` establishes that."New value: +"Whether Tako holds matching data; `verified` says on what evidence." - added
Output schema / properties / guidanceAdded value: +{ + "description": "The verdict, and the one next action.", + "type": "string" +} - changed
Output schema / properties / matches / descriptionPrevious value: -"The resolved matches and their coverage, each entry carrying the node id to pin. To fetch a specific metric precisely: call tako_search or tako_answer with node_ids=[<the metric's node_id>] AND strict:true — an entity-only pin without strict does not steer retrieval."New value: +"The nodes whose coverage was drilled, best first." - added
Output schema / properties / matches / items / properties / aliasesAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / matches / items / properties / coverage / properties / items / descriptionAdded value: +"Headline-first." - added
Output schema / properties / matches / items / properties / coverage / properties / items / items / properties / idAdded value: +{ + "description": "Graph node id.", + "type": "string" +} - added
Output schema / properties / matches / items / properties / coverage / properties / items / items / properties / name / descriptionAdded value: +"Canonical graph name." - removed
Output schema / properties / matches / items / properties / coverage / properties / items / items / properties / node_idRemoved value: -{ - "description": "Pin this in a follow-up's node_ids WITH strict:true.", - "type": "string" -} - changed
Output schema / properties / matches / items / properties / coverage / properties / items / items / requiredPrevious value: -[ - "name", - "node_id" -]New value: +[ + "name", + "id" +] - removed
Output schema / properties / matches / items / properties / coverage / properties / items_truncatedRemoved value: -{ - "description": "More coverage entries exist than are listed here — the full NAME list is in the text channel.", - "type": "boolean" -} - removed
Output schema / properties / matches / items / properties / coverage / properties / kindRemoved value: -{ - "type": "string" -} - added
Output schema / properties / matches / items / properties / coverage / properties / total / descriptionAdded value: +"Entries in all, not entries listed." - added
Output schema / properties / matches / items / properties / coverage / properties / total_cappedAdded value: +{ + "description": "`total` is a floor.", + "type": "boolean" +} - added
Output schema / properties / matches / items / properties / coverage / properties / truncated / descriptionAdded value: +"More entries exist than are listed." - changed
Output schema / properties / matches / items / properties / coverage / requiredPrevious value: -[ - "kind", - "total", - "truncated", - "items" -]New value: +[ + "total", + "total_capped" +] - added
Output schema / properties / matches / items / properties / filterAdded value: +{ + "description": "The `metric` phrase that narrowed this list. When set, `total` counts only matching entries.", + "type": "string" +} - added
Output schema / properties / matches / items / properties / idAdded value: +{ + "type": "string" +} - added
Output schema / properties / matches / items / properties / kindAdded value: +{ + "type": "string" +} - added
Output schema / properties / matches / items / properties / name / descriptionAdded value: +"Canonical graph name — search on this." - removed
Output schema / properties / matches / items / properties / node_idRemoved value: -{ - "type": "string" -} - added
Output schema / properties / matches / items / properties / type / descriptionAdded value: +"entity or metric; also what `coverage` counts." - changed
Output schema / properties / matches / items / requiredPrevious value: -[ - "node_id", - "name", - "type", - "coverage" -]New value: +[ + "id", + "name", + "type", + "coverage" +] - changed
Output schema / properties / metric / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "name": { - "type": "string" - }, - "node_id": { - "type": "string" - }, - "type": { - "type": "string" - } - }, - "required": [ - "node_id", - "name", - "type" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "id", + "name" + ], + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / metric / descriptionPrevious value: -"The metric whose node_id belongs in the follow-up's node_ids."New value: +"Lookup path: the resolved metric." - removed
Output schema / properties / metric_alternatesRemoved value: -{ - "description": "Runners-up. The top metric is right ~80% of the time and the top three ~93-95%, so check these before accepting the primary.", - "items": { - "additionalProperties": false, - "properties": { - "name": { - "type": "string" - }, - "node_id": { - "type": "string" - }, - "type": { - "type": "string" - } - }, - "required": [ - "node_id", - "name", - "type" - ], - "type": "object" - }, - "type": "array" -} - added
Output schema / properties / metric_candidatesAdded value: +{ + "description": "Runners-up.", + "items": { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "id", + "name" + ], + "type": "object" + }, + "type": "array" +} - removed
Output schema / properties / metric_queryRemoved value: -{ - "type": "string" -} - changed
Output schema / properties / next_call / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "node_ids": { - "items": { - "type": "string" - }, - "type": "array" - }, - "query": { - "type": "string" - }, - "strict": { - "type": "boolean" - }, - "tool": { - "enum": [ - "tako_search", - "tako_answer" - ], - "type": "string" - } - }, - "required": [ - "tool", - "query", - "node_ids", - "strict" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "query": { + "type": "string" + }, + "tool": { + "type": "string" + } + }, + "required": [ + "tool", + "query" + ], + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / next_call / descriptionPrevious value: -"Ready-to-run follow-up: call this tool with exactly this query, node_ids and strict. node_ids holds the METRIC node only — strict is an OR over pinned nodes, so adding the entity id widens the filter back out. Null when no metric resolved."New value: +"A follow-up search in canonical names. Null when no target is unambiguous." - removed
Output schema / properties / queryRemoved value: -{ - "type": "string" -} - changed
Output schema / properties / verified / descriptionPrevious value: -"WHAT WAS CHECKED, as distinct from `found`, which is the outcome. `coverage`: a coverage list was drilled. `pair`: the metric is on the entity's own metric list — the strongest free evidence there is. `unlinked`: the entity's list was checked and holds nothing matching, so a pinned call will probably return 0 cards; the emitted next_call therefore drops the pin. `resolution`: no pair evidence (check skipped or failed) — treat exactly as before."New value: +"What was checked. `pair`: the metric is on the entity's own list. `coverage`: a list was drilled. `unlinked`: the list was checked, the metric is absent. `resolution`: names resolved only." - changed
Output schema / requiredPrevious value: -[ - "found", - "query", - "matches", - "next_call" -]New value: +[ + "found", + "matches", + "candidates", + "next_call" +]
- Added
tako_contents - Added
tako_graph_related - Changed
tako_search43 fields changed- removed
Input schema / properties / countRemoved value: -{ - "default": 10, - "description": "Maximum number of results to return per source (1-20).", - "maximum": 20, - "minimum": 1, - "type": "integer" -} - removed
Input schema / properties / country_code / defaultRemoved value: -"US" - changed
Input schema / properties / country_code / descriptionPrevious value: -"ISO country code for localized results."New value: +"ISO 3166-1 alpha-2 country code for localized results. Omit it and the server uses US. Set it to localize for the user." - removed
Input schema / properties / effortRemoved value: -{ - "description": "Search effort: \"fast\" (default) or \"instant\" (fastest, serves cached embeds as-is). Omit for fast.", - "enum": [ - "fast", - "instant" - ], - "type": "string" -} - removed
Input schema / properties / include_contentsRemoved value: -{ - "default": true, - "description": "Inline each Tako card's data preview (default true; preview_rows sets how many rows). Set false — pointers-only, no rows — for large parallel fan-outs or when coverage is unconfirmed (no prior tako_available_data check). DATA source only; web page text is never auto-inlined (billed per page — use tako_contents). Full export is a separate tako_contents call, only for cards marked `exportable: true`.", - "type": "boolean" -} - removed
Input schema / properties / locale / defaultRemoved value: -"en-US" - changed
Input schema / properties / locale / descriptionPrevious value: -"Locale for results."New value: +"BCP-47 locale tag for language and formatting. Omit it and the server uses en-US. Set it to localize for the user." - removed
Input schema / properties / node_idsRemoved value: -{ - "description": "Graph node ids (from tako_available_data, or a card's nodes) to PIN into the proprietary data source. Pinned nodes get a strong retrieval boost. Max 20. Applies only to the 'data' source.", - "items": { - "type": "string" - }, - "maxItems": 20, - "type": "array" -} - removed
Input schema / properties / preview_rowsRemoved value: -{ - "default": 20, - "description": "Cap on the rows of each card's data inlined when include_contents is true — always the N MOST-RECENT rows (default 20, the free inline allowance the server ships; values above your account's allowance have no effect). Lower it to trim context on broad fan-outs. For MORE than 20 rows, call tako_contents on the card's url (max_rows up to 2,000 — first 20 free, priced beyond). Ignored when include_contents is false.", - "maximum": 250, - "minimum": 1, - "type": "integer" -} - changed
Input schema / properties / query / descriptionPrevious value: -"Natural-language search query (e.g. \"US GDP growth\", \"Intel vs Nvidia revenue\"). Website-traffic data is keyed by domain — query \"openai.com monthly visits\", not \"OpenAI website visits\"."New value: +"Natural-language search query (e.g. \"US GDP growth\", \"Intel vs Nvidia revenue\"). Double-quote a multi-word name to keep it one entity (\"tesla motors\" club revenue); an unpaired quote disables quoting. Website-traffic data is keyed by domain — query \"openai.com monthly visits\", not \"OpenAI website visits\"." - changed
Input schema / properties / sources / descriptionPrevious value: -"Source(s) to search. Default [\"data\",\"web\"] (both) — keep BOTH enabled unless you have a confirmed reason to narrow. Narrow to [\"data\"] only once `tako_available_data` has confirmed the proprietary data exists (web is the fallback when it does not). Narrow to [\"web\"] only for content a data graph cannot hold (news articles, page text, qualitative claims) — never because a metric merely feels web-native: website traffic, app usage, and similar digital metrics ARE in the proprietary data graph. (\"tako\" is a legacy synonym for \"data\".)"New value: +"Which corpora to search; default is both. Narrow to [\"data\"] once `tako_available_data` confirms coverage; narrow to [\"web\"] only for news or page text — website traffic is in the data graph." - changed
Input schema / properties / sources / items / enumPrevious value: -[ - "data", - "web", - "tako" -]New value: +[ + "data", + "web" +] - removed
Input schema / properties / strictRemoved value: -{ - "default": false, - "description": "Hard filter. When true, return ONLY cards matching at least one node in node_ids (which must then be non-empty — empty node_ids + strict is a 400). When false (default), pinned nodes are preferred/boosted but organic results still return.", - "type": "boolean" -} - changed
Output schema / properties / cards / descriptionPrevious value: -"The data cards — the payload. Each carries its title, description (headline value), facts, and inline rows under `content`."New value: +"The data cards. Fetch an exportable card's rows with tako_contents on its url." - added
Output schema / properties / cards / items / properties / coverage_endAdded value: +{ + "description": "Where the DATA ends — use this, not `last_updated`, to judge whether a figure is current. Reduced ISO precision at the series' own granularity (\"2026\", \"2026-06\", \"2026-06-30\"), and it can be in the future on a card with projections.", + "type": "string" +} - added
Output schema / properties / cards / items / properties / descriptionAdded value: +{ + "description": "Headline value and range — often the answer itself.", + "type": "string" +} - added
Output schema / properties / cards / items / properties / exportableAdded value: +{ + "description": "true → tako_contents on `url` returns the rows; false → rows are locked, read the headline from `description`.", + "type": "boolean" +} - added
Output schema / properties / cards / items / properties / last_updatedAdded value: +{ + "description": "Date Tako last refreshed this card — NOT where its data ends.", + "type": "string" +} - added
Output schema / properties / cards / items / properties / nodesAdded value: +{ + "description": "Graph handles — pass ids to tako_graph_related.", + "items": { + "additionalProperties": {}, + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "type" + ], + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / cards / items / properties / relevanceAdded value: +{ + "description": "Either a 1.0-5.0 score as a string (\"4.5\", 5.0 = exact match) on entitled accounts, or a coarse word (\"High\"). Higher is more relevant in both forms.", + "type": "string" +} - added
Output schema / properties / cards / items / properties / sourceAdded value: +{ + "type": "string" +} - added
Output schema / properties / cards / items / properties / titleAdded value: +{ + "type": "string" +} - added
Output schema / properties / cards / items / properties / total_rowsAdded value: +{ + "description": "Rows behind `url` (exportable cards only).", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +} - added
Output schema / properties / cards / items / properties / urlAdded value: +{ + "description": "The card page — the tako_contents handle.", + "type": "string" +} - added
Output schema / properties / cards / items / requiredAdded value: +[ + "exportable" +] - removed
Output schema / properties / dark_modeRemoved value: -{ - "type": "boolean" -} - removed
Output schema / properties / embed_urlRemoved value: -{ - "pattern": "^https?:\\/\\/", - "type": "string" -} - changed
Output schema / properties / guidance / descriptionPrevious value: -"Present only on a zero-card response: the recovery protocol."New value: +"Zero-card responses only: what this response is evidence about, and the one next action." - removed
Output schema / properties / heightRemoved value: -{ - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" -} - removed
Output schema / properties / image_urlRemoved value: -{ - "pattern": "^https?:\\/\\/", - "type": "string" -} - added
Output schema / properties / metric_definitionsAdded value: +{ + "additionalProperties": { + "type": "string" + }, + "description": "What each metric means (unit, basis, caveats), keyed by metric name, deduped across cards.", + "propertyNames": { + "type": "string" + }, + "type": "object" +} - removed
Output schema / properties / pub_idRemoved value: -{ - "type": "string" -} - added
Output schema / properties / source_notesAdded value: +{ + "additionalProperties": { + "type": "string" + }, + "description": "What each source is and how it builds its data, keyed by source name.", + "propertyNames": { + "type": "string" + }, + "type": "object" +} - changed
Output schema / properties / web_results / descriptionPrevious value: -"Web results, each with a `snippet`. A snippet is the passages selected against your query, not the page's opening text, so it usually carries the answer-bearing sentence. A ' … ' inside one marks a discontinuity — either passages joined from different parts of the page, or the page's own ellipsis — so read it as a whole and never quote across it as one continuous sentence. `null` means that page had no relevant passage — its url is still fetchable via tako_contents."New value: +"Web results." - added
Output schema / properties / web_results / items / properties / contentAdded value: +{ + "additionalProperties": {}, + "description": "Page text — only when the request asked for it.", + "properties": {}, + "type": "object" +} - added
Output schema / properties / web_results / items / properties / publishedAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / web_results / items / properties / snippetAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Passages selected against the query. A ' … ' marks a discontinuity — joined passages or the page's own ellipsis — so never quote across it as one sentence. null → no relevant passage, url still fetchable." +} - added
Output schema / properties / web_results / items / properties / sourceAdded value: +{ + "type": "string" +} - added
Output schema / properties / web_results / items / properties / titleAdded value: +{ + "type": "string" +} - added
Output schema / properties / web_results / items / properties / urlAdded value: +{ + "type": "string" +} - added
Output schema / properties / web_results / items / requiredAdded value: +[ + "url" +] - removed
Output schema / properties / widthRemoved value: -{ - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" -} - changed
Output schema / requiredPrevious value: -[ - "usage" -]New value: +[ + "cards", + "web_results", + "usage" +]
1 tool update
- Changed
tako_available_data2 fields changed- changed
Output schema / properties / found / descriptionPrevious value: -"True when at least one match has live data coverage — not mere node resolution."New value: +"The OUTCOME. Discovery path (no `metric`): at least one match has live data coverage, not mere node resolution. Lookup path (`metric` supplied): both halves resolved and the pinned metric passed the name test — read `verified` for what was actually CHECKED. Never means a chart exists; only running `next_call` establishes that." - added
Output schema / properties / verifiedAdded value: +{ + "description": "WHAT WAS CHECKED, as distinct from `found`, which is the outcome. `coverage`: a coverage list was drilled. `pair`: the metric is on the entity's own metric list — the strongest free evidence there is. `unlinked`: the entity's list was checked and holds nothing matching, so a pinned call will probably return 0 cards; the emitted next_call therefore drops the pin. `resolution`: no pair evidence (check skipped or failed) — treat exactly as before.", + "enum": [ + "coverage", + "pair", + "unlinked", + "resolution" + ], + "type": "string" +}
2 tool updates
- Changed
tako_answer2 fields changed- removed
Output schema / properties / request_idRemoved value: -{ - "type": "string" -} - changed
Output schema / requiredPrevious value: -[ - "request_id", - "usage" -]New value: +[ + "usage" +]
- Changed
tako_search2 fields changed- removed
Output schema / properties / request_idRemoved value: -{ - "type": "string" -} - changed
Output schema / requiredPrevious value: -[ - "request_id", - "usage" -]New value: +[ + "usage" +]
2 tool updates
- Changed
tako_answer7 fields changed- added
Output schema / properties / dark_modeAdded value: +{ + "type": "boolean" +} - added
Output schema / properties / embed_urlAdded value: +{ + "pattern": "^https?:\\/\\/", + "type": "string" +} - added
Output schema / properties / heightAdded value: +{ + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" +} - added
Output schema / properties / image_urlAdded value: +{ + "pattern": "^https?:\\/\\/", + "type": "string" +} - added
Output schema / properties / pub_idAdded value: +{ + "type": "string" +} - changed
Output schema / properties / web_results / descriptionPrevious value: -"Web results cited by the answer."New value: +"Web results cited by the answer, each with a `snippet` of the passages selected against the question rather than the page's opening text. A ' … ' inside one marks a discontinuity — joined passages or the page's own ellipsis — so never quote across it as one continuous sentence. `null` means no relevant passage was found on that page." - added
Output schema / properties / widthAdded value: +{ + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" +}
- Changed
tako_search1 field changed- changed
Output schema / properties / web_results / descriptionPrevious value: -"Web results with their snippets."New value: +"Web results, each with a `snippet`. A snippet is the passages selected against your query, not the page's opening text, so it usually carries the answer-bearing sentence. A ' … ' inside one marks a discontinuity — either passages joined from different parts of the page, or the page's own ellipsis — so read it as a whole and never quote across it as one continuous sentence. `null` means that page had no relevant passage — its url is still fetchable via tako_contents."
3 tool updates
- Changed
tako_answer1 field changed- changed
Output schema / properties / usage / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "compute": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "cost_usd": { - "type": "number" - } - }, - "required": [ - "cost_usd" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "data": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "cost_usd": { - "type": "number" - }, - "datasets": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - } - }, - "required": [ - "cost_usd", - "datasets" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "total_cost_usd": { - "type": "number" - } - }, - "required": [ - "total_cost_usd" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "total_cost_usd": { + "type": "number" + } + }, + "required": [ + "total_cost_usd" + ], + "type": "object" + }, + { + "type": "null" + } +]
- Changed
tako_available_data12 fields changed- changed
Input schema / properties / label / descriptionPrevious value: -"NER label to prefer (boost, not a filter). Supply when you can categorize the term (company→ORG, place→GPE, person→PERSON, ...)."New value: +"NER label to prefer for `q` (boost, not a filter). Supply when you can categorize the term (company→ORG, place→GPE, person→PERSON, ...). Describes the ENTITY only — it is not applied to `metric`." - added
Input schema / properties / metricAdded value: +{ + "description": "The measure you want, when you already know it — e.g. \"gross margin\", \"passenger cruise days\", \"capex\". Supplying it is the FAST path: the tool resolves the entity+metric pair directly and hands back a runnable next_call, instead of listing every metric the entity has. Omit it only to browse what exists.", + "minLength": 2, + "type": "string" +} - changed
Input schema / properties / q / descriptionPrevious value: -"The NAME of one entity or one metric to look up (min 2 chars). Not a full question: for \"Carnival passenger cruise days\" pass \"Carnival\" and read the metric off the returned coverage.names."New value: +"The NAME of the entity (or metric) to look up, min 2 chars — e.g. \"Carnival\", \"United States\", \"Nvidia\". Put the measure in `metric`, not here." - added
Output schema / properties / entityAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "name": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "required": [ + "node_id", + "name", + "type" + ], + "type": "object" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / entity_alternatesAdded value: +{ + "items": { + "additionalProperties": false, + "properties": { + "name": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "required": [ + "node_id", + "name", + "type" + ], + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / matchesAdded value: +{ + "description": "The resolved matches and their coverage, each entry carrying the node id to pin. To fetch a specific metric precisely: call tako_search or tako_answer with node_ids=[<the metric's node_id>] AND strict:true — an entity-only pin without strict does not steer retrieval.", + "items": { + "additionalProperties": {}, + "properties": { + "coverage": { + "additionalProperties": {}, + "properties": { + "items": { + "items": { + "additionalProperties": false, + "properties": { + "name": { + "type": "string" + }, + "node_id": { + "description": "Pin this in a follow-up's node_ids WITH strict:true.", + "type": "string" + } + }, + "required": [ + "name", + "node_id" + ], + "type": "object" + }, + "type": "array" + }, + "items_truncated": { + "description": "More coverage entries exist than are listed here — the full NAME list is in the text channel.", + "type": "boolean" + }, + "kind": { + "type": "string" + }, + "total": { + "type": "number" + }, + "truncated": { + "type": "boolean" + } + }, + "required": [ + "kind", + "total", + "truncated", + "items" + ], + "type": "object" + }, + "name": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "type": { + "type": "string" + }, + "unavailable": { + "type": "boolean" + } + }, + "required": [ + "node_id", + "name", + "type", + "coverage" + ], + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / metricAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "name": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "required": [ + "node_id", + "name", + "type" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "description": "The metric whose node_id belongs in the follow-up's node_ids." +} - added
Output schema / properties / metric_alternatesAdded value: +{ + "description": "Runners-up. The top metric is right ~80% of the time and the top three ~93-95%, so check these before accepting the primary.", + "items": { + "additionalProperties": false, + "properties": { + "name": { + "type": "string" + }, + "node_id": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "required": [ + "node_id", + "name", + "type" + ], + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / metric_queryAdded value: +{ + "type": "string" +} - changed
Output schema / properties / next_call / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "node_ids": { - "items": { - "type": "string" - }, - "type": "array" - }, - "query": { - "type": "string" - }, - "tool": { - "const": "tako_search", - "type": "string" - } - }, - "required": [ - "tool", - "query", - "node_ids" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "node_ids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "query": { + "type": "string" + }, + "strict": { + "type": "boolean" + }, + "tool": { + "enum": [ + "tako_search", + "tako_answer" + ], + "type": "string" + } + }, + "required": [ + "tool", + "query", + "node_ids", + "strict" + ], + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / next_call / descriptionPrevious value: -"Ready-to-run follow-up when coverage was found: call tako_search with exactly this query and node_ids pinned. Null when no match has coverage."New value: +"Ready-to-run follow-up: call this tool with exactly this query, node_ids and strict. node_ids holds the METRIC node only — strict is an OR over pinned nodes, so adding the entity id widens the filter back out. Null when no metric resolved." - changed
Output schema / requiredPrevious value: -[ - "found", - "query", - "next_call" -]New value: +[ + "found", + "query", + "matches", + "next_call" +]
- Changed
tako_search1 field changed- changed
Output schema / properties / usage / anyOfPrevious value: -[ - { - "additionalProperties": {}, - "properties": { - "compute": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "cost_usd": { - "type": "number" - } - }, - "required": [ - "cost_usd" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "data": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "cost_usd": { - "type": "number" - }, - "datasets": { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - } - }, - "required": [ - "cost_usd", - "datasets" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "total_cost_usd": { - "type": "number" - } - }, - "required": [ - "total_cost_usd" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": {}, + "properties": { + "total_cost_usd": { + "type": "number" + } + }, + "required": [ + "total_cost_usd" + ], + "type": "object" + }, + { + "type": "null" + } +]
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Live web access for agents: scrape, SERP search, crawl/map, 74 collectors, datasets, proxies.
Give your agent live data from Twitter, Reddit, the web and GitHub. No API keys, no scraping stack.
Direct access to 40+ scraping and search tools. Extract structured data from Google (Search, Maps, Trends), Amazon, Airbnb, Social Media, and any web page directly into your AI agent.
Web data tools for AI agents: pages as markdown, search, maps, commerce, jobs, AI answers.
Related MCP Servers
- AlicenseAqualityCmaintenanceQuery 2,500+ verified public datasets (World Bank, IMF, Eurostat, OECD, WHO) from your AI agent. Search, analyze, and visualize data, and publish charts — with verified SEC + official source data.284101MIT
- AlicenseAqualityDmaintenanceEnables AI agents to access SEC EDGAR filings, US Treasury rates, BLS labor statistics, and economic indicators without API keys.632MIT

HasData MCP Serverofficial
AlicenseAqualityAmaintenanceDirect access to 40+ scraping and search tools. Extract structured data from Google (Search, Maps, Trends), Amazon, Airbnb, Social Media, and any web page directly into your AI agent.8425MIT- AlicenseAqualityAmaintenanceProvides AI agents live web access through scraping, multi-engine search, site mapping, crawling, SEO audits, and 31 data collectors via natural language tool calls.9699MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Each tool has a distinct role: coverage/canonical-name lookup, graph and web search, content fetching, and graph relation expansion. The descriptions cross-reference one another and define a clear workflow, so an agent should not confuse them.
All names share the tako_ prefix and snake_case, but the suffixes do not follow a single convention: available_data and contents are noun phrases, graph_related is a noun-adjective compound, and search is a bare verb. The set is readable but grammatically mixed.
Four tools is a compact and well-scoped set for a data-discovery server: discovery, search, retrieval, and graph traversal each have one dedicated tool. No tool feels redundant or out of place.
The toolkit covers the likely user journey end-to-end: resolve canonical coverage, search for cards and web results, fetch full content or rows, and expand through graph relations. There is no obvious dead end or missing operation for the stated domain.