Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,537Letters: 14Defects: 1,323counted 3 min ago
teppi

Server definition

Hash
sha256:f07519e718bd06580c839de821d8c923d00cc80a777f6c20481c4e1b1b8396ff
What it is
What a remote MCP server returned when asked what it offers: 17 tools

The blob, as servednamed by its sha256

{ "instructions": "Evidence-backed answers about AI tools, from hands-on testing (published data only). START WITH `answer` for any 'which tool is best at X' question — it returns the resolved verdict in one call: winner for the asked criterion, ranked scores, the conditions each result holds under, dissent preserved, openable proof; it refuses honestly when we never tested the topic. Then: list_* to enumerate use cases, rankings, tools, comparisons, toolkits, personas, and categories; tools_in_ranking / rankings_for_tool to traverse; get_persona for everything tagged to a persona; get_tool / get_ranking / get_use_case for the full page as a JSON-structure + Markdown-content envelope; get_evidence for the raw observation cells behind any answer. Every entity has id, slug, and a full url.", "tools": [ { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "criterion": { "description": "Criterion slug or exact name (with `ranking`).", "type": "string" }, "question": { "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.", "type": "string" }, "ranking": { "description": "Ranking slug (skips routing).", "type": "string" }, "scenario": { "description": "Optional scenario/condition of interest.", "type": "string" } }, "type": "object" }, "name": "answer", "outputSchema": null }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "criterion": { "description": "Optional: restrict to one criterion.", "type": "string" }, "tool_a": { "description": "First tool slug, e.g. \"llamaparse\".", "type": "string" }, "tool_b": { "description": "Second tool slug, e.g. \"landing-ai\".", "type": "string" } }, "required": [ "tool_a", "tool_b" ], "type": "object" }, "name": "compare_tools", "outputSchema": null }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "criterion": { "description": "Criterion slug or name, e.g. \"table extraction\".", "type": "string" }, "evidence": { "enum": [ "verified", "observed", "scored-only" ], "type": "string" }, "limit": { "description": "Max cells (default 50).", "maximum": 200, "minimum": 1, "type": "integer" }, "ranking": { "description": "Ranking page slug — scope cells to the evidence run that published ranking is bound to (exactly what the page renders).", "type": "string" }, "scenario": { "description": "Scenario slug, cross-run group tag (e.g. \"scanned-research-paper\"), or name fragment.", "type": "string" }, "tool": { "description": "Tool slug or name, e.g. \"landing-ai\".", "type": "string" }, "tools": { "description": "Several tools at once.", "items": { "type": "string" }, "type": "array" }, "verdict": { "enum": [ "worked", "mixed", "struggled", "failed" ], "type": "string" } }, "type": "object" }, "name": "get_evidence", "outputSchema": null }, { "description": "Given a persona slug (from list_personas), return everything tagged with it: persona, use_cases[], rankings[], compares[], toolkits[], tools[]. Mirrors a persona landing page.", "inputSchema": { "additionalProperties": false, "properties": { "slug": { "description": "Persona slug, e.g. \"students\".", "minLength": 1, "type": "string" } }, "required": [ "slug" ], "type": "object" }, "name": "get_persona", "outputSchema": null }, { "description": "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).", "inputSchema": { "additionalProperties": false, "properties": { "fields": { "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.", "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" }, "type": "array" }, "proof": { "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.", "enum": [ "sample", "full", "none" ], "type": "string" }, "slug": { "description": "Ranking slug, e.g. \"resume-parsing-api\" (from list_rankings).", "minLength": 1, "type": "string" } }, "required": [ "slug" ], "type": "object" }, "name": "get_ranking", "outputSchema": null }, { "description": "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).", "inputSchema": { "additionalProperties": false, "properties": { "fields": { "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.", "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" }, "type": "array" }, "proof": { "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.", "enum": [ "sample", "full", "none" ], "type": "string" }, "slug": { "description": "Tool seo_slug, e.g. \"affinda\" (from list_tools).", "minLength": 1, "type": "string" } }, "required": [ "slug" ], "type": "object" }, "name": "get_tool", "outputSchema": null }, { "description": "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).", "inputSchema": { "additionalProperties": false, "properties": { "fields": { "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.", "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" }, "type": "array" }, "slug": { "description": "Use-case slug (from list_use_cases).", "minLength": 1, "type": "string" } }, "required": [ "slug" ], "type": "object" }, "name": "get_use_case", "outputSchema": null }, { "description": "List the category vocabulary in use with per-type counts and a source flag (\"collection\"|\"derived\"), sorted by total.", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "list_categories", "outputSchema": null }, { "description": "List published head-to-head comparison pages: id, title, slug, url, tool_a, tool_b, personas[], shared_use_cases[], updated_at.", "inputSchema": { "additionalProperties": false, "properties": { "limit": { "description": "Max items to return. Omit for all.", "maximum": 500, "minimum": 1, "type": "integer" }, "offset": { "description": "Items to skip (paging).", "minimum": 0, "type": "integer" } }, "type": "object" }, "name": "list_compares", "outputSchema": null }, { "description": "List personas with published-page counts per type {use_cases, rankings, tools, compares, toolkits}. The slugs are valid input for get_persona.", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "list_personas", "outputSchema": null }, { "description": "List published ranking pages (\"best X\"): id, title, slug, url, use_case, persona, category, tools_count, winner, tested_as_of, updated_at.", "inputSchema": { "additionalProperties": false, "properties": { "limit": { "description": "Max items to return. Omit for all.", "maximum": 500, "minimum": 1, "type": "integer" }, "offset": { "description": "Items to skip (paging).", "minimum": 0, "type": "integer" } }, "type": "object" }, "name": "list_rankings", "outputSchema": null }, { "description": "List published toolkit pages (curated bundles): id, title, slug, url, category.", "inputSchema": { "additionalProperties": false, "properties": { "limit": { "description": "Max items to return. Omit for all.", "maximum": 500, "minimum": 1, "type": "integer" }, "offset": { "description": "Items to skip (paging).", "minimum": 0, "type": "integer" } }, "type": "object" }, "name": "list_toolkits", "outputSchema": null }, { "description": "List published AI tool pages: id, name, slug, url, domain, personas[], categories[].", "inputSchema": { "additionalProperties": false, "properties": { "limit": { "description": "Max items to return. Omit for all.", "maximum": 500, "minimum": 1, "type": "integer" }, "offset": { "description": "Items to skip (paging).", "minimum": 0, "type": "integer" } }, "type": "object" }, "name": "list_tools", "outputSchema": null }, { "description": "List published use-case pages (how-to guides): id, title, slug, url, persona, category, updated_at.", "inputSchema": { "additionalProperties": false, "properties": { "limit": { "description": "Max items to return. Omit for all.", "maximum": 500, "minimum": 1, "type": "integer" }, "offset": { "description": "Items to skip (paging).", "minimum": 0, "type": "integer" } }, "type": "object" }, "name": "list_use_cases", "outputSchema": null }, { "description": "Given a tool id, return the tool {id,name,slug} and every ranking it appears in [{id,title,slug,url,use_case,rank,badge}].", "inputSchema": { "additionalProperties": false, "properties": { "tool_id": { "description": "Tool id (from list_tools).", "type": [ "string", "integer" ] } }, "required": [ "tool_id" ], "type": "object" }, "name": "rankings_for_tool", "outputSchema": null }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "category": { "description": "Restrict to this category (case-insensitive).", "type": "string" }, "limit": { "description": "Max results (default 20).", "maximum": 50, "minimum": 1, "type": "integer" }, "mode": { "description": "Search mode.", "enum": [ "keyword", "semantic", "hybrid" ], "type": "string" }, "persona": { "description": "Restrict to items tagged with this persona slug.", "type": "string" }, "query": { "description": "Free-text search query.", "minLength": 1, "type": "string" }, "type": { "description": "Restrict to these kinds (default: all).", "items": { "enum": [ "use_case", "ranking", "tool", "compare", "toolkit" ], "type": "string" }, "type": "array" } }, "required": [ "query" ], "type": "object" }, "name": "search", "outputSchema": null }, { "description": "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).", "inputSchema": { "additionalProperties": false, "properties": { "ranking_id": { "description": "Ranking id (from list_rankings).", "type": [ "string", "integer" ] } }, "required": [ "ranking_id" ], "type": "object" }, "name": "tools_in_ranking", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:f07519e718bd06580c839de821d8c923d00cc80a777f6c20481c4e1b1b8396ff | sha256sum