Tako
What this MCP does
Searches the web and structured datasets, explores entity relationships, and retrieves source contents and data rows.
Tools
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['q'], 'properties': {'q': {'type': 'string', 'minLength': 2, 'description': 'The entity or metric to look up by name — "Carnival", "United States", "Nvidia". Put the measure in `metric`, not here.'}, 'label': {'enum': ['PERSON', 'ORG', 'GPE', 'LOC', 'PRODUCT', 'EVENT', 'LANGUAGE', 'MONEY', 'METRIC', 'STOCK_TICKER', 'WEBSITE'], 'type': 'string', 'description': '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': {'type': 'integer', 'maximum': 20, 'minimum': 1, '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.'}, 'types': {'enum': ['entity', 'metric'], 'type': 'string', 'description': 'Narrow resolution to one kind, an entity or a metric. Omit to resolve both.'}, 'metric': {'type': 'string', 'minLength': 2, 'description': '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
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['found', 'matches', 'candidates', 'next_call'], 'properties': {'found': {'type': 'boolean', 'description': 'Whether Tako holds matching data; `verified` says on what evidence.'}, 'entity': {'anyOf': [{'type': 'object', 'required': ['id', 'name'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'Lookup path: the resolved entity.'}, 'metric': {'anyOf': [{'type': 'object', 'required': ['id', 'name'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'Lookup path: the resolved metric.'}, 'matches': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'type', 'coverage'], 'properties': {'id': {'type': 'string'}, 'kind': {'type': 'string'}, 'name': {'type': 'string', 'description': 'Canonical graph name — search on this.'}, 'type': {'type': 'string', 'description': 'entity or metric; also what `coverage` counts.'}, 'filter': {'type': 'string', 'description': 'The `metric` phrase that narrowed this list. When set, `total` counts only matching entries.'}, 'aliases': {'type': 'array', 'items': {'type': 'string'}}, 'coverage': {'type': 'object', 'required': ['total', 'total_capped'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'id'], 'properties': {'id': {'type': 'string', 'description': 'Graph node id.'}, 'name': {'type': 'string', 'description': 'Canonical graph name.'}}, 'additionalProperties': False}, 'description': 'Headline-first.'}, 'total': {'type': 'number', 'description': 'Entries in all, not entries listed.'}, 'truncated': {'type': 'boolean', 'description': 'More entries exist than are listed.'}, 'total_capped': {'type': 'boolean', 'description': '`total` is a floor.'}}, 'additionalProperties': {}}, 'unavailable': {'type': 'boolean'}}, 'additionalProperties': {}}, 'description': 'The nodes whose coverage was drilled, best first.'}, 'guidance': {'type': 'string', 'description': 'The verdict, and the one next action.'}, 'verified': {'enum': ['coverage', 'pair', 'unlinked', 'resolution'], 'type': 'string', 'description': "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': {'anyOf': [{'type': 'object', 'required': ['tool', 'query'], 'properties': {'tool': {'type': 'string'}, 'query': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'A follow-up search in canonical names. Null when no target is unambiguous.'}, 'candidates': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'type'], 'properties': {'id': {'type': 'string'}, 'kind': {'type': 'string'}, 'name': {'type': 'string', 'description': 'Canonical graph name — search on this.'}, 'type': {'type': 'string', 'description': 'entity or metric; also what `coverage` counts.'}, 'coverage': {'type': 'object', 'required': ['total', 'total_capped'], 'properties': {'total': {'type': 'number'}, 'total_capped': {'type': 'boolean', 'description': '`total` is a floor.'}}, 'additionalProperties': {}}}, 'additionalProperties': {}}, 'description': 'The other nodes `q` resolved to, best first.'}, 'entity_candidates': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}}, 'additionalProperties': False}, 'description': 'Runners-up.'}, 'metric_candidates': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}}, 'additionalProperties': False}, 'description': 'Runners-up.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['urls'], 'properties': {'urls': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'maxItems': 10, 'minItems': 1, 'description': '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': {'type': 'string', 'minLength': 1, 'description': "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': {'type': 'integer', 'maximum': 2000, 'minimum': 1, 'description': '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': {'type': 'integer', 'maximum': 1000000, 'minimum': 1, 'description': '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
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['results', 'usage'], 'properties': {'usage': {'type': 'object', 'required': ['total_cost_usd'], 'properties': {'total_cost_usd': {'type': 'number'}}, 'description': 'What this request cost.', 'additionalProperties': {}}, 'results': {'type': 'array', 'items': {'type': 'object', 'required': ['url', 'cost'], 'properties': {'url': {'type': 'string', 'description': 'The url this entry is for.'}, 'cost': {'type': 'number', 'description': 'USD billed for this url.'}, 'note': {'type': 'string', 'description': 'What the `query` match found.'}, 'rows': {'type': 'object', 'required': ['columns', 'rows'], 'properties': {'rows': {'type': 'array', 'items': {'type': 'array', 'items': {}}, 'description': 'Positional cells; a missing cell is null.'}, 'columns': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Column names, in row order; the unit is in the name.'}, 'total_rows': {'type': 'number', 'description': 'Rows behind the card, before `max_rows`.'}}, 'description': "Tako cards only: the card's data.", 'additionalProperties': False}, 'text': {'type': 'string', 'description': 'Web pages only: the page text.'}, 'error': {'type': 'string', 'description': 'Why this url alone failed; the others are unaffected.'}, 'truncated': {'type': 'boolean', 'description': 'Part of this payload was cut.'}, 'source_url': {'type': 'string', 'description': 'Where a redirect landed.'}}, 'additionalProperties': {}}, 'description': 'One per requested url, in order.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['node_id'], 'properties': {'q': {'type': 'string', 'minLength': 1, 'description': 'Case-insensitive substring filter on names and aliases, one string per call: "revenue" matches `Total Revenue` and misses `Sales`. Call once per name variant.'}, 'label': {'enum': ['PERSON', 'ORG', 'GPE', 'LOC', 'PRODUCT', 'EVENT', 'LANGUAGE', 'MONEY', 'METRIC', 'STOCK_TICKER', 'WEBSITE'], 'type': 'string', 'description': 'NER label to prefer among the related nodes — a boost, not a filter.'}, 'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Page size for a drilled relation. Omit it and the server serves 50. Ignored on the map, where every group returns its first 3 names whatever you pass.'}, 'cursor': {'type': 'string', 'minLength': 1, 'description': 'Page handle from a previous drilled relation. Omit it for the first page.'}, 'node_id': {'type': 'string', 'minLength': 1, 'description': 'Public id of the node to explore, as returned by `tako_available_data` or on a `tako_search` card.'}, 'relation': {'type': 'string', 'minLength': 1, 'description': 'Relation key to page, taken from the map: metrics, entities, siblings, part_of, members, or a named edge like rel:competes_with. Omit for the map.'}, 'infer_label': {'type': 'boolean', 'description': 'Detect labels from `q`. Omit it and the server infers them whenever `q` is set.'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['node'], 'properties': {'node': {'type': 'object', 'required': ['id', 'type', 'name'], 'properties': {'id': {'type': 'string'}, 'kind': {'type': 'string'}, 'name': {'type': 'string', 'description': 'Canonical graph name — search on this.'}, 'type': {'type': 'string', 'description': 'entity or metric.'}, 'aliases': {'type': 'array', 'items': {'type': 'string'}}, 'description': {'type': 'string'}}, 'additionalProperties': {}}, 'relation': {'anyOf': [{'type': 'object', 'required': ['key', 'label', 'total', 'total_capped', 'items'], 'properties': {'key': {'type': 'string', 'description': 'Pass back as `relation` to page it.'}, 'items': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name'], 'properties': {'id': {'type': 'string'}, 'kind': {'type': 'string'}, 'name': {'type': 'string'}}, 'additionalProperties': {}}, 'description': 'This page of the group.'}, 'label': {'type': 'string'}, 'total': {'type': 'number'}, 'next_cursor': {'type': 'string', 'description': 'Pass back as `cursor`.'}, 'total_capped': {'type': 'boolean', 'description': '`total` is a floor.'}}, 'additionalProperties': {}}, {'type': 'null'}], 'description': 'The one group you drilled.'}, 'relations': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'label', 'total', 'total_capped', 'preview'], 'properties': {'key': {'type': 'string', 'description': 'Pass back as `relation` to page it.'}, 'label': {'type': 'string'}, 'total': {'type': 'number'}, 'preview': {'type': 'array', 'items': {'type': 'string'}, 'description': "The group's first 3 names."}, 'next_cursor': {'type': 'string', 'description': 'Pass back as `cursor`.'}, 'total_capped': {'type': 'boolean', 'description': '`total` is a floor.'}}, 'additionalProperties': {}}, 'description': 'Every group, previewed. The map.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query'], 'properties': {'query': {'type': 'string', 'minLength': 1, 'description': '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': {'type': 'string', 'description': 'BCP-47 locale tag for language and formatting. Omit it and the server uses en-US. Set it to localize for the user.'}, 'sources': {'type': 'array', 'items': {'enum': ['data', 'web'], 'type': 'string'}, 'default': ['data', 'web'], 'minItems': 1, 'description': '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': {'type': 'string', 'description': '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
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['cards', 'web_results', 'usage'], 'properties': {'cards': {'type': 'array', 'items': {'type': 'object', 'required': ['exportable'], 'properties': {'url': {'type': 'string', 'description': 'The card page — the tako_contents handle.'}, 'nodes': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'type'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'type': {'type': 'string'}}, 'additionalProperties': {}}, 'description': 'Graph handles — pass ids to tako_graph_related.'}, 'title': {'type': 'string'}, 'source': {'type': 'string'}, 'relevance': {'type': 'string', '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.'}, 'exportable': {'type': 'boolean', 'description': 'true → tako_contents on `url` returns the rows; false → rows are locked, read the headline from `description`.'}, 'total_rows': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Rows behind `url` (exportable cards only).'}, 'description': {'type': 'string', 'description': 'Headline value and range — often the answer itself.'}, 'coverage_end': {'type': 'string', '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.'}, 'last_updated': {'type': 'string', 'description': 'Date Tako last refreshed this card — NOT where its data ends.'}}, 'additionalProperties': {}}, 'description': "The data cards. Fetch an exportable card's rows with tako_contents on its url."}, 'usage': {'anyOf': [{'type': 'object', 'required': ['total_cost_usd'], 'properties': {'total_cost_usd': {'type': 'number'}}, 'additionalProperties': {}}, {'type': 'null'}], 'description': 'Cost-plus usage for this request (null when not metered).'}, 'guidance': {'type': 'string', 'description': 'Zero-card responses only: what this response is evidence about, and the one next action.'}, 'web_results': {'type': 'array', 'items': {'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string'}, 'title': {'type': 'string'}, 'source': {'type': 'string'}, 'content': {'type': 'object', 'properties': {}, 'description': 'Page text — only when the request asked for it.', 'additionalProperties': {}}, 'snippet': {'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."}, 'published': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': {}}, 'description': 'Web results.'}, 'source_notes': {'type': 'object', 'description': 'What each source is and how it builds its data, keyed by source name.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'string'}}, 'metric_definitions': {'type': 'object', 'description': 'What each metric means (unit, basis, caveats), keyed by metric name, deduped across cards.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'string'}}}, 'additionalProperties': False}
Recent tool changes
Similar MCP servers
LiveDataLink
Exposes public-data tools covering economics, labor, banking, transport, books, legal opinions, carriers, environmental data, and…
Stratalize Healthcare
Retired Stratalize server exposing benchmark, market intelligence, compliance, financial, healthcare, legal, real estate, and eco…
Stratalize Governance
Retired Stratalize server exposing benchmark, market intelligence, compliance, financial, healthcare, legal, real estate, and eco…
Stratalize Oracle
Retired Stratalize server exposing benchmark, market intelligence, compliance, financial, healthcare, legal, real estate, and eco…
Stratalize Real Estate
Retired Stratalize server exposing benchmark, market intelligence, compliance, financial, healthcare, legal, real estate, and eco…
Stratalize Crypto & DeFi
Retired Stratalize server exposing benchmark, market intelligence, compliance, financial, healthcare, legal, real estate, and eco…
Valuein — SEC EDGAR Fundamentals & Smart-Money Data
Provides point-in-time SEC EDGAR fundamentals, filings, ownership signals, financial analysis, valuation models, research reports…
equibles
Provides equity and market research tools covering SEC filings, company financials, portfolios, prices, options, macroeconomic da…