Skip to main content
Glama
chrisguidry

paperless-mcp

by chrisguidry

List correspondents

list_correspondents
Read-only

List correspondents—the people and organizations documents are from or to—and return their IDs for filtering document searches by correspondent_id.

Instructions

List correspondents: the people and organizations that documents are from or to.

Use the returned IDs with search_documents(correspondent_id=...).

Input Schema

NameRequiredDescriptionDefault
idsNoReturn only the correspondents with these IDs (default: none)
pageNoPage number, starting at 1 (default: 1)
page_sizeNoNumber of correspondents per page (default: 100)
name_containsNoCase-insensitive substring of the name (default: none)

Output Schema

NameRequiredDescriptionDefault
paginationYesThe position of one page of results in the full result set.
correspondentsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety and scope are covered externally. The description adds only that IDs are intended for search_documents lookups; it says nothing about ordering, completeness of the listing, or pagination behavior beyond what the schema already encodes.

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?

Two short sentences, zero filler, with the entity definition front-loaded and the follow-up pattern second. Nothing could be removed without losing information.

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 full schema coverage, an output schema, and annotations covering the safety profile, the description is complete enough to call correctly. The only missing element is guidance on which filter (name_contains vs. ids) to reach for, which is minor given the schema.

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 every parameter (ids, page, page_size, name_contains) is documented in the schema, so the baseline of 3 applies. The description adds no meaning beyond the schema – notably it does not explain that name_contains is a case-insensitive substring or that ids can batch lookups.

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?

States a specific verb (List) and resource (correspondents), and defines the entity as 'the people and organizations that documents are from or to,' which makes it distinguishable from sibling list_* tools covering tags, types, and paths. It does not explicitly name any sibling it is not, so it falls short of a 5.

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 second sentence gives a downstream usage pattern ('Use the returned IDs with search_documents(correspondent_id=...)'), which implies why and when to call this tool, but there is no explicit when-to-use vs. alternative guidance and no mention of when not to call it or how to narrow results with name_contains.

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