fetch
Fetch full document content for a search result.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| document_id | No |
Fetch full document content for a search result.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| document_id | No |
Changes observed during successful MCP inspections.
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#"Input schema / additionalPropertiesAdded value: +falseInput schema / properties / document_id / anyOfRemoved value: -[
- {
- "type": "string"
- },
- {
- "type": "null"
- }
-]Input schema / properties / document_id / defaultRemoved value: -nullInput schema / properties / document_id / titleRemoved value: -"Document Id"Input schema / properties / document_id / typeAdded value: +"string"Input schema / properties / id / anyOfRemoved value: -[
- {
- "type": "string"
- },
- {
- "type": "null"
- }
-]Input schema / properties / id / defaultRemoved value: -nullInput schema / properties / id / titleRemoved value: -"Id"Input schema / properties / id / typeAdded value: +"string"Input schema / titleRemoved value: -"fetchArguments"Output schema / (root)Previous value: -{
- "$defs": {
- "Annotations": {
- "additionalProperties": true,
- "properties": {
- "audience": {
- "anyOf": [
- {
- "items": {
- "enum": [
- "user",
- "assistant"
- ],
- "type": "string"
- },
- "type": "array"
- },
- {
- "type": "null"
- }
- ],
- "default": null,
- "title": "Audience"
- },
- "priority": {
- "anyOf": [
- {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- {
- "type": "null"
- }
- ],
- "default": null,
- "title": "Priority"
- }
- },
- "title": "Annotations",
- "type": "object"
- },
- "AudioContent": {
- "additionalProperties": true,
- "description": "Audio content for a message.",
- "properties": {
- "_meta": {
- "anyOf": [
- {
- "additionalProperties": true,
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "default": null,
- "title": "Meta"
- },
- "annotations": {
- "anyOf": [
- {
- "$ref": "#/$defs/Annotations"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "data": {
- "title": "Data",
- "type": "string"
- },
- "mimeType": {
- "title": "Mimetype",
- "type": "string"
- },
- "type": {
- "const": "audio",
- "title": "Type",
- "type": "string"
- }
- },
- "required": [
- "type",
- "data",
- "mimeType"
- ],
- "title": "AudioContent",
- "type": "object"
- },
- "BlobResourceContents": {
- "additionalProperties": true,
- "description": "Binary contents of a resource.",
- "properties": {
- "_meta": {
- "anyOf": [
- {
- "additionalProperties": true,
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "default": null,
- "title": "Meta"
- },
- "blob": {
- "title": "Blob",
- "type": "string"
- },
- "mimeType": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "default": null,
- "title": "Mimetype"
- },
- "uri": {
- "format": "uri",
- "minLength": 1,
- "title": "Uri",
- "type": "string"
- }
- },
- "required": [
- "uri",
- "blob"
- ],
- "title": "BlobResourceContents",
- "type": "object"
- },
- "EmbeddedResource": {
- "additionalProperties": true,
- "description": "The contents of a resource, embedded into a prompt or tool call result.\n\nIt is up to the client how best to render embedded resources for the benefit\nof the LLM and/or the user.",
- "properties": {
- "_meta": {
- "anyOf": [
- {
- "additionalProperties": true,
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "default": null,
- "title": "Meta"
- },
- "annotations": {
- "anyOf": [
- {
- "$ref": "#/$defs/Annotations"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "resource": {
- "anyOf": [
- {
- "$ref": "#/$defs/TextResourceContents"
- },
- {
- "$ref": "#/$defs/BlobResourceContents"
- }
- ],
- "title": "Resource"
- },
- "type": {
- "const": "resource",
- "title": "Type",
- "type": "string"
- }
- },
- "required": [
- "type",
- "resource"
- ],
- "title": "EmbeddedResource",
- "type": "object"
- },
- "ImageContent": {
- "additionalProperties": true,
- "description": "Image content for a message.",
- "properties": {
- "_meta": {
- "anyOf": [
- {
- "additionalProperties": true,
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "default": null,
- "title": "Meta"
- },
- "annotations": {
- "anyOf": [
- {
- "$ref": "#/$defs/Annotations"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "data": {
- "title": "Data",
- "type": "string"
- },
- "mimeType": {
- "title": "Mimetype",
- "type": "string"
- },
- "type": {
- "const": "image",
- "title": "Type",
- "type": "string"
- }
- },
- "required": [
- "type",
- "data",
- "mimeType"
- ],
- "title": "ImageContent",
- "type": "object"
- },
- "ResourceLink": {
- "additionalProperties": true,
- "description": "A resource that the server is capable of reading, included in a prompt or tool call result.\n\nNote: resource links returned by tools are not guaranteed to appear in the results of `resources/list` requests.",
- "properties": {
- "_meta": {
- "anyOf": [
- {
- "additionalProperties": true,
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "default": null,
- "title": "Meta"
- },
- "annotations": {
- "anyOf": [
- {
- "$ref": "#/$defs/Annotations"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "description": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "default": null,
- "title": "Description"
- },
- "mimeType": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "default": null,
- "title": "Mimetype"
- },
- "name": {
- "title": "Name",
- "type": "string"
- },
- "size": {
- "anyOf": [
- {
- "type": "integer"
- },
- {
- "type": "null"
- }
- ],
- "default": null,
- "title": "Size"
- },
- "title": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "default": null,
- "title": "Title"
- },
- "type": {
- "const": "resource_link",
- "title": "Type",
- "type": "string"
- },
- "uri": {
- "format": "uri",
- "minLength": 1,
- "title": "Uri",
- "type": "string"
- }
- },
- "required": [
- "name",
- "uri",
- "type"
- ],
- "title": "ResourceLink",
- "type": "object"
- },
- "TextContent": {
- "additionalProperties": true,
- "description": "Text content for a message.",
- "properties": {
- "_meta": {
- "anyOf": [
- {
- "additionalProperties": true,
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "default": null,
- "title": "Meta"
- },
- "annotations": {
- "anyOf": [
- {
- "$ref": "#/$defs/Annotations"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "text": {
- "title": "Text",
- "type": "string"
- },
- "type": {
- "const": "text",
- "title": "Type",
- "type": "string"
- }
- },
- "required": [
- "type",
- "text"
- ],
- "title": "TextContent",
- "type": "object"
- },
- "TextResourceContents": {
- "additionalProperties": true,
- "description": "Text contents of a resource.",
- "properties": {
- "_meta": {
- "anyOf": [
- {
- "additionalProperties": true,
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "default": null,
- "title": "Meta"
- },
- "mimeType": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "default": null,
- "title": "Mimetype"
- },
- "text": {
- "title": "Text",
- "type": "string"
- },
- "uri": {
- "format": "uri",
- "minLength": 1,
- "title": "Uri",
- "type": "string"
- }
- },
- "required": [
- "uri",
- "text"
- ],
- "title": "TextResourceContents",
- "type": "object"
- }
- },
- "additionalProperties": true,
- "description": "The server's response to a tool call.",
- "properties": {
- "_meta": {
- "anyOf": [
- {
- "additionalProperties": true,
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "default": null,
- "title": "Meta"
- },
- "content": {
- "items": {
- "anyOf": [
- {
- "$ref": "#/$defs/TextContent"
- },
- {
- "$ref": "#/$defs/ImageContent"
- },
- {
- "$ref": "#/$defs/AudioContent"
- },
- {
- "$ref": "#/$defs/ResourceLink"
- },
- {
- "$ref": "#/$defs/EmbeddedResource"
- }
- ]
- },
- "title": "Content",
- "type": "array"
- },
- "isError": {
- "default": false,
- "title": "Iserror",
- "type": "boolean"
- },
- "structuredContent": {
- "anyOf": [
- {
- "additionalProperties": true,
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "default": null,
- "title": "Structuredcontent"
- }
- },
- "required": [
- "content"
- ],
- "title": "CallToolResult",
- "type": "object"
-}New value: +nullDoes the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It implies a read-only operation via 'Fetch,' but fails to disclose return format, error handling, rate limits, or whether the content is cached or retrieved live. Lacks critical behavioral context for a tool interacting with multiple academic APIs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise single sentence with no filler words. However, given the complexity (2 undocumented parameters, 20+ siblings, no output schema), this brevity results in underspecification. The sentence earns its place, but the description needs additional sentences to be complete.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Inadequate for the tool's complexity. With 2 undocumented parameters, no annotations, no output schema, and a crowded namespace of similar tools, the description must explain parameter semantics, return values, and tool selection logic. It provides none of these, leaving critical gaps in the agent's understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage for the two parameters (id, document_id), the description must compensate but fails to do so adequately. While 'search result' implies the semantic meaning of one parameter, it does not explain the relationship between 'id' and 'document_id' (whether they are alternatives, sequential, or different ID types), leaving parameter selection ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the basic action (Fetch) and resource (full document content) clearly, but fails to differentiate from the numerous sibling read_* and download_* tools (e.g., read_arxiv_paper, download_crossref). The phrase 'for a search result' hints at the input source but doesn't clarify if this is a generic tool or specific to certain sources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no explicit guidance on when to use this tool versus the source-specific read_* tools or the download_* tools. The phrase 'for a search result' implies it follows a search operation, but doesn't state prerequisites or contraindications (e.g., whether it requires a specific search tool first).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Add one secure layer between your agents and this server.