Skip to main content
Glama

Arxiv Get Metadata

arxiv_get_metadata
Read-only

Get full metadata for one or more arXiv papers by ID. Use when you have known IDs from citations, prior search results, or memory. Looks up 10 IDs per call; any further IDs come back in remaining_ids for the next call.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "paper_ids": "<paper_ids>"
    },
    "name": "arxiv_get_metadata"
  }
}

Input Schema

NameRequiredDescriptionDefault
paper_idsYesarXiv paper IDs, up to 100. The first 10 distinct well-formed IDs are looked up; the rest come back in remaining_ids to pass to the next call. An ID repeated in any accepted spelling is looked up once, while different versions of one paper stay separate lookups. Accepted forms: "2401.12345", "2401.12345v2" (a pinned version), or a pre-2007 ID like "hep-th/9901001" (archive spelled as arXiv issued it), each optionally prefixed "arXiv:", or an arxiv.org abs, pdf, or html URL, with or without https:// or a ?query or #fragment. An ID in any other form is reported in not_found with reason invalid_id and is not looked up.

Output Schema

NameRequiredDescriptionDefault
errorNoPresent when the call failed. Absent on success.
papersNoPapers found, in request order, one per distinct ID. Fewer than requested when an ID repeats an earlier one, is malformed, absent from arXiv, a version arXiv will not serve, one whose live lookup failed behind the local mirror, or past the first 10 distinct well-formed IDs.
not_foundNoPer-input explanations for inputs that could not be returned. Absent when nothing failed.
remaining_idsNoDistinct well-formed IDs past the first 10, in canonical form and request order, that this call did not look up. Pass them as paper_ids in the next call. Absent when every well-formed ID was looked up.
totalSucceededNoNumber of successful items in 'papers'

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • changedInput schema / properties / paper_ids / description
      Previous value: -"arXiv paper IDs, up to 100. The first 10 well-formed IDs are looked up; the rest come back in remaining_ids to pass to the next call. Accepted forms: \"2401.12345\", \"2401.12345v2\" (a pinned version), or a pre-2007 ID like \"hep-th/9901001\" (archive spelled as arXiv issued it), each optionally prefixed \"arXiv:\", or an arxiv.org abs, pdf, or html URL, with or without https:// or a ?query or #fragment. An ID in any other form is reported in not_found with reason invalid_id and is not looked up."New value: +"arXiv paper IDs, up to 100. The first 10 distinct well-formed IDs are looked up; the rest come back in remaining_ids to pass to the next call. An ID repeated in any accepted spelling is looked up once, while different versions of one paper stay separate lookups. Accepted forms: \"2401.12345\", \"2401.12345v2\" (a pinned version), or a pre-2007 ID like \"hep-th/9901001\" (archive spelled as arXiv issued it), each optionally prefixed \"arXiv:\", or an arxiv.org abs, pdf, or html URL, with or without https:// or a ?query or #fragment. An ID in any other form is reported in not_found with reason invalid_id and is not looked up."
    • changedOutput schema / properties / papers / description
      Previous value: -"Papers found, in request order. Fewer than requested when an ID is malformed, absent from arXiv, a version arXiv will not serve, one whose live lookup failed behind the local mirror, or past the first 10 well-formed IDs."New value: +"Papers found, in request order, one per distinct ID. Fewer than requested when an ID repeats an earlier one, is malformed, absent from arXiv, a version arXiv will not serve, one whose live lookup failed behind the local mirror, or past the first 10 distinct well-formed IDs."
    • changedOutput schema / properties / papers / items / properties / published / description
      Previous value: -"Original submission date (ISO 8601)."New value: +"Original submission instant, ISO 8601 UTC (e.g., \"2018-10-11T00:50:01Z\")."
    • changedOutput schema / properties / papers / items / properties / updated / description
      Previous value: -"Last update date (ISO 8601)."New value: +"Last update instant, ISO 8601 UTC (e.g., \"2018-10-11T00:50:01Z\")."
    • changedOutput schema / properties / remaining_ids / description
      Previous value: -"Well-formed IDs past the first 10, in canonical form and request order, that this call did not look up. Pass them as paper_ids in the next call. Absent when every well-formed ID was looked up."New value: +"Distinct well-formed IDs past the first 10, in canonical form and request order, that this call did not look up. Pass them as paper_ids in the next call. Absent when every well-formed ID was looked up."
  2. Changed4 schema fields changed
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"Machine-readable failure mode. Declared by this tool: `invalid_id`: None of the requested IDs is an arXiv identifier in an accepted form. `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). Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `invalid_id`: None of the requested IDs is an arXiv identifier in an accepted form. `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. `version_not_served`: Every requested ID pinned a superseded version of a pre-2007 paper that arXiv's API answers HTTP 500 for. The version exists, but its metadata cannot be returned. `rate_limited`: arXiv has throttled requests (HTTP 429 or \"Rate exceeded.\" body). `invalid_request`: arXiv rejected the request (HTTP 4xx other than 429). Other values are possible when a failure originates below the handler."
    • changedOutput schema / properties / error / properties / data / properties / reason / examples
      Previous value: -[
      -  "invalid_id",
      -  "no_match",
      -  "version_unavailable",
      -  "rate_limited",
      -  "invalid_request"
      -]New value: +[
      +  "invalid_id",
      +  "no_match",
      +  "version_unavailable",
      +  "version_not_served",
      +  "rate_limited",
      +  "invalid_request"
      +]
    • changedOutput schema / properties / not_found / items / properties / reason / enum
      Previous value: -[
      -  "not_in_arxiv",
      -  "version_not_in_mirror",
      -  "invalid_id"
      -]New value: +[
      +  "not_in_arxiv",
      +  "version_not_in_mirror",
      +  "version_not_served",
      +  "live_lookup_failed",
      +  "invalid_id"
      +]
    • changedOutput schema / properties / papers / description
      Previous value: -"Papers found, in request order. Fewer than requested when an ID is malformed, absent from arXiv, or past the first 10 well-formed IDs."New value: +"Papers found, in request order. Fewer than requested when an ID is malformed, absent from arXiv, a version arXiv will not serve, one whose live lookup failed behind the local mirror, or past the first 10 well-formed IDs."
  3. Changed12 schema fields changed
    • removedInput schema / properties / paper_ids / anyOf
      Removed value: -[
      -  {
      -    "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"
      -  }
      -]
    • changedInput schema / properties / paper_ids / description
      Previous value: -"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\"."New value: +"arXiv paper IDs, up to 100. The first 10 well-formed IDs are looked up; the rest come back in remaining_ids to pass to the next call. Accepted forms: \"2401.12345\", \"2401.12345v2\" (a pinned version), or a pre-2007 ID like \"hep-th/9901001\" (archive spelled as arXiv issued it), each optionally prefixed \"arXiv:\", or an arxiv.org abs, pdf, or html URL, with or without https:// or a ?query or #fragment. An ID in any other form is reported in not_found with reason invalid_id and is not looked up."
    • addedInput schema / properties / paper_ids / items
      Added value: +{
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / paper_ids / maxItems
      Added value: +100
    • addedInput schema / properties / paper_ids / minItems
      Added value: +1
    • addedInput schema / properties / paper_ids / type
      Added value: +"array"
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"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."New value: +"Machine-readable failure mode. Declared by this tool: `invalid_id`: None of the requested IDs is an arXiv identifier in an accepted form. `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). Other values are possible when a failure originates below the handler."
    • changedOutput schema / properties / error / properties / data / properties / reason / examples
      Previous value: -[
      -  "no_match",
      -  "version_unavailable",
      -  "rate_limited",
      -  "invalid_request"
      -]New value: +[
      +  "invalid_id",
      +  "no_match",
      +  "version_unavailable",
      +  "rate_limited",
      +  "invalid_request"
      +]
    • changedOutput schema / properties / not_found / items / properties / id / description
      Previous value: -"arXiv ID that returned no data."New value: +"Requested ID that returned no data — in canonical form when it was looked up, as sent when it is not an arXiv ID."
    • changedOutput schema / properties / not_found / items / properties / reason / enum
      Previous value: -[
      -  "not_in_arxiv",
      -  "version_not_in_mirror"
      -]New value: +[
      +  "not_in_arxiv",
      +  "version_not_in_mirror",
      +  "invalid_id"
      +]
    • changedOutput schema / properties / papers / description
      Previous value: -"Papers found. May be fewer than requested if some IDs are invalid."New value: +"Papers found, in request order. Fewer than requested when an ID is malformed, absent from arXiv, or past the first 10 well-formed IDs."
    • addedOutput schema / properties / remaining_ids
      Added value: +{
      +  "description": "Well-formed IDs past the first 10, in canonical form and request order, that this call did not look up. Pass them as paper_ids in the next call. Absent when every well-formed ID was looked up.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  4. Changed6 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedInput schema / additionalProperties
      Added value: +false
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedOutput schema / anyOf
      Added value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "error"
      +      ]
      +    },
      +    "required": [
      +      "papers",
      +      "totalSucceeded"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "error"
      +    ]
      +  }
      +]
    • addedOutput schema / properties / error
      Added value: +{
      +  "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"
      +}
    • removedOutput schema / required
      Removed value: -[
      -  "papers",
      -  "totalSucceeded"
      -]
  5. Changed2 schema fields changed
    • changedOutput schema / properties / not_found / items / description
      Previous value: -"A requested ID that arXiv did not return."New value: +"A requested ID that could not be returned, with the reason it was missed."
    • changedOutput schema / properties / not_found / items / properties / reason / enum
      Previous value: -[
      -  "not_in_arxiv"
      -]New value: +[
      +  "not_in_arxiv",
      +  "version_not_in_mirror"
      +]
  6. Changed8 schema fields changed
    • changedOutput schema / properties / not_found / description
      Previous value: -"Paper IDs that returned no results."New value: +"Per-input explanations for inputs that could not be returned. Absent when nothing failed."
    • addedOutput schema / properties / not_found / items / additionalProperties
      Added value: +false
    • addedOutput schema / properties / not_found / items / description
      Added value: +"A requested ID that arXiv did not return."
    • addedOutput schema / properties / not_found / items / properties
      Added value: +{
      +  "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"
      +    ],
      +    "type": "string"
      +  }
      +}
    • addedOutput schema / properties / not_found / items / required
      Added value: +[
      +  "id",
      +  "reason"
      +]
    • changedOutput schema / properties / not_found / items / type
      Previous value: -"string"New value: +"object"
    • addedOutput schema / properties / totalSucceeded
      Added value: +{
      +  "description": "Number of successful items in 'papers'",
      +  "maximum": 9007199254740991,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "papers"
      -]New value: +[
      +  "papers",
      +  "totalSucceeded"
      +]
  7. Changed2 schema fields changed
    • changedInput schema / properties / paper_ids / anyOf
      Previous value: -[
      -  {
      -    "minLength": 1,
      -    "type": "string"
      -  },
      -  {
      -    "items": {
      -      "minLength": 1,
      -      "type": "string"
      -    },
      -    "maxItems": 10,
      -    "minItems": 1,
      -    "type": "array"
      -  }
      -]New value: +[
      +  {
      +    "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"
      +  }
      +]
    • addedOutput schema / properties / papers / items / description
      Added value: +"arXiv paper metadata — identifier, title, authors, abstract, categories, and links."
  8. First observed

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so safety is covered. The description adds useful behavioral context beyond annotations by disclosing the 10-ID lookup limit and the remaining_ids continuation pattern.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with purpose and usage, with no wasted text. The batching behavior is summarized compactly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and exhaustive parameter documentation, the description is largely complete for invocation. It could still mention that invalid IDs are returned in not_found, but the schema already covers that edge case.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the sole parameter is documented in detail, including accepted ID formats and invalid-ID handling. The description adds a brief batching summary but does not meaningfully extend beyond the schema's parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Get full metadata for one or more arXiv papers by ID.' It also clarifies that it works on known IDs, which distinguishes it from sibling search-oriented tools such as arxiv_search_papers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear usage context: 'Use when you have known IDs from citations, prior search results, or memory.' It does not explicitly name alternatives for unknown-ID discovery, but the intended context is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.