Skip to main content
Glama

Get ORCID Work Details (Bulk)

orcid_get_work_detail
Read-onlyIdempotent

Fetch full work details by put-code from orcid_get_works. Accepts 1–1,000 raw codes, deduplicates in first-occurrence order, and fetches the first 100 distinct codes in one request, returning every record ORCID sends. Returns abstracts, contributors with CRediT roles, the record's external IDs (DOI, PMID, arXiv, ISBN, etc.), citation metadata, journal title, URL, and source provenance. A record listing more than 100 contributors keeps the first 100 plus the requested researcher's own entries, with contributorCount and contributorsTruncated; a citation over 8,192 bytes is left out and flagged by citationOmitted. Per-record errors are returned alongside successful works. deferredPutCodes lists, in request order, the codes past the 100-code fetch cap and any ORCID returned no result for; pass them as put_codes in another call.

Input Schema

NameRequiredDescriptionDefault
orcid_idYesORCID iD — bare (0000-0001-2345-6789) or as an orcid.org URI (https://orcid.org/0000-0001-2345-6789). The check digit may be X or x.
put_codesYesArray of 1–1,000 raw work put-codes from orcid_get_works. Deduplicated in first-occurrence order; the first 100 distinct codes are fetched and the rest return in deferredPutCodes. A record costs what its fields hold: 100 large-collaboration records, even with contributor lists cut to 100, exceed 1 MB.

Output Schema

NameRequiredDescriptionDefault
errorNoPresent when the call failed. Absent on success.
worksNoSuccessfully resolved work detail records.
errorsNoPer-record errors for put-codes that could not be resolved (not found or inaccessible). Empty when all put-codes resolved successfully.
noticeNoDeprecated-iD disclosure naming the primary iD, then separate notices for put-codes past the 100-code fetch cap and put-codes ORCID returned no result for; call again with deferredPutCodes.
orcidIdNoNormalized ORCID iD (bare format).
orcidUriNoFull ORCID URI.
deferredPutCodesNoRequested distinct put-codes no returned work or error settled, in request order: those past the 100-code fetch cap and any ORCID returned no result for. Pass as put_codes in another call. Omitted when all are settled.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • changedInput schema / properties / put_codes / description
      Previous value: -"Array of 1–1,000 raw work put-codes from orcid_get_works. Deduplicated in first-occurrence order; at most 100 distinct codes are fetched once. Every unsettled code is returned in deferredPutCodes for another call, including input-cap and response-budget deferrals."New value: +"Array of 1–1,000 raw work put-codes from orcid_get_works. Deduplicated in first-occurrence order; the first 100 distinct codes are fetched and the rest return in deferredPutCodes. A record costs what its fields hold: 100 large-collaboration records, even with contributor lists cut to 100, exceed 1 MB."
    • changedOutput schema / properties / deferredPutCodes / description
      Previous value: -"Every requested distinct put-code unsettled by an admitted work or identified error, in request order: input-cap, response-budget, or absent upstream results. Pass as put_codes in another call. Omitted when all are settled."New value: +"Requested distinct put-codes no returned work or error settled, in request order: those past the 100-code fetch cap and any ORCID returned no result for. Pass as put_codes in another call. Omitted when all are settled."
    • changedOutput schema / properties / notice / description
      Previous value: -"Separate notices for input-cap, response-budget, and absent-upstream-result deferrals; call again with deferredPutCodes."New value: +"Deprecated-iD disclosure naming the primary iD, then separate notices for put-codes past the 100-code fetch cap and put-codes ORCID returned no result for; call again with deferredPutCodes."
    • changedOutput schema / properties / works / items / properties / sources / items / properties / selfAsserted / description
      Previous value: -"True when the asserting party (the assertion origin when recorded, otherwise the source) is the requested ORCID iD; false when a member organization or another ORCID user asserted the item."New value: +"True when the asserting party (the assertion origin when recorded, otherwise the source) is the record's ORCID iD (orcidId); false when a member organization or another ORCID user asserted the item."
    • changedOutput schema / properties / works / items / properties / workType / description
      Previous value: -"Work type (e.g. journal-article, dataset, software, preprint)."New value: +"Work type (e.g. journal-article, data-set, software, preprint)."
  2. Changed4 schema fields changed
    • changedInput schema / properties / put_codes / description
      Previous value: -"Array of 1–100 work put-codes to fetch. Put-codes are available in the putCode field returned by orcid_get_works. A repeated put-code is fetched once. Any the 64,000-byte response budget leaves out come back in deferredPutCodes."New value: +"Array of 1–1,000 raw work put-codes from orcid_get_works. Deduplicated in first-occurrence order; at most 100 distinct codes are fetched once. Every unsettled code is returned in deferredPutCodes for another call, including input-cap and response-budget deferrals."
    • changedInput schema / properties / put_codes / maxItems
      Previous value: -100New value: +1000
    • changedOutput schema / properties / deferredPutCodes / description
      Previous value: -"Requested put-codes left out because adding them would exceed the 64,000-byte response budget. Pass them as put_codes in another call to fetch them. Omitted when every put-code was fetched."New value: +"Every requested distinct put-code unsettled by an admitted work or identified error, in request order: input-cap, response-budget, or absent upstream results. Pass as put_codes in another call. Omitted when all are settled."
    • changedOutput schema / properties / notice / description
      Previous value: -"Note when the response budget deferred some put-codes — call again with deferredPutCodes."New value: +"Separate notices for input-cap, response-budget, and absent-upstream-result deferrals; call again with deferredPutCodes."
  3. Changed11 schema fields changed
    • changedInput schema / properties / orcid_id / description
      Previous value: -"ORCID iD — bare format (0000-0001-2345-6789) or full URI (https://orcid.org/0000-0001-2345-6789)."New value: +"ORCID iD — bare (0000-0001-2345-6789) or as an orcid.org URI (https://orcid.org/0000-0001-2345-6789). The check digit may be X or x."
    • changedInput schema / properties / orcid_id / pattern
      Previous value: -"^(https?:\\/\\/orcid\\.org\\/)?\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dX]$"New value: +"^(?:(?:https?:\\/\\/)?(?:www\\.)?orcid\\.org\\/)?\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dXx]\\/?$"
    • changedOutput schema / properties / deferredPutCodes / description
      Previous value: -"Requested put-codes left out because the response reached its 64,000-byte budget. Pass them as put_codes in another call to fetch them. Omitted when every put-code was fetched."New value: +"Requested put-codes left out because adding them would exceed the 64,000-byte response budget. Pass them as put_codes in another call to fetch them. Omitted when every put-code was fetched."
    • changedOutput schema / properties / works / items / properties / citation / description
      Previous value: -"Citation metadata, when provided by the depositing system."New value: +"Citation metadata, when provided by the depositing system and no longer than 8,192 bytes."
    • addedOutput schema / properties / works / items / properties / citationOmitted
      Added value: +{
      +  "description": "True when the deposited citation exceeded 8,192 bytes and was left out; the DOI in externalIds still resolves the work. Omitted otherwise.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / works / items / properties / contributorCount
      Added value: +{
      +  "description": "Total contributors on the ORCID record. Present only when contributorsTruncated is true.",
      +  "type": "number"
      +}
    • changedOutput schema / properties / works / items / properties / contributors / description
      Previous value: -"Work contributors with optional roles. May be empty if not deposited."New value: +"Work contributors with optional roles, in upstream order. May be empty if not deposited. When contributorsTruncated is true, holds the first 100 followed by every later entry carrying the requested researcher's iD."
    • addedOutput schema / properties / works / items / properties / contributorsTruncated
      Added value: +{
      +  "description": "True when the record lists more than 100 contributors and the list was cut. Omitted when the list is complete.",
      +  "type": "boolean"
      +}
    • changedOutput schema / properties / works / items / properties / externalIds / description
      Previous value: -"All external identifiers (DOIs, PMIDs, arXiv IDs, ISBNs, etc.)."New value: +"External identifiers on this put-code's own record (DOIs, PMIDs, arXiv IDs, ISBNs, etc.). One source's version of the work, so it can hold fewer identifiers than orcid_get_works lists for the whole work group."
    • addedOutput schema / properties / works / items / properties / sources
      Added value: +{
      +  "description": "The party that added this put-code to the ORCID record. Empty when ORCID records no source; orcid_get_works lists every source of the work group.",
      +  "items": {
      +    "additionalProperties": false,
      +    "description": "A party that asserted this item on the ORCID record.",
      +    "properties": {
      +      "assertionOriginName": {
      +        "description": "Party the source added the item on behalf of, when ORCID records one — usually the researcher, for an item added through a search-and-link tool.",
      +        "type": "string"
      +      },
      +      "name": {
      +        "description": "Name of the person or member organization system that added the item (e.g. a university research information system, Crossref, Scopus - Elsevier). Absent when ORCID records no name.",
      +        "type": "string"
      +      },
      +      "selfAsserted": {
      +        "description": "True when the asserting party (the assertion origin when recorded, otherwise the source) is the requested ORCID iD; false when a member organization or another ORCID user asserted the item.",
      +        "type": "boolean"
      +      }
      +    },
      +    "required": [
      +      "selfAsserted"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / works / items / required
      Previous value: -[
      -  "putCode",
      -  "externalIds",
      -  "contributors"
      -]New value: +[
      +  "putCode",
      +  "externalIds",
      +  "contributors",
      +  "sources"
      +]
  4. Changed3 schema fields changed
    • changedInput schema / properties / put_codes / description
      Previous value: -"Array of 1–100 work put-codes to fetch. Put-codes are available in the putCode field returned by orcid_get_works."New value: +"Array of 1–100 work put-codes to fetch. Put-codes are available in the putCode field returned by orcid_get_works. A repeated put-code is fetched once. Any the 64,000-byte response budget leaves out come back in deferredPutCodes."
    • addedOutput schema / properties / deferredPutCodes
      Added value: +{
      +  "description": "Requested put-codes left out because the response reached its 64,000-byte budget. Pass them as put_codes in another call to fetch them. Omitted when every put-code was fetched.",
      +  "items": {
      +    "description": "Deferred work put-code.",
      +    "type": "number"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / notice
      Added value: +{
      +  "description": "Note when the response budget deferred some put-codes — call again with deferredPutCodes.",
      +  "type": "string"
      +}
  5. 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": [
      +      "orcidId",
      +      "orcidUri",
      +      "works",
      +      "errors"
      +    ]
      +  },
      +  {
      +    "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: `profile_not_found`: The ORCID iD does not correspond to a registered researcher. `fetch_failed`: The ORCID bulk works endpoint returns an unexpected error. Other values are possible when a failure originates below the handler.",
      +          "examples": [
      +            "profile_not_found",
      +            "fetch_failed"
      +          ],
      +          "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: -[
      -  "orcidId",
      -  "orcidUri",
      -  "works",
      -  "errors"
      -]
  6. Changed1 schema field changed
    • changedInput schema / properties / put_codes / description
      Previous value: -"Array of 1–100 work put-codes to fetch. Put-codes are available in the put_code field returned by orcid_get_works."New value: +"Array of 1–100 work put-codes to fetch. Put-codes are available in the putCode field returned by orcid_get_works."
  7. Changed18 schema fields changed
    • removedInput schema / properties / put_code
      Removed value: -{
      -  "description": "Work put-code, available in the put_code field returned by orcid_get_works. Each work group has a unique put-code.",
      -  "exclusiveMinimum": 0,
      -  "maximum": 9007199254740991,
      -  "type": "integer"
      -}
    • addedInput schema / properties / put_codes
      Added value: +{
      +  "description": "Array of 1–100 work put-codes to fetch. Put-codes are available in the put_code field returned by orcid_get_works.",
      +  "items": {
      +    "description": "Work put-code (positive integer).",
      +    "exclusiveMinimum": 0,
      +    "maximum": 9007199254740991,
      +    "type": "integer"
      +  },
      +  "maxItems": 100,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "orcid_id",
      -  "put_code"
      -]New value: +[
      +  "orcid_id",
      +  "put_codes"
      +]
    • removedOutput schema / properties / abstract
      Removed value: -{
      -  "description": "Abstract or short description, when provided.",
      -  "type": "string"
      -}
    • removedOutput schema / properties / citation
      Removed value: -{
      -  "additionalProperties": false,
      -  "description": "Citation metadata, when provided by the depositing system.",
      -  "properties": {
      -    "type": {
      -      "description": "Citation format (e.g. bibtex, formatted-unspecified).",
      -      "type": "string"
      -    },
      -    "value": {
      -      "description": "Citation string in the specified format.",
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "type",
      -    "value"
      -  ],
      -  "type": "object"
      -}
    • removedOutput schema / properties / contributors
      Removed value: -{
      -  "description": "Work contributors with optional roles. May be empty if not deposited.",
      -  "items": {
      -    "additionalProperties": false,
      -    "description": "Work contributor with optional role and ORCID iD.",
      -    "properties": {
      -      "name": {
      -        "description": "Contributor display name or credit name.",
      -        "type": "string"
      -      },
      -      "orcidId": {
      -        "description": "Contributor ORCID iD (bare format), if linked.",
      -        "type": "string"
      -      },
      -      "role": {
      -        "description": "Contributor role (e.g. author, editor, conceptualization, data-curation). May be a CRediT taxonomy term.",
      -        "type": "string"
      -      },
      -      "sequence": {
      -        "description": "Contributor sequence position (first or additional).",
      -        "type": "string"
      -      }
      -    },
      -    "type": "object"
      -  },
      -  "type": "array"
      -}
    • addedOutput schema / properties / errors
      Added value: +{
      +  "description": "Per-record errors for put-codes that could not be resolved (not found or inaccessible). Empty when all put-codes resolved successfully.",
      +  "items": {
      +    "additionalProperties": false,
      +    "description": "Error entry for a put-code that could not be resolved.",
      +    "properties": {
      +      "message": {
      +        "description": "Error message from ORCID (e.g. not found or access denied).",
      +        "type": "string"
      +      },
      +      "putCode": {
      +        "description": "Put-code that produced this error, when identifiable.",
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • removedOutput schema / properties / externalIds
      Removed value: -{
      -  "description": "All external identifiers (DOIs, PMIDs, arXiv IDs, ISBNs, etc.).",
      -  "items": {
      -    "additionalProperties": false,
      -    "description": "External identifier for the work.",
      -    "properties": {
      -      "relationship": {
      -        "description": "Relationship to the work (self or part-of).",
      -        "type": "string"
      -      },
      -      "type": {
      -        "description": "Identifier type (e.g. doi, pmid, arxiv, isbn, ppr).",
      -        "type": "string"
      -      },
      -      "url": {
      -        "description": "Resolver URL for this identifier, if available.",
      -        "type": "string"
      -      },
      -      "value": {
      -        "description": "Identifier value.",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "value"
      -    ],
      -    "type": "object"
      -  },
      -  "type": "array"
      -}
    • removedOutput schema / properties / journalTitle
      Removed value: -{
      -  "description": "Journal or container title, when provided.",
      -  "type": "string"
      -}
    • removedOutput schema / properties / languageCode
      Removed value: -{
      -  "description": "Language code of the work, when provided.",
      -  "type": "string"
      -}
    • removedOutput schema / properties / publicationDate
      Removed value: -{
      -  "description": "Publication date (YYYY, YYYY-MM, or YYYY-MM-DD).",
      -  "type": "string"
      -}
    • removedOutput schema / properties / putCode
      Removed value: -{
      -  "description": "Put-code of this work record.",
      -  "type": "number"
      -}
    • removedOutput schema / properties / subtitle
      Removed value: -{
      -  "description": "Work subtitle, when provided.",
      -  "type": "string"
      -}
    • removedOutput schema / properties / title
      Removed value: -{
      -  "description": "Work title.",
      -  "type": "string"
      -}
    • removedOutput schema / properties / url
      Removed value: -{
      -  "description": "URL for the work, when available.",
      -  "type": "string"
      -}
    • removedOutput schema / properties / workType
      Removed value: -{
      -  "description": "Work type (e.g. journal-article, dataset, software, preprint).",
      -  "type": "string"
      -}
    • addedOutput schema / properties / works
      Added value: +{
      +  "description": "Successfully resolved work detail records.",
      +  "items": {
      +    "additionalProperties": false,
      +    "description": "Full detail record for one work.",
      +    "properties": {
      +      "abstract": {
      +        "description": "Abstract or short description, when provided.",
      +        "type": "string"
      +      },
      +      "citation": {
      +        "additionalProperties": false,
      +        "description": "Citation metadata, when provided by the depositing system.",
      +        "properties": {
      +          "type": {
      +            "description": "Citation format (e.g. bibtex, formatted-unspecified).",
      +            "type": "string"
      +          },
      +          "value": {
      +            "description": "Citation string in the specified format.",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "type",
      +          "value"
      +        ],
      +        "type": "object"
      +      },
      +      "contributors": {
      +        "description": "Work contributors with optional roles. May be empty if not deposited.",
      +        "items": {
      +          "additionalProperties": false,
      +          "description": "Work contributor with optional role and ORCID iD.",
      +          "properties": {
      +            "name": {
      +              "description": "Contributor display name or credit name.",
      +              "type": "string"
      +            },
      +            "orcidId": {
      +              "description": "Contributor ORCID iD (bare format), if linked.",
      +              "type": "string"
      +            },
      +            "role": {
      +              "description": "Contributor role (e.g. author, editor, conceptualization, data-curation). May be a CRediT taxonomy term.",
      +              "type": "string"
      +            },
      +            "sequence": {
      +              "description": "Contributor sequence position (first or additional).",
      +              "type": "string"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "externalIds": {
      +        "description": "All external identifiers (DOIs, PMIDs, arXiv IDs, ISBNs, etc.).",
      +        "items": {
      +          "additionalProperties": false,
      +          "description": "External identifier for the work.",
      +          "properties": {
      +            "relationship": {
      +              "description": "Relationship to the work (self or part-of).",
      +              "type": "string"
      +            },
      +            "type": {
      +              "description": "Identifier type (e.g. doi, pmid, arxiv, isbn, ppr).",
      +              "type": "string"
      +            },
      +            "url": {
      +              "description": "Resolver URL for this identifier, if available.",
      +              "type": "string"
      +            },
      +            "value": {
      +              "description": "Identifier value.",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "type",
      +            "value"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "journalTitle": {
      +        "description": "Journal or container title, when provided.",
      +        "type": "string"
      +      },
      +      "languageCode": {
      +        "description": "Language code of the work, when provided.",
      +        "type": "string"
      +      },
      +      "publicationDate": {
      +        "description": "Publication date (YYYY, YYYY-MM, or YYYY-MM-DD).",
      +        "type": "string"
      +      },
      +      "putCode": {
      +        "description": "Put-code of this work record.",
      +        "type": "number"
      +      },
      +      "subtitle": {
      +        "description": "Work subtitle, when provided.",
      +        "type": "string"
      +      },
      +      "title": {
      +        "description": "Work title.",
      +        "type": "string"
      +      },
      +      "url": {
      +        "description": "URL for the work, when available.",
      +        "type": "string"
      +      },
      +      "workType": {
      +        "description": "Work type (e.g. journal-article, dataset, software, preprint).",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "putCode",
      +      "externalIds",
      +      "contributors"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "orcidId",
      -  "orcidUri",
      -  "putCode",
      -  "externalIds",
      -  "contributors"
      -]New value: +[
      +  "orcidId",
      +  "orcidUri",
      +  "works",
      +  "errors"
      +]
  8. Added

TDQS

A4.6/5.0
Behavior5/5

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

Annotations cover safety (readOnly, idempotent, openWorld), and the description layers on the operationally important behavior: first-occurrence dedup order, a hard 100-code fetch cap, contributor truncation to 100 plus the researcher's own entries with contributorCount/contributorsTruncated flags, the 8,192-byte citation omission with citationOmitted, and per-record errors returned alongside successes.

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

Conciseness4/5

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

Front-loaded with purpose and input contract, then edge cases in descending priority; no filler. The sentences are long and clause-heavy (contributor and citation rules packed into one), which costs a bit of scannability.

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

Completeness5/5

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

Even though an output schema exists, the description pre-empts the surprises an agent would hit: partial results, deferred codes, and truncation flags. For a two-parameter bulk fetch with an output schema, nothing needed to call it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description earns extra by explaining what happens to overflow codes (deferredPutCodes in request order) and that no-result codes also land there, which the schema only partially states. It adds nothing about the orcid_id parameter, but that is already fully documented in the schema.

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 opening sentence gives a specific verb (fetch full details) plus resource (work put-codes) and immediately ties the input to orcid_get_works, distinguishing this from the list-level sibling. The bulk semantics (1–1,000 codes, dedup, 100-code fetch cap) further sharpen what the tool actually does.

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 routes the agent explicitly: codes come from orcid_get_works, and anything returned in deferredPutCodes should be re-passed in another call. That's a clear workflow, though it never states when to prefer orcid_get_works alone instead of drilling into details.

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.