Server definition
- Hash
- sha256:da813c738a156e9a2e0f056f05fa8536891316f2374c5f051d77f75bda67e02e
- What it is
- What a remote MCP server returned when asked what it offers: 4 tools
The blob, as servednamed by its sha256
{
"instructions": "Use the arxiv_* tools to access the arXiv paper corpus: search by query, fetch metadata by ID, read full-text HTML, and list the subject category taxonomy. Papers are addressed by arXiv ID (e.g. 2401.12345 or 2401.12345v2 with version); search queries support field prefixes (ti:, au:, abs:, cat:) and boolean operators (AND, OR, ANDNOT).",
"tools": [
{
"description": "Get full metadata for one or more arXiv papers by ID. Use when you have known IDs from citations, prior search results, or memory.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"paper_ids": {
"anyOf": [
{
"description": "Single arXiv paper ID (e.g., \"2401.12345\" or \"2401.12345v2\").",
"minLength": 1,
"type": "string"
},
{
"description": "Array of up to 10 arXiv paper IDs for batch lookup.",
"items": {
"minLength": 1,
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"type": "array"
}
],
"description": "arXiv paper ID or array of up to 10 IDs. Format: \"2401.12345\" or \"2401.12345v2\" (with version). Also accepts legacy IDs like \"hep-th/9901001\"."
}
},
"required": [
"paper_ids"
],
"type": "object"
},
"name": "arxiv_get_metadata",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"papers",
"totalSucceeded"
]
},
{
"required": [
"error"
]
}
],
"properties": {
"error": {
"additionalProperties": {},
"description": "Present when the call failed. Absent on success.",
"properties": {
"code": {
"description": "JSON-RPC error code for this failure.",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
"data": {
"additionalProperties": {},
"properties": {
"reason": {
"description": "Machine-readable failure mode. Declared by this tool: `no_match`: None of the requested IDs returned data from arXiv. `version_unavailable`: Every requested ID pinned a version the local mirror does not hold, and live arXiv fallback is disabled. `rate_limited`: arXiv has throttled requests (HTTP 429 or \"Rate exceeded.\" body). `invalid_request`: arXiv rejected the request (HTTP 4xx other than 429), e.g. malformed ID syntax. Other values are possible when a failure originates below the handler.",
"examples": [
"no_match",
"version_unavailable",
"rate_limited",
"invalid_request"
],
"type": "string"
},
"recovery": {
"additionalProperties": {},
"description": "Actionable next step for the caller.",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"type": "object"
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"type": "object"
},
"message": {
"description": "Human-readable description of what went wrong.",
"type": "string"
}
},
"required": [
"code",
"message"
],
"type": "object"
},
"not_found": {
"description": "Per-input explanations for inputs that could not be returned. Absent when nothing failed.",
"items": {
"additionalProperties": false,
"description": "A requested ID that could not be returned, with the reason it was missed.",
"properties": {
"detail": {
"description": "Additional human-readable context, when available",
"type": "string"
},
"id": {
"description": "arXiv ID that returned no data.",
"type": "string"
},
"reason": {
"description": "Why the paper ID could not be returned.",
"enum": [
"not_in_arxiv",
"version_not_in_mirror"
],
"type": "string"
}
},
"required": [
"id",
"reason"
],
"type": "object"
},
"type": "array"
},
"papers": {
"description": "Papers found. May be fewer than requested if some IDs are invalid.",
"items": {
"additionalProperties": false,
"description": "arXiv paper metadata — identifier, title, authors, abstract, categories, and links.",
"properties": {
"abstract": {
"description": "Full abstract text.",
"type": "string"
},
"abstract_url": {
"description": "arXiv abstract page URL.",
"type": "string"
},
"authors": {
"description": "Author names.",
"items": {
"type": "string"
},
"type": "array"
},
"categories": {
"description": "All arXiv categories assigned to this paper.",
"items": {
"type": "string"
},
"type": "array"
},
"comment": {
"description": "Author comment (e.g., page count, conference).",
"type": "string"
},
"doi": {
"description": "DOI if available.",
"type": "string"
},
"id": {
"description": "arXiv paper ID (e.g., \"2401.12345v1\").",
"type": "string"
},
"journal_ref": {
"description": "Journal reference if published.",
"type": "string"
},
"pdf_url": {
"description": "Direct PDF download URL.",
"type": "string"
},
"primary_category": {
"description": "Primary arXiv category (e.g., \"cs.CL\").",
"type": "string"
},
"published": {
"description": "Original submission date (ISO 8601).",
"type": "string"
},
"title": {
"description": "Paper title.",
"type": "string"
},
"updated": {
"description": "Last update date (ISO 8601).",
"type": "string"
}
},
"required": [
"id",
"title",
"authors",
"abstract",
"primary_category",
"categories",
"published",
"updated",
"pdf_url",
"abstract_url"
],
"type": "object"
},
"type": "array"
},
"totalSucceeded": {
"description": "Number of successful items in 'papers'",
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
}
},
"type": "object"
}
},
{
"description": "List arXiv category codes and names. Useful for discovering valid category filters for arxiv_search. Lists subject classes only; arxiv_search also accepts a bare archive code (the part before the dot, e.g. \"astro-ph\" or \"cs\") to search a whole archive at once.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"group": {
"description": "Filter by top-level group (e.g., \"cs\", \"math\", \"physics\"). Returns all categories if omitted.",
"enum": [
"cs",
"econ",
"eess",
"math",
"physics",
"q-bio",
"q-fin",
"stat"
],
"type": "string"
}
},
"type": "object"
},
"name": "arxiv_list_categories",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"categories",
"totalCount"
]
},
{
"required": [
"error"
]
}
],
"properties": {
"categories": {
"description": "arXiv categories matching the filter.",
"items": {
"additionalProperties": false,
"description": "arXiv category — subject code, full name, and top-level group.",
"properties": {
"code": {
"description": "Category code (e.g., \"cs.AI\").",
"type": "string"
},
"group": {
"description": "Top-level group (e.g., \"cs\").",
"type": "string"
},
"name": {
"description": "Full name (e.g., \"Artificial Intelligence\").",
"type": "string"
}
},
"required": [
"code",
"name",
"group"
],
"type": "object"
},
"type": "array"
},
"error": {
"additionalProperties": {},
"description": "Present when the call failed. Absent on success.",
"properties": {
"code": {
"description": "JSON-RPC error code for this failure.",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
"data": {
"additionalProperties": {},
"properties": {
"reason": {
"description": "Machine-readable failure mode.",
"type": "string"
},
"recovery": {
"additionalProperties": {},
"description": "Actionable next step for the caller.",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"type": "object"
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"type": "object"
},
"message": {
"description": "Human-readable description of what went wrong.",
"type": "string"
}
},
"required": [
"code",
"message"
],
"type": "object"
},
"notice": {
"description": "Guidance when the group filter returns no categories.",
"type": "string"
},
"totalCount": {
"description": "Total number of categories returned.",
"type": "number"
}
},
"type": "object"
}
},
{
"description": "Fetch the full text of an arXiv paper. Tries arxiv.org/html first, falls back to ar5iv.labs.arxiv.org, and falls back again to text extracted from the PDF when neither has an HTML render — check the source field to know which one answered. Page through long papers with start and max_characters, or pass max_characters null to get the entire body in one call.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"max_characters": {
"anyOf": [
{
"maximum": 9007199254740991,
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": 100000,
"description": "Maximum characters of paper body to return, counted after boilerplate stripping. Defaults to 100,000; pass null to return the entire body in one call. Whole-paper reads can exceed a client tool-result size cap — math-heavy bodies run 300KB-1MB+ — so prefer the default plus start-based paging unless the full text is needed. When truncated, a notice and the total character count are included."
},
"paper_id": {
"description": "arXiv paper ID (e.g., \"2401.12345\" or \"2401.12345v2\").",
"minLength": 1,
"type": "string"
},
"start": {
"default": 0,
"description": "Character offset into the cleaned body to begin reading from. Defaults to 0. Use with max_characters to page through long papers — e.g., start=100000 with max_characters=100000 returns chars 100,000–199,999. The total length is reported as body_characters in the response.",
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
}
},
"required": [
"paper_id"
],
"type": "object"
},
"name": "arxiv_read_paper",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"paper_id",
"title",
"content",
"source",
"truncated",
"start",
"total_characters",
"body_characters",
"pdf_url",
"abstract_url"
]
},
{
"required": [
"error"
]
}
],
"properties": {
"abstract_url": {
"description": "arXiv abstract page URL for attribution.",
"type": "string"
},
"body_characters": {
"description": "Character count of the full cleaned body. Use with start and max_characters to page. Typically 3-4× smaller than total_characters for math-heavy HTML papers.",
"type": "number"
},
"content": {
"description": "Paper body for the requested slice — cleaned HTML when source is arxiv_html or ar5iv, plain text when source is pdf_text. Empty when start is past body_characters.",
"type": "string"
},
"error": {
"additionalProperties": {},
"description": "Present when the call failed. Absent on success.",
"properties": {
"code": {
"description": "JSON-RPC error code for this failure.",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
"data": {
"additionalProperties": {},
"properties": {
"reason": {
"description": "Machine-readable failure mode. Declared by this tool: `no_match`: Paper ID is not present in the arXiv index. `content_unavailable`: Paper exists but neither arxiv.org/html nor ar5iv has an HTML rendering and arXiv served no PDF either. `pdf_extraction_failed`: Paper has no HTML rendering and its PDF carries no text layer — an image-only or scanned submission. `version_unavailable`: A version-pinned paper_id was requested, arXiv is unreachable, and the local mirror holds only a different version — per-version reads require the live API. `rate_limited`: arXiv has throttled requests (HTTP 429 or \"Rate exceeded.\" body). `invalid_request`: arXiv rejected the metadata lookup (HTTP 4xx other than 429), e.g. malformed ID syntax. Other values are possible when a failure originates below the handler.",
"examples": [
"no_match",
"content_unavailable",
"pdf_extraction_failed",
"version_unavailable",
"rate_limited",
"invalid_request"
],
"type": "string"
},
"recovery": {
"additionalProperties": {},
"description": "Actionable next step for the caller.",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"type": "object"
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"type": "object"
},
"message": {
"description": "Human-readable description of what went wrong.",
"type": "string"
}
},
"required": [
"code",
"message"
],
"type": "object"
},
"paper_id": {
"description": "arXiv paper ID.",
"type": "string"
},
"pdf_url": {
"description": "Direct PDF download URL.",
"type": "string"
},
"source": {
"description": "Which upstream artifact the body was read from. arxiv_html and ar5iv are HTML renders; pdf_text is text extracted from the PDF, where prose is reliable but math, tables, and heading structure are flattened.",
"enum": [
"arxiv_html",
"ar5iv",
"pdf_text"
],
"type": "string"
},
"start": {
"description": "Character offset of the first character in content within the cleaned body.",
"type": "number"
},
"title": {
"description": "Paper title (from metadata, not parsed from HTML).",
"type": "string"
},
"total_characters": {
"description": "Character count of the body before cleaning — the unprocessed HTML body for arxiv_html and ar5iv, and equal to body_characters for pdf_text, which needs no cleaning.",
"type": "number"
},
"truncated": {
"description": "True when more body content exists past this slice (start + content.length < body_characters).",
"type": "boolean"
}
},
"type": "object"
}
},
{
"description": "Search arXiv papers by query with category and sort filters. Returns paper metadata including title, authors, abstract, categories, and links.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"category": {
"description": "Restrict results to an arXiv category. A leaf code (\"cs.CL\", \"math.AG\") matches exactly. A bare archive code (\"astro-ph\", \"cond-mat\", \"cs\", \"math\") matches the whole archive — its subject classes plus the legacy flat papers filed before the archive was subdivided. Note \"physics\" is the general-physics archive (physics.*), not the wider physics group: astro-ph, cond-mat, hep-*, quant-ph and the rest are separate archive codes. Use arxiv_list_categories to discover subject classes.",
"type": "string"
},
"max_results": {
"default": 10,
"description": "Maximum results to return (1-50). Default 10. Each result includes title, authors, abstract, and metadata — keep low to limit response size.",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"query": {
"description": "Search query. Field prefixes: ti: (title), au: (author — token-based; quote multi-token names like au:\"hinton g\" or pair with a topical clause to disambiguate common surnames), abs: (abstract), cat: (category — a leaf code matches exactly, a bare archive code such as cat:astro-ph matches its whole subtree), co: (comment), jr: (journal ref), all: (all fields). Boolean operators: AND, OR, ANDNOT. Examples: \"au:bengio AND ti:attention\", \"all:transformer AND cat:cs.CL\".",
"maxLength": 1000,
"minLength": 1,
"pattern": "^[^\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F]*$",
"type": "string"
},
"sort_by": {
"default": "relevance",
"description": "Sort criterion. Use \"submitted\" for newest papers, \"relevance\" for best query matches.",
"enum": [
"relevance",
"submitted",
"updated"
],
"type": "string"
},
"sort_order": {
"default": "descending",
"description": "Sort direction. \"descending\" returns newest/most relevant first.",
"enum": [
"ascending",
"descending"
],
"type": "string"
},
"start": {
"default": 0,
"description": "Pagination offset (0-10000). Use with max_results to page through results. E.g., start=10 with max_results=10 returns results 11-20. Matches beyond offset 10000 + max_results are unreachable by paging — carve the search into submitted_from/submitted_to windows and page within each.",
"maximum": 10000,
"minimum": 0,
"type": "integer"
},
"submitted_from": {
"description": "Earliest submission date to include, inclusive, as a UTC YYYY-MM-DD date. Omit for no lower bound.",
"pattern": "^(\\d{4}-\\d{2}-\\d{2})?$",
"type": "string"
},
"submitted_to": {
"description": "Latest submission date to include, inclusive, as a UTC YYYY-MM-DD date. Omit for no upper bound. Both bounds are inclusive, so consecutive windows (\"2024-01-01\"..\"2024-01-15\" then \"2024-01-16\"..\"2024-01-31\") cover the matches with no gap; a paper submitted at exactly the midnight seam between two windows appears in both, so de-duplicate collected results by paper id. That is the way to reach matches past the start ceiling: split the date range, then page within each window.",
"pattern": "^(\\d{4}-\\d{2}-\\d{2})?$",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "arxiv_search",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"papers",
"effectiveQuery",
"totalFound",
"pageStart"
]
},
{
"required": [
"error"
]
}
],
"properties": {
"cap": {
"description": "The max_results limit applied to this page.",
"type": "number"
},
"effectiveQuery": {
"description": "The query as actually searched, carrying every filter applied — the category subtree and submitted-date window folded into arXiv syntax alongside the supplied terms. Replaying it as `query` with no other filters reproduces this exact result set.",
"type": "string"
},
"error": {
"additionalProperties": {},
"description": "Present when the call failed. Absent on success.",
"properties": {
"code": {
"description": "JSON-RPC error code for this failure.",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
"data": {
"additionalProperties": {},
"properties": {
"reason": {
"description": "Machine-readable failure mode. Declared by this tool: `unknown_category`: Provided category code is not part of the arXiv taxonomy. `rate_limited`: arXiv has throttled requests (HTTP 429 or \"Rate exceeded.\" body). `invalid_request`: arXiv rejected the request (HTTP 4xx other than 429), typically malformed query syntax. `unsupported_query_syntax`: Query translates to a mirror FTS5 expression the search engine cannot parse, typically two operands juxtaposed across a parenthesized group without an explicit operator. `invalid_date_range`: submitted_from or submitted_to is not a real UTC calendar date, or the window starts after it ends. Other values are possible when a failure originates below the handler.",
"examples": [
"unknown_category",
"rate_limited",
"invalid_request",
"unsupported_query_syntax",
"invalid_date_range"
],
"type": "string"
},
"recovery": {
"additionalProperties": {},
"description": "Actionable next step for the caller.",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"type": "object"
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"type": "object"
},
"message": {
"description": "Human-readable description of what went wrong.",
"type": "string"
}
},
"required": [
"code",
"message"
],
"type": "object"
},
"notice": {
"description": "Recovery guidance when results are empty or paging overshot. Absent on successful pages.",
"type": "string"
},
"pageStart": {
"description": "Pagination offset of this result page.",
"type": "number"
},
"papers": {
"description": "Matching papers with full metadata.",
"items": {
"additionalProperties": false,
"description": "arXiv paper metadata — identifier, title, authors, abstract, categories, and links.",
"properties": {
"abstract": {
"description": "Full abstract text.",
"type": "string"
},
"abstract_url": {
"description": "arXiv abstract page URL.",
"type": "string"
},
"authors": {
"description": "Author names.",
"items": {
"type": "string"
},
"type": "array"
},
"categories": {
"description": "All arXiv categories assigned to this paper.",
"items": {
"type": "string"
},
"type": "array"
},
"comment": {
"description": "Author comment (e.g., page count, conference).",
"type": "string"
},
"doi": {
"description": "DOI if available.",
"type": "string"
},
"id": {
"description": "arXiv paper ID (e.g., \"2401.12345v1\").",
"type": "string"
},
"journal_ref": {
"description": "Journal reference if published.",
"type": "string"
},
"pdf_url": {
"description": "Direct PDF download URL.",
"type": "string"
},
"primary_category": {
"description": "Primary arXiv category (e.g., \"cs.CL\").",
"type": "string"
},
"published": {
"description": "Original submission date (ISO 8601).",
"type": "string"
},
"title": {
"description": "Paper title.",
"type": "string"
},
"updated": {
"description": "Last update date (ISO 8601).",
"type": "string"
}
},
"required": [
"id",
"title",
"authors",
"abstract",
"primary_category",
"categories",
"published",
"updated",
"pdf_url",
"abstract_url"
],
"type": "object"
},
"type": "array"
},
"shown": {
"description": "Papers returned on this page.",
"type": "number"
},
"totalFound": {
"description": "Total matching papers reported by arXiv (before pagination).",
"type": "number"
},
"truncated": {
"description": "True when more matching papers exist beyond this page (totalFound > start + shown).",
"type": "boolean"
}
},
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:da813c738a156e9a2e0f056f05fa8536891316f2374c5f051d77f75bda67e02e | sha256sum