Skip to main content
Glama
Paperboy

Paperboy

Official
by sudostash

get_outline

Read-onlyIdempotent

List a PDF's bookmarks in reading order with levels, titles, target pages, links, or actions so you can edit and save changes via set_outline.

Instructions

List a PDF's bookmarks (its outline) in reading order: each one's level (1 = top, 2 = nested under the one before, ...), title and 1-based target page (null if it doesn't go to a page here). Bookmarks that open a web or email address have link set; ones that do something else (e.g. run a script) have action set. truncated means some were left out (over 10,000, or nested over 20 levels). Edit the list and pass it to set_outline to change them.

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": "get_outline"
  }
}

Input Schema

NameRequiredDescriptionDefault
passwordNo
input_pathYes

Output Schema

NameRequiredDescriptionDefault
pathYes
entriesYes
truncatedYes
page_countYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.1.1

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the readOnly/idempotent/openWorld annotations, it discloses truncation behavior (over 10,000 entries or nesting deeper than 20), the meaning of level/link/action/null page, and that password can be 'ask' so it never passes through chat. These are concrete behavioral facts the annotations do not carry.

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?

The description is front-loaded with the core action, and each sentence adds useful information about return fields, limits, or escalation to set_outline. It is slightly dense, but there is little redundancy.

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?

For a two-parameter read tool with annotations and an output schema, the description covers everything needed: input semantics, return-field meaning, truncation limits, and the follow-up tool. Nothing an agent needs in order to invoke 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 0%, so the description must compensate. It explains the password parameter's special 'ask' value well, but input_path gets no explanation, though its meaning is largely self-evident from the name.

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 opens with a specific verb and resource, 'List a PDF's bookmarks (its outline) in reading order', and then defines each returned field, so an agent knows exactly what it gets and how it differs from sibling tools such as set_outline or get_metadata.

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 explicitly routes editing to the sibling: 'Edit the list and pass it to set_outline to change them.' It also explains the 'ask' password mode. It does not state when not to use this tool, but the read-only purpose is unambiguous.

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