Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,533Letters: 13Defects: 1,322counted just now
teppi

Server definition

Hash
sha256:2c6d553f494a0344e7f6850c54773bf128cd0e392d4cf7da6ab8a8f9bee489b2
What it is
What a remote MCP server returned when asked what it offers: 12 tools

The blob, as servednamed by its sha256

{ "instructions": "Multi-engine scholarly research server. Use it to traverse from keyword -> paper -> author -> paper -> references, save interesting papers into an in-memory reading list, and export citations/abstracts/full-text corpora for downstream synthesis.", "tools": [ { "description": "Read the best abstract available for a paper. Use with a DOI or with author_name + candidate_index + paper_index after author_papers. If you pass `engines`, use a comma-separated subset of: elsevier, openalex, crossref, arxiv, europepmc, springer, semanticscholar.", "inputSchema": { "properties": { "author_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Author Name" }, "candidate_index": { "default": 1, "title": "Candidate Index", "type": "integer" }, "doi": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Doi" }, "engines": { "default": "", "title": "Engines", "type": "string" }, "paper_index": { "default": 1, "title": "Paper Index", "type": "integer" } }, "title": "scholarfetch_abstractArguments", "type": "object" }, "name": "scholarfetch_abstract", "outputSchema": { "properties": { "result": { "additionalProperties": true, "title": "Result", "type": "object" } }, "required": [ "result" ], "title": "scholarfetch_abstractOutput", "type": "object" } }, { "description": "Read full paper text when machine-readable content is recoverable. Use with a DOI or with author_name + candidate_index + paper_index. Uses Elsevier first, then open-access fallbacks such as Springer OA, Europe PMC, arXiv PDF, and generic PDF URLs when text is recoverable. If you pass `engines`, use a comma-separated subset of: elsevier, openalex, crossref, arxiv, europepmc, springer, semanticscholar.", "inputSchema": { "properties": { "author_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Author Name" }, "candidate_index": { "default": 1, "title": "Candidate Index", "type": "integer" }, "doi": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Doi" }, "engines": { "default": "", "title": "Engines", "type": "string" }, "paper_index": { "default": 1, "title": "Paper Index", "type": "integer" } }, "title": "scholarfetch_article_textArguments", "type": "object" }, "name": "scholarfetch_article_text", "outputSchema": { "properties": { "result": { "additionalProperties": true, "title": "Result", "type": "object" } }, "required": [ "result" ], "title": "scholarfetch_article_textOutput", "type": "object" } }, { "description": "Disambiguate a human author name into ranked identity candidates. Use this before `scholarfetch_author_papers` when the name is ambiguous and you need a stable `candidate_index`. If you pass `engines`, it must include `openalex`.", "inputSchema": { "properties": { "engines": { "default": "", "title": "Engines", "type": "string" }, "limit": { "default": 10, "title": "Limit", "type": "integer" }, "name": { "title": "Name", "type": "string" } }, "required": [ "name" ], "title": "scholarfetch_author_candidatesArguments", "type": "object" }, "name": "scholarfetch_author_candidates", "outputSchema": { "properties": { "result": { "additionalProperties": true, "title": "Result", "type": "object" } }, "required": [ "result" ], "title": "scholarfetch_author_candidatesOutput", "type": "object" } }, { "description": "Expand one author into a deduplicated paper list. This is the main author->paper traversal tool and supports research filters. Use `author_id` when you already know the exact author, or `author_name` plus `candidate_index` after `scholarfetch_author_candidates`. Supported comma-separated `filters`: year>=YYYY, year<=YYYY, year=YYYY, has:abstract, has:doi, has:pdf, venue:<text>, title:<text>, doi:<text>. If you pass `engines`, it must include `openalex`.", "inputSchema": { "properties": { "author_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Author Id" }, "author_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Author Name" }, "candidate_index": { "default": 1, "title": "Candidate Index", "type": "integer" }, "engines": { "default": "", "title": "Engines", "type": "string" }, "filters": { "default": "", "title": "Filters", "type": "string" }, "limit": { "default": 50, "title": "Limit", "type": "integer" } }, "title": "scholarfetch_author_papersArguments", "type": "object" }, "name": "scholarfetch_author_papers", "outputSchema": { "properties": { "result": { "additionalProperties": true, "title": "Result", "type": "object" } }, "required": [ "result" ], "title": "scholarfetch_author_papersOutput", "type": "object" } }, { "description": "Enrich one known DOI with metadata, reading links, and full-text availability signals. If you pass `engines`, use a comma-separated subset of: elsevier, openalex, crossref, arxiv, europepmc, springer, semanticscholar.", "inputSchema": { "properties": { "doi": { "title": "Doi", "type": "string" }, "engines": { "default": "", "title": "Engines", "type": "string" } }, "required": [ "doi" ], "title": "scholarfetch_doi_lookupArguments", "type": "object" }, "name": "scholarfetch_doi_lookup", "outputSchema": { "properties": { "result": { "additionalProperties": true, "title": "Result", "type": "object" } }, "required": [ "result" ], "title": "scholarfetch_doi_lookupOutput", "type": "object" } }, { "description": "Expand a paper into its references. Use with a DOI or with author_name + candidate_index + paper_index. This is the main edge-expansion tool for traversing the literature graph. If you pass `engines`, use a comma-separated subset of: elsevier, openalex, crossref, arxiv, europepmc, springer, semanticscholar.", "inputSchema": { "properties": { "author_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Author Name" }, "candidate_index": { "default": 1, "title": "Candidate Index", "type": "integer" }, "doi": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Doi" }, "engines": { "default": "", "title": "Engines", "type": "string" }, "paper_index": { "default": 1, "title": "Paper Index", "type": "integer" } }, "title": "scholarfetch_referencesArguments", "type": "object" }, "name": "scholarfetch_references", "outputSchema": { "properties": { "result": { "additionalProperties": true, "title": "Result", "type": "object" } }, "required": [ "result" ], "title": "scholarfetch_referencesOutput", "type": "object" } }, { "description": "Add one paper to a named in-memory reading list on the MCP server. Best input is paper_json copied from another ScholarFetch tool result, but DOI, query+result_index, or author_name+candidate_index+paper_index also work. Reuse the same collection name across calls to keep one research session together.", "inputSchema": { "properties": { "author_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Author Name" }, "candidate_index": { "default": 1, "title": "Candidate Index", "type": "integer" }, "collection": { "default": "default", "title": "Collection", "type": "string" }, "doi": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Doi" }, "engines": { "default": "", "title": "Engines", "type": "string" }, "paper_index": { "default": 1, "title": "Paper Index", "type": "integer" }, "paper_json": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Paper Json" }, "query": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Query" }, "result_index": { "default": 1, "title": "Result Index", "type": "integer" } }, "title": "scholarfetch_saved_addArguments", "type": "object" }, "name": "scholarfetch_saved_add", "outputSchema": { "properties": { "result": { "additionalProperties": true, "title": "Result", "type": "object" } }, "required": [ "result" ], "title": "scholarfetch_saved_addOutput", "type": "object" } }, { "description": "Clear all papers from a named in-memory reading list. Useful when restarting a research branch.", "inputSchema": { "properties": { "collection": { "default": "default", "title": "Collection", "type": "string" } }, "title": "scholarfetch_saved_clearArguments", "type": "object" }, "name": "scholarfetch_saved_clear", "outputSchema": { "properties": { "result": { "additionalProperties": true, "title": "Result", "type": "object" } }, "required": [ "result" ], "title": "scholarfetch_saved_clearOutput", "type": "object" } }, { "description": "Export the current reading list as citations, abstracts, BibTeX, or an aggregated full-text corpus. Valid `format` values: citations, abstracts, bib, fulltext. Valid `style` values when `format=citations`: harvard, apa, ieee. Use `include_references=true` with `format=fulltext` when you want a richer downstream synthesis corpus.", "inputSchema": { "properties": { "collection": { "default": "default", "title": "Collection", "type": "string" }, "engines": { "default": "", "title": "Engines", "type": "string" }, "format": { "default": "citations", "title": "Format", "type": "string" }, "include_references": { "default": false, "title": "Include References", "type": "boolean" }, "style": { "default": "harvard", "title": "Style", "type": "string" } }, "title": "scholarfetch_saved_exportArguments", "type": "object" }, "name": "scholarfetch_saved_export", "outputSchema": { "properties": { "result": { "additionalProperties": true, "title": "Result", "type": "object" } }, "required": [ "result" ], "title": "scholarfetch_saved_exportOutput", "type": "object" } }, { "description": "List all papers currently saved in a named in-memory reading list. Use this to inspect the working set before exporting or removing items.", "inputSchema": { "properties": { "collection": { "default": "default", "title": "Collection", "type": "string" } }, "title": "scholarfetch_saved_listArguments", "type": "object" }, "name": "scholarfetch_saved_list", "outputSchema": { "properties": { "result": { "additionalProperties": true, "title": "Result", "type": "object" } }, "required": [ "result" ], "title": "scholarfetch_saved_listOutput", "type": "object" } }, { "description": "Remove one paper from a named in-memory reading list by DOI or exact title.", "inputSchema": { "properties": { "collection": { "default": "default", "title": "Collection", "type": "string" }, "doi": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Doi" }, "title": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Title" } }, "title": "scholarfetch_saved_removeArguments", "type": "object" }, "name": "scholarfetch_saved_remove", "outputSchema": { "properties": { "result": { "additionalProperties": true, "title": "Result", "type": "object" } }, "required": [ "result" ], "title": "scholarfetch_saved_removeOutput", "type": "object" } }, { "description": "Start a research traversal from keywords, a DOI, or a person name. Returns deduplicated paper records that you can inspect, save, expand through references, or use as seeds for author exploration. If you pass `engines`, use a comma-separated subset of: elsevier, openalex, crossref, arxiv, europepmc, springer, semanticscholar.", "inputSchema": { "properties": { "engines": { "default": "", "title": "Engines", "type": "string" }, "limit": { "default": 20, "title": "Limit", "type": "integer" }, "query": { "title": "Query", "type": "string" } }, "required": [ "query" ], "title": "scholarfetch_searchArguments", "type": "object" }, "name": "scholarfetch_search", "outputSchema": { "properties": { "result": { "additionalProperties": true, "title": "Result", "type": "object" } }, "required": [ "result" ], "title": "scholarfetch_searchOutput", "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:2c6d553f494a0344e7f6850c54773bf128cd0e392d4cf7da6ab8a8f9bee489b2 | sha256sum