Skip to main content
Glama
Paperboy

Paperboy

Official
by sudostash

pdf_info

Read-onlyIdempotent

Report a PDF's page count, file size, version, encryption status, and metadata. Check encrypted files without a password, or use a local prompt to enter one.

Instructions

Report page count, file size, PDF version, encryption status and metadata.

Works on an encrypted file without a password (returns is_encrypted only).

Any password argument can be "ask": the user then types it on a local page, so it never passes through the chat.

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": {
      "input_path": "<input_path>"
    },
    "name": "pdf_info"
  }
}

Input Schema

NameRequiredDescriptionDefault
passwordNo
input_pathYes

Output Schema

NameRequiredDescriptionDefault
noteYes
pathYes
pagesYes
metadataYes
linearizedYes
size_bytesYes
pdf_versionYes
permissionsYes
is_encryptedYes
first_page_size_ptYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.1.1
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "first_page_size_pt": {
      +      "anyOf": [
      +        {
      +          "items": {
      +            "type": "number"
      +          },
      +          "type": "array"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "title": "First Page Size Pt"
      +    },
      +    "is_encrypted": {
      +      "title": "Is Encrypted",
      +      "type": "boolean"
      +    },
      +    "linearized": {
      +      "anyOf": [
      +        {
      +          "type": "boolean"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "title": "Linearized"
      +    },
      +    "metadata": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": {
      +            "type": "string"
      +          },
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "title": "Metadata"
      +    },
      +    "note": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "title": "Note"
      +    },
      +    "pages": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "title": "Pages"
      +    },
      +    "path": {
      +      "title": "Path",
      +      "type": "string"
      +    },
      +    "pdf_version": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "title": "Pdf Version"
      +    },
      +    "permissions": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": {
      +            "type": "boolean"
      +          },
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "title": "Permissions"
      +    },
      +    "size_bytes": {
      +      "title": "Size Bytes",
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "path",
      +    "size_bytes",
      +    "is_encrypted",
      +    "note",
      +    "pages",
      +    "pdf_version",
      +    "linearized",
      +    "metadata",
      +    "first_page_size_pt",
      +    "permissions"
      +  ],
      +  "title": "InfoResult",
      +  "type": "object"
      +}
  2. First observedv0.1.0

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint=false), so the description is not obligated to restate them. It adds real behavioral detail beyond that: on a locked file it degrades gracefully and returns only is_encrypted, and the 'ask' password mode keeps the secret out of the chat transcript. What is missing is any note on failure behavior for a bad/nonexistent path or on cost for very large files.

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 short paragraphs, each earning its place: what it returns first, then the encryption edge case, then the password-handling protocol. No repetition of the schema or annotations and no filler.

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?

An output schema exists, so return values need not be spelled out, and the description correctly focuses on the non-obvious parts: the encrypted-file degradation path and the password sentinel. The remaining gap is the required input_path parameter, whose expected format is never established anywhere in the definition.

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 0%, so the description carries the full burden for two parameters. It does well on 'password', defining the 'ask' sentinel value and the null/no-password case, which the schema cannot convey at all. It says nothing about 'input_path' — no format, allowed schemes, or path-resolution base — leaving the required parameter undocumented in both places.

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

Purpose4/5

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

The opening sentence uses a specific verb ('Report') and enumerates exactly what is returned: page count, file size, PDF version, encryption status, and metadata. That makes the tool's output scope unambiguous. It does not, however, distinguish itself from siblings like get_metadata or check_pdf, which plausibly overlap with 'metadata' and 'encryption status'.

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

Usage Guidelines3/5

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

The description gives useful situational guidance for the encrypted-file case ('Works on an encrypted file without a password') and explains the 'ask' password flow, which implies when to use each mode. It never states when to prefer this over get_metadata or check_pdf, so the agent must infer the division of labor from sibling names.

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