Servidor MCP

FutureSmart AI Demos

com.aidemos/catalogue

Qué hace este MCP

Searches and compares evidence-backed reviews, rankings, use cases, and testing artifacts for AI tools.

answer
ANSWER a buyer question in ONE call: which tool is best at a specific capability, with proof. Returns the resolved verdict our testing team's evidence supports — a named winner FOR THE ASKED CRITERION, every tested tool ranked with a comparable score /5, the CONDITIONS each result holds under (e.g. 'clean tables yes; nested headers no'), dissenting observations preserved as openable links, the tie-break reason, and artifact proof URLs. Answers are materialized from the evidence substrate — the same question returns the same answer. Honestly refuses (coverage: not_tested) when we never tested the topic. Start HERE for any 'which tool is best at X' / 'A or B for X' question; use get_evidence for the raw cells behind it.
Esquema de entrada
{'type': 'object', 'properties': {'ranking': {'type': 'string', 'description': 'Ranking slug (skips routing).'}, 'question': {'type': 'string', 'description': "The buyer question in natural language, e.g. 'Which document extraction tool best preserves table structure from scanned PDFs?'. Alternative: pass ranking + criterion explicitly."}, 'scenario': {'type': 'string', 'description': 'Optional scenario/condition of interest.'}, 'criterion': {'type': 'string', 'description': 'Criterion slug or exact name (with `ranking`).'}}, 'additionalProperties': False}
compare_tools
Evidence-aligned comparison of two tools, honesty enforced structurally: head_to_head (cells from the SAME test input — provable same-input comparison), related_not_same_input (same dimension, different runs — flagged), and each tool's unique evidence. Built from real observation cells with artifacts, not prose.
Esquema de entrada
{'type': 'object', 'required': ['tool_a', 'tool_b'], 'properties': {'tool_a': {'type': 'string', 'description': 'First tool slug, e.g. "llamaparse".'}, 'tool_b': {'type': 'string', 'description': 'Second tool slug, e.g. "landing-ai".'}, 'criterion': {'type': 'string', 'description': 'Optional: restrict to one criterion.'}}, 'additionalProperties': False}
get_evidence
Query the evidence graph: observation cells (tool × test-scenario × criterion) → verdict, score, the researcher's note, and the REAL artifacts (input/output screenshots) that prove it. The ground truth behind every ranking — filter any combination of tool(s), scenario (slug, group tag, or name), criterion, verdict, or evidence state. evidence_state: "verified" = artifact-backed, "observed" = noted without artifact, "scored-only" = number only.
Esquema de entrada
{'type': 'object', 'properties': {'tool': {'type': 'string', 'description': 'Tool slug or name, e.g. "landing-ai".'}, 'limit': {'type': 'integer', 'maximum': 200, 'minimum': 1, 'description': 'Max cells (default 50).'}, 'tools': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Several tools at once.'}, 'ranking': {'type': 'string', 'description': 'Ranking page slug — scope cells to the evidence run that published ranking is bound to (exactly what the page renders).'}, 'verdict': {'enum': ['worked', 'mixed', 'struggled', 'failed'], 'type': 'string'}, 'evidence': {'enum': ['verified', 'observed', 'scored-only'], 'type': 'string'}, 'scenario': {'type': 'string', 'description': 'Scenario slug, cross-run group tag (e.g. "scanned-research-paper"), or name fragment.'}, 'criterion': {'type': 'string', 'description': 'Criterion slug or name, e.g. "table extraction".'}}, 'additionalProperties': False}
get_persona
Given a persona slug (from list_personas), return everything tagged with it: persona, use_cases[], rankings[], compares[], toolkits[], tools[]. Mirrors a persona landing page.
Esquema de entrada
{'type': 'object', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'minLength': 1, 'description': 'Persona slug, e.g. "students".'}}, 'additionalProperties': False}
get_ranking
Full ranking detail as a JSON+Markdown envelope: ranked tools (rank/badge/scores), criteria, winner, breakdown (JSON) + verdicts / final take (Markdown). Every ranked tool carries `proof`: real artifact URLs from the exact evidence run this page is bound to, each with the /evidence permalink for the finding it proves — verdict and proof arrive together, no second call needed to cite evidence. `proof.artifact_count` is the true total and `proof.all_findings` is the get_evidence call that returns all of it. null if unknown. Pass `fields` to project to only the keys you need (token-efficient).
Esquema de entrada
{'type': 'object', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'minLength': 1, 'description': 'Ranking slug, e.g. "resume-parsing-api" (from list_rankings).'}, 'proof': {'enum': ['sample', 'full', 'none'], 'type': 'string', 'description': 'How many proof artifacts to inline. "sample" (default) = up to 6 per tool, spread across distinct criteria so you see breadth; "full" = every artifact; "none" = counts only, no URLs. Counts (artifact_count / finding_count) are the TRUE totals in every mode, so you can always tell what you did not receive.'}, 'fields': {'type': 'array', 'items': {'enum': ['id', 'title', 'slug', 'url', 'abstract', 'read_time', 'tested_date', 'category', 'use_case', 'personas', 'tags', 'winner', 'methodology', 'tools', 'breakdown', 'final_take', 'evidence_run'], 'type': 'string'}, 'description': 'Optional projection: return ONLY these top-level fields (identity id/name/title/slug/url is always included) to control response size. Available: id, title, slug, url, abstract, read_time, tested_date, category, use_case, personas, tags, winner, methodology, tools, breakdown, final_take, evidence_run.'}}, 'additionalProperties': False}
get_tool
Full tool detail as a JSON+Markdown envelope: identity, pricing, per-feature scores, fit, FAQ, relationships (JSON) + our_take / in-depth review (Markdown). Includes `proof`: real artifact URLs (input/output screenshots, recordings) from the runs that tested it, each with the /evidence permalink for the finding it proves — you can cite evidence from THIS call. null if unknown. Pass `fields` to project to only the keys you need (token-efficient).
Esquema de entrada
{'type': 'object', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'minLength': 1, 'description': 'Tool seo_slug, e.g. "affinda" (from list_tools).'}, 'proof': {'enum': ['sample', 'full', 'none'], 'type': 'string', 'description': 'How many proof artifacts to inline. "sample" (default) = up to 6 per tool, spread across distinct criteria so you see breadth; "full" = every artifact; "none" = counts only, no URLs. Counts (artifact_count / finding_count) are the TRUE totals in every mode, so you can always tell what you did not receive.'}, 'fields': {'type': 'array', 'items': {'enum': ['id', 'name', 'slug', 'url', 'heading', 'website', 'domain', 'category', 'sub_category', 'content_type', 'personas', 'tags', 'rating', 'testing_history', 'features', 'pricing', 'fit', 'use_case_track_record', 'related_pages', 'related_reads', 'similar_tools', 'faq', 'demo_video', 'our_take', 'in_depth_review_md', 'proof'], 'type': 'string'}, 'description': 'Optional projection: return ONLY these top-level fields (identity id/name/title/slug/url is always included) to control response size. Available: id, name, slug, url, heading, website, domain, category, sub_category, content_type, personas, tags, rating, testing_history, features, pricing, fit, use_case_track_record, related_pages, related_reads, similar_tools, faq, demo_video, our_take, in_depth_review_md, proof.'}}, 'additionalProperties': False}
get_use_case
Full use-case detail as a JSON+Markdown envelope: step guide, pros/cons, FAQ, tools used (JSON) + the full narrative guide (Markdown, full_md). null if unknown. Pass `fields` to project to only the keys you need (token-efficient).
Esquema de entrada
{'type': 'object', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'minLength': 1, 'description': 'Use-case slug (from list_use_cases).'}, 'fields': {'type': 'array', 'items': {'enum': ['id', 'title', 'slug', 'url', 'abstract', 'read_time', 'category', 'audience', 'personas', 'tags', 'tools_used', 'step_guide', 'what_to_expect', 'faq', 'full_md'], 'type': 'string'}, 'description': 'Optional projection: return ONLY these top-level fields (identity id/name/title/slug/url is always included) to control response size. Available: id, title, slug, url, abstract, read_time, category, audience, personas, tags, tools_used, step_guide, what_to_expect, faq, full_md.'}}, 'additionalProperties': False}
list_categories
List the category vocabulary in use with per-type counts and a source flag ("collection"|"derived"), sorted by total.
Esquema de entrada
{'type': 'object', 'properties': {}, 'additionalProperties': False}
list_compares
List published head-to-head comparison pages: id, title, slug, url, tool_a, tool_b, personas[], shared_use_cases[], updated_at.
Esquema de entrada
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'maximum': 500, 'minimum': 1, 'description': 'Max items to return. Omit for all.'}, 'offset': {'type': 'integer', 'minimum': 0, 'description': 'Items to skip (paging).'}}, 'additionalProperties': False}
list_personas
List personas with published-page counts per type {use_cases, rankings, tools, compares, toolkits}. The slugs are valid input for get_persona.
Esquema de entrada
{'type': 'object', 'properties': {}, 'additionalProperties': False}
list_rankings
List published ranking pages ("best X"): id, title, slug, url, use_case, persona, category, tools_count, winner, tested_as_of, updated_at.
Esquema de entrada
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'maximum': 500, 'minimum': 1, 'description': 'Max items to return. Omit for all.'}, 'offset': {'type': 'integer', 'minimum': 0, 'description': 'Items to skip (paging).'}}, 'additionalProperties': False}
list_toolkits
List published toolkit pages (curated bundles): id, title, slug, url, category.
Esquema de entrada
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'maximum': 500, 'minimum': 1, 'description': 'Max items to return. Omit for all.'}, 'offset': {'type': 'integer', 'minimum': 0, 'description': 'Items to skip (paging).'}}, 'additionalProperties': False}
list_tools
List published AI tool pages: id, name, slug, url, domain, personas[], categories[].
Esquema de entrada
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'maximum': 500, 'minimum': 1, 'description': 'Max items to return. Omit for all.'}, 'offset': {'type': 'integer', 'minimum': 0, 'description': 'Items to skip (paging).'}}, 'additionalProperties': False}
list_use_cases
List published use-case pages (how-to guides): id, title, slug, url, persona, category, updated_at.
Esquema de entrada
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'maximum': 500, 'minimum': 1, 'description': 'Max items to return. Omit for all.'}, 'offset': {'type': 'integer', 'minimum': 0, 'description': 'Items to skip (paging).'}}, 'additionalProperties': False}
rankings_for_tool
Given a tool id, return the tool {id,name,slug} and every ranking it appears in [{id,title,slug,url,use_case,rank,badge}].
Esquema de entrada
{'type': 'object', 'required': ['tool_id'], 'properties': {'tool_id': {'type': ['string', 'integer'], 'description': 'Tool id (from list_tools).'}}, 'additionalProperties': False}
search
Search the published catalogue across use cases, rankings, tools, comparisons, and toolkits. Returns ranked light refs [{ kind, id, title, slug, url, snippet, score, meta }] — then call get_tool / get_ranking / get_use_case for full detail. `mode`: keyword (substring), semantic (meaning, via embeddings — finds pages by what they cover), or hybrid (default, fuses both). Optional filters: type[], persona, category.
Esquema de entrada
{'type': 'object', 'required': ['query'], 'properties': {'mode': {'enum': ['keyword', 'semantic', 'hybrid'], 'type': 'string', 'description': 'Search mode.'}, 'type': {'type': 'array', 'items': {'enum': ['use_case', 'ranking', 'tool', 'compare', 'toolkit'], 'type': 'string'}, 'description': 'Restrict to these kinds (default: all).'}, 'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Max results (default 20).'}, 'query': {'type': 'string', 'minLength': 1, 'description': 'Free-text search query.'}, 'persona': {'type': 'string', 'description': 'Restrict to items tagged with this persona slug.'}, 'category': {'type': 'string', 'description': 'Restrict to this category (case-insensitive).'}}, 'additionalProperties': False}
tools_in_ranking
Given a ranking id, return the ranking {id,title,slug} and its ranked tools [{id,name,slug,url,rank,badge}] (badge: Best/Usable/Needs work/Unstable/Failed).
Esquema de entrada
{'type': 'object', 'required': ['ranking_id'], 'properties': {'ranking_id': {'type': ['string', 'integer'], 'description': 'Ranking id (from list_rankings).'}}, 'additionalProperties': False}
Añadido
compare_tools
17 de September de 2026 a las 12:33
Añadido
get_evidence
17 de September de 2026 a las 12:33
Añadido
get_use_case
17 de September de 2026 a las 12:33
Añadido
get_ranking
17 de September de 2026 a las 12:33
Añadido
get_tool
17 de September de 2026 a las 12:33
Añadido
get_persona
17 de September de 2026 a las 12:33
Añadido
rankings_for_tool
17 de September de 2026 a las 12:33
Añadido
tools_in_ranking
17 de September de 2026 a las 12:33
Añadido
search
17 de September de 2026 a las 12:33
Añadido
list_categories
17 de September de 2026 a las 12:33
Añadido
list_personas
17 de September de 2026 a las 12:33
Añadido
list_toolkits
17 de September de 2026 a las 12:33
Añadido
list_compares
17 de September de 2026 a las 12:33
Añadido
list_tools
17 de September de 2026 a las 12:33
Añadido
list_rankings
17 de September de 2026 a las 12:33
Añadido
list_use_cases
17 de September de 2026 a las 12:33
Añadido
answer
17 de September de 2026 a las 12:33