Skip to main content
Glama

PaperOffice AI

Server Details

Built for companies. Ready for AI agents. PaperOffice is the headless DMS your agent can actually operate: one MCP endpoint to search, read, upload, extract and sign business documents — no UI, no glue code.

What the tools do: full-text and semantic search across workspaces · read existing OCR text without a new job · three-step upload with presigned URLs · AI-OCR (text, line boxes, tables) · structured extraction for invoices and 60+ document types (IDP) · PDF generation from Markdown/HTML · e

Ownership verified
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.7/5.0

Scored across 14 tools

Disambiguation4/5

Most tools have clearly distinct purposes (create, get, search, list folders, extract invoice). Some overlap exists between po_documents_get (document identity/state) and po_documents_text_get (OCR/fulltext), but descriptions differentiate them adequately. The meta-tools (call_read/call_write) are distinct from regular operations.

Naming Consistency4/5

All tools share the po_ prefix and use lowercase snake_case. Within resource groups, conventions are mostly consistent (e.g., po_documents_search, po_documents_get, po_documents_folders_list), though some mix verb-first (create_from_content) and noun+verb (tags_list, upload_url_get). No wildly chaotic naming, but not perfectly uniform.

Tool Count5/5

With 14 tools, the server covers document management, extraction, async jobs, workspace listing, and a meta-tool layer. This is well within the ideal 3-15 range and feels scoped appropriately for a document processing service.

Completeness3/5

The surface covers creation (create_from_content, upload_url_get), retrieval (get, text_get), search, and async job polling. However, there is no explicit update or delete document tool, and no direct 'list all documents' endpoint—search may compensate, but the lack of modify/remove operations is a notable gap for full lifecycle coverage.

Available Tools

14 tools
po_documents_create_from_contentDocuments Create From ContentAInspect

WRITES DATA. Creates or changes data in the workspace. Create a PDF document from Markdown or HTML content in a workspace (output is always PDF; optional idempotency_key makes retries safe).

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoDocument title (also used as the filename)
contentYesMarkdown or HTML source (required). Not html_content.
languageNoLanguage for formatting (de/en)de
metadataNoMetadata as key-value pairs (stored as IDP fields).
priorityNoLEGACY queue weight (numeric). Prefer processing_lane (Start-SLA). If processing_lane is set, the lane wins. Do not use as the public SLA product.
custom_cssNoAdditionals CSS for the PDF-Layout
footer_htmlNoHTML for footer
header_htmlNoHTML for page header
content_typeNoInput format: markdown (default) or html. HTML is sanitized: scripts, frames, forms, event handlers and remote resources are removed.markdown
workspace_idYesTarget workspace ID (required). Use po_workspaces_list to find valid workspace IDs.
auto_classifyNoRequest an additional explicit classification run after creation. This flag does NOT switch off the workspace AI-DMS automation: if the target workspace has AI-DMS enabled, the new document is processed and charged regardless of this flag (see processing_policy in the response). Check the workspace with po_workspaces_list (ai_dms_mode) before creating.
output_formatNoOnly "pdf" is supported; any other value is rejected with UNSUPPORTED_FORMAT.pdf
idempotency_keyNoOptional client-chosen key (8-128 chars). Same key + same payload within 24h replays the stored document (idempotent_replay=true, charged_this_request=0). Same key + changed payload is rejected with IDEMPOTENCY_CONFLICT (HTTP 409) — no second document, no charge. Use a new key for changed content.
processing_laneNoStart-SLA lane (wait-to-start guarantee, not completion). Values: no_sla (fair use ×1), sla_24h (×1.5), sla_12h (×2), sla_6h (×3), sla_1h (×4), instant (×5 interactive start). Prefer this over legacy numeric priority. If omitted: workspace default_processing_lane, else no_sla.

Output Schema

ParametersJSON Schema
NameRequiredDescription
hintNo
textNo
pofidNo
job_idNo
statusNo
detailsNo
messageNo
_warningsNo
file_nameNo
retryableNo
error_codeNo
http_statusNo
display_nameNo
documents_idNo
workspace_idNo
_billing_summaryNo

TDQS

A3.9/5.0
Behavior3/5

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

The 'WRITES DATA' warning duplicates the readOnlyHint=false annotation, and 'Creates or changes data' is vague about effects. It does add useful behavior beyond annotations ('output is always PDF; optional idempotency_key makes retries safe'), but it omits side-effect context like charges or workspace AI-DMS processing that the schema hints at.

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 short and front-loaded with the write warning. However, 'WRITES DATA' and 'Creates or changes data in the workspace' are redundant, so it is not perfectly economical.

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?

For a 14-parameter write tool, the description is minimal, but the input schema is exhaustive and an output schema exists. The description provides the core purpose, output format, and retry safety, which is enough to select and invoke the tool correctly when combined with 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%, so the schema already documents every parameter in detail. The description adds only general context about content format and retries, not new parameter-level meaning.

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 uses a specific verb and resource: 'Create a PDF document from Markdown or HTML content in a workspace.' It also states output is always PDF, which clearly distinguishes it from sibling document tools like po_documents_search or po_documents_upload_url_get.

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 gives a clear use context: creating a PDF from Markdown/HTML and using an idempotency_key for safe retries. It does not explicitly name alternatives or give exclusion criteria, so it falls short of a 5.

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

po_documents_folders_listList document foldersA
Read-onlyIdempotent
Inspect

READ-ONLY. Returns data, changes nothing. List document folders (not files).

ParametersJSON Schema
NameRequiredDescriptionDefault
workspace_idYesWorkspace ID. Returns document_folders (document folders/collections) only — NOT individual files. Use po_documents_search with query="*" to list documents.

TDQS

A4.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, and the description repeats 'READ-ONLY' and 'changes nothing'. It adds scope context ('not files') but no new behavioral details such as pagination, limits, or response format beyond what annotations already convey.

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 short and front-loaded with the safety profile, but 'READ-ONLY' and 'Returns data, changes nothing' are redundant with each other and with annotations. It is still concise and every remaining sentence earns its place.

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 single-parameter read-only list tool with full annotation coverage, the description plus schema fully explain what the tool returns, what it excludes, and how to list files instead. No critical information needed for correct invocation 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 schema documents workspace_id fully. The parameter description adds semantic value by clarifying that it returns only document folders/collections and not files, which goes beyond the bare 'Workspace ID' label and helps the agent set correct expectations.

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 uses a specific verb and resource: 'List document folders (not files)'. It clearly distinguishes the tool's scope from file-related siblings, and the input schema reinforces this by noting it returns 'document_folders (document folders/collections) only' and points to po_documents_search for files.

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

Usage Guidelines5/5

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

The schema parameter description explicitly says 'Use po_documents_search with query="*" to list documents', naming the exact alternative and condition. This gives the agent unambiguous when-to-use guidance versus the main sibling tool.

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

po_documents_getGet document details and metadataA
Read-onlyIdempotent
Inspect

READ-ONLY. Returns data, changes nothing. Get document identity, processing state and compact trust.

ParametersJSON Schema
NameRequiredDescriptionDefault
pofidNoPaperOffice File ID (POFID). Copy byte-for-byte from po_documents_search. Hash prefix uses PaperOffice encoding (SHA-256 with digit 0 stored as letter O) — never replace O with 0. At least one of pofid or documents_id MUST be provided.
compactNoCompact mode (default true): core identity, classification, dates, summary, sender/recipient, amounts when present, plus capabilities and processing_state.
resolveNoVersioning: latest = return the CURRENT version of the document line even if pofid points to an older version (response.document.resolved_to_latest=true, requested_pofid keeps the input). Default exact = the given version.exact
documents_idNoNumeric document ID — alternative to pofid. At least one of pofid or documents_id MUST be provided.
include_pages_ocrNoWhen false (default), pages_ocr is omitted from the response — use po_documents_text_get for OCR text. Set true only when per-page OCR is required.

Output Schema

ParametersJSON Schema
NameRequiredDescription
hintNo
textNo
pofidNo
detailsNo
messageNo
summaryNo
currencyNo
_warningsNo
file_nameNo
retryableNo
error_codeNo
enforcementNo
http_statusNo
total_pagesNoPage count on the basis named in page_count_basis: source file pages, or rendered pages for Markdown/DOCX/XLSX/EML (then total_pages_source holds the source count)
capabilitiesNo
display_nameNo
documents_idNo
total_amountNo
workspace_idNo
document_typeNo
page_integrityNo
workspace_nameNo
_billing_summaryNo
page_count_basisNo
processing_stateNo
original_file_nameNo
total_pages_renderedNo
write_tools_in_profileNoWhether the write tool is registered on this connector (not a permission)
extraction_capabilitiesNo
effective_write_permissionsNoDocument capability ∩ token ACL, enforced server-side

TDQS

A3.8/5.0
Behavior3/5

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

The description reinforces the annotations by explicitly stating 'READ-ONLY' and 'changes nothing', matching readOnlyHint, idempotentHint, and destructiveHint. It adds little beyond those annotations, and it does not disclose versioning behavior or other potential gotchas, though the output schema covers return shape.

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?

The description is two short, front-loaded fragments with the most important behavioral signal ('READ-ONLY. Returns data, changes nothing') placed first. There is no filler, and every phrase pulls its weight.

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?

The tool is well-covered overall because the detailed input schema and output schema carry versioning, OCR, and return-shape information, while the description states the read-only contract. The narrative is slightly incomplete at the selection level because it doesn't connect this tool to po_documents_text_get or explain where pofid comes from, though the parameter descriptions partially compensate.

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 the parameter descriptions are already rich, covering pofid encoding, exact versus latest resolution, and pages_ocr behavior. The main description adds no parameter-level meaning, so the baseline of 3 applies.

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 starts with 'READ-ONLY. Returns data, changes nothing' and names the specific resource and information returned: document identity, processing state, and compact trust. This clearly distinguishes it as a metadata/details getter rather than a write, search, or OCR-text retrieval tool.

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 conveys that this is for read-only retrieval of document details, which gives clear context. However, it does not explicitly say when not to use it or name alternatives such as po_documents_text_get or po_documents_search; routing hints are largely left to the parameter descriptions.

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

po_documents_tags_listList document tagsA
Read-onlyIdempotent
Inspect

READ-ONLY. Returns data, changes nothing. List tags in a workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
pofidNoPaperOffice File ID (optional when documents_id is provided)
documents_idNoNumeric document ID — alternative to pofid. Automatically resolved to pofid.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds explicit 'READ-ONLY. Returns data, changes nothing,' which reinforces the safety profile. It does not disclose details like pagination or ordering, but for a read-only list tool this is adequate.

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 short and front-loaded with the most important behavioral note ('READ-ONLY'), followed by a clear one-line purpose. Every sentence earns its place, though it could be even more compact.

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

Completeness3/5

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

For a simple list tool with rich annotations and full schema coverage, the description is mostly complete. It does not describe what the returned tag objects look like or whether the list is paginated, but given no output schema and low complexity, this is a minor gap.

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%, so the schema already explains both parameters. The description adds no semantic value beyond what properties provide. The baseline of 3 applies because the schema carries the full parameter burden.

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 description states a clear verb and resource: 'List tags in a workspace' is specific enough to convey the operation. It does not explicitly differentiate from sibling tools like po_documents_folders_list or po_documents_get, but the read-only tag-listing purpose is unambiguous.

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 implies usage for listing tags but gives no explicit guidance on when to choose this tool over siblings or when it is not appropriate. The alternative identifiers (pofid vs documents_id) are mentioned in the schema but not framed as usage guidance.

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

po_documents_text_getGet document text / OCR contentA
Read-onlyIdempotent
Inspect

READ-ONLY. Returns data, changes nothing. Read existing OCR/fulltext for a document.

ParametersJSON Schema
NameRequiredDescriptionDefault
pofidNoPaperOffice File ID (POFID). At least one of pofid or documents_id MUST be provided.
formatNoOutput format: plaintext (default, HTML stripped) or html (original OCR markup)plaintext
documents_idNoNumeric document ID — alternative to pofid. At least one of pofid or documents_id MUST be provided.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false; the description's 'READ-ONLY... changes nothing' largely repeats those. The phrase 'existing OCR/fulltext' adds a mild signal that no OCR generation is triggered, but missing-content/error behavior is not disclosed.

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?

Extremely compact and appropriately front-loaded: the read-only warning comes first, followed by a single clarifying sentence about what is returned. No space is wasted restating schema details.

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?

For a low-complexity read-only tool, the description plus fully documented parameters and strong annotation coverage is nearly sufficient. A note about missing OCR/not-found behavior or response structure would improve it, but the absence is not blocking.

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%, including the pofid/documents_id either-or requirement and the format enum/default. The description adds no parameter-specific meaning, so the baseline 3 applies.

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?

States a specific operation — reading existing OCR/fulltext for a document — with the read-only nature front-loaded. This clearly differentiates it from siblings like po_documents_get and po_documents_search, which concern metadata/search rather than text extraction.

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?

Implies use when an agent needs existing document OCR or fulltext content, but never explicitly says when to prefer this tool over po_documents_get or po_documents_search. No exclusions or sibling routing are provided.

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

po_documents_upload_url_getRequest presigned upload URLBInspect

WRITES DATA. Creates or changes data in the workspace. Register an upload slot and return a presigned PUT URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameNoOriginal filename with extension, e.g. "Rechnung_2026.pdf". Alias: file_name
file_nameNoAlias for filename — same parameter, consistent naming with other po_documents_* tools.
content_typeNoMIME type, e.g. "application/pdf". Defaults to application/octet-stream.

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, and the description reinforces this with 'WRITES DATA'. It adds the specific behavior of returning a presigned PUT URL, which is helpful. However, it does not disclose that the URL is temporary or that the actual file upload must be performed separately via a subsequent PUT request—a critical behavioral detail for correct usage. The description is consistent with annotations but does not go far beyond them.

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

Conciseness3/5

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

The description is short but contains redundancy: 'WRITES DATA' and 'Creates or changes data in the workspace' say essentially the same thing. The essential information—'Register an upload slot and return a presigned PUT URL'—is present but not front-loaded; it appears after the redundant write warning. A more concise version would merge the write hints and lead with the core action.

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

Completeness3/5

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

For a tool with only three optional parameters and no output schema, the description covers the basic purpose and return value (a presigned PUT URL). However, it omits practical details that an agent would need, such as the URL's expiration, the need to perform a PUT request separately, or any size/type restrictions. These omissions could lead to incorrect invocation, so the description is only minimally complete.

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?

The input schema provides complete descriptions for all three parameters (filename, file_name, content_type), including aliases and defaults. The tool description adds no additional meaning or constraints beyond what the schema already documents. With 100% schema coverage, the baseline of 3 applies.

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 clearly states the tool's purpose: to register an upload slot and return a presigned PUT URL. It uses specific verbs and a resource, distinguishing it from siblings like po_documents_create_from_content (which creates from content directly) and po_documents_get (which retrieves documents). The action is unambiguous.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as po_documents_create_from_content or other upload methods. It does not mention prerequisites (e.g., needing a workspace or folder context) or scenarios where a presigned URL is the appropriate choice. An agent is left to infer usage from the tool name and sibling list.

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

po_extraction_invoiceExtraction InvoiceAInspect

WRITES DATA. Creates or changes data in the workspace. Extract invoice fields from a document (starts a job). May reach systems outside PaperOffice.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoAI processing tier (flat pricing). Basic=OCR+Vision, Premium=+AI Thinking, Ultra=+AI Reasoning. per/per-Max variants add higher page limits.premium
pofidNoPaperOffice File ID of an existing document in the DMS. Alternative to upload_id/file_url — exactly one file input is required.
file_urlNoDirect URL to download the file from. Alternative to upload_id/pofid — exactly one file input is required.
priorityNoLEGACY queue weight (numeric). Prefer processing_lane (Start-SLA). If processing_lane is set, the lane wins. Do not use as the public SLA product.
upload_idNoUpload ID from po_documents_upload_url_get (preferred file input method). Exactly one file input is required: upload_id, file_url or pofid.
async_onlyNoForce async: same as client_wait=false. Returns job_id immediately; poll GET /job/get/{job_id}.
idp_fieldsNoOPTIONAL: Additional fields as JSON, e.g., {"key":"has_stamp","description":"Is there a stamp?"}
client_waitNoConnection hold: true (default) = API holds this HTTP request while the job runs, up to the dynamic pipeline timeout (priority, pages, pipeline type; minimum about 20s, infrastructure cap about 295s). Returns the finished result when ready, or HTTP 202 with job_id and poll_url if the hold is exceeded. false = immediate job_id.
idp_collectionNoIDP template name. Default: invoice (English). For localized versions use the dedicated tools (e.g. the German/DATEV-optimized extraction profile in Document AI). Advanced: append :lang:LOCALE for custom localization e.g. invoice:fr:FRinvoice
processing_laneNoStart-SLA lane (wait-to-start guarantee, not completion). Values: no_sla (fair use ×1), sla_24h (×1.5), sla_12h (×2), sla_6h (×3), sla_1h (×4), instant (×5 interactive start). Prefer this over legacy numeric priority. If omitted: workspace default_processing_lane, else no_sla.

TDQS

A3.5/5.0
Behavior3/5

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

The description adds 'May reach systems outside PaperOffice' and the 'WRITES DATA' warning, which align with annotations (readOnlyHint=false, openWorldHint=true). However, it does not provide deeper context like the async workflow or job polling, which are covered in the schema. The bar is lowered due to annotations, so the added external-reach note earns a 3.

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 concise, with two sentences, and front-loads the 'WRITES DATA' warning before stating the purpose. While the 'WRITES DATA. Creates or changes data in the workspace.' prefix is somewhat generic and redundant with annotations, it is not verbose. The core purpose is efficiently stated.

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

Completeness2/5

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

With 10 parameters and no output schema, the description is too sparse. It does not explain how the agent should handle the job lifecycle (e.g., when to poll, what the result looks like, or how to interpret job_id vs. immediate result). The schema covers parameters, but the description leaves out critical workflow guidance for a job-based tool, making it incomplete for correct invocation.

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%, so baseline is 3. The description does not add meaning beyond what the schema already provides for parameters. The schema details client_wait, async_only, idp_collection, etc., so the description adds no additional semantic value for parameters.

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 clearly states the tool's action: 'Extract invoice fields from a document (starts a job).' This specifies a specific verb, resource (invoice fields), and the asynchronous nature. It distinguishes itself from siblings like po_documents_text_get by focusing on invoice extraction rather than generic text retrieval.

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 implies usage for extracting invoice fields but does not explicitly mention when to use this tool over alternatives. It lacks exclusions or references to sibling tools. The parameter schema mentions localized alternatives, but that's not in the main description, so the agent gets no explicit guidance on selecting this tool.

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

po_job_getGet job status and resultB
Read-onlyIdempotent
Inspect

READ-ONLY. Returns data, changes nothing. Poll an async PaperOffice job by job_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
hintNo
textNo
errorNo
job_idNo
resultNo
statusNo
detailsNo
messageNo
_warningsNo
retryableNo
error_codeNo
http_statusNo
_billing_summaryNo

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description's 'READ-ONLY... changes nothing' adds no new information. It does add the 'async' context, but doesn't disclose polling semantics, error behavior, or result lifecycle.

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, front-loaded with the read-only warning, no filler. Every word earns its place.

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?

For a single-parameter read-only polling tool with an output schema and rich annotations, the description covers the essential operation. The only notable gap is not stating how job_id is obtained or that polling may need to be repeated until completion.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but it only restates that the tool operates 'by job_id' without explaining where the ID comes from, its format, or its relationship to async job creation. This adds minimal semantic value over the schema's property name.

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 description uses a specific verb ('Poll') and resource ('async PaperOffice job'), and identifies the key identifier (job_id). It clearly conveys the tool's function, though it does not differentiate from sibling tools by name.

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 phrase 'Poll an async PaperOffice job' implies the usage context (after launching an async job), but the description does not explicitly state when to use this tool versus alternatives, nor does it mention any exclusions.

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

po_mcp_tools_call_readCall a read-only inner toolA
Read-onlyIdempotent
Inspect

READ-ONLY. Returns data, changes nothing. Execute a read-only inner tool_id. Writes are rejected; use call_write. May reach systems outside PaperOffice.

ParametersJSON Schema
NameRequiredDescriptionDefault
tool_idYes
argumentsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already provide readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds value beyond those by stating writes are rejected and that the tool may reach systems outside PaperOffice, which is important behavioral context. No contradiction with annotations.

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?

The description is two short sentences, front-loads the most critical information (READ-ONLY, returns data, changes nothing), and every clause earns its place: write rejection, alternate tool, and external-reach warning.

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?

Annotations and output schema cover the safety profile and return shape, so the description does not need to repeat those. It covers read-only behavior, write rejection, and external reach. It could be more complete by pointing to sibling tools like po_mcp_tools_search or po_mcp_tools_schema for discovering valid tool_ids, but it is mostly sufficient.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It clarifies tool_id as the read-only inner tool to execute, but the 'arguments' object is left entirely to inference; an agent is not told that arguments are passed through to the inner tool or how they should be shaped. This is a meaningful gap for a proxy tool.

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 uses a specific verb (execute) and resource (read-only inner tool_id), and clearly states it returns data and changes nothing. It also distinguishes itself from the write sibling by saying writes are rejected and to use call_write.

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

Usage Guidelines5/5

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

It explicitly states when the tool is appropriate: executing a read-only inner tool. It also gives a clear exclusion and alternative: 'Writes are rejected; use call_write,' which lets an agent route correctly without opening the sibling schema.

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

po_mcp_tools_call_writeCall an inner tool (writes allowed)B
Destructive
Inspect

DESTRUCTIVE. Changes or removes data, or reaches people outside this system (delete, revoke, cancel, send, activate retention). Not automatically undoable — confirm intent first. Execute any inner tool_id in this connector universe, including writes. May reach systems outside PaperOffice.

ParametersJSON Schema
NameRequiredDescriptionDefault
tool_idYes
argumentsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=false, openWorldHint=true, and destructiveHint=true. The description adds value beyond these by enumerating concrete risky operation classes (delete, revoke, cancel, send, activate retention) and disclosing a genuinely new trait — 'Not automatically undoable' — plus the confirmation-before-call requirement. No contradiction with annotations; the description's claims align with all three hints.

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?

Compact at roughly 52 words across four sentences, and the most critical information ('DESTRUCTIVE') is front-loaded in caps, followed by consequences and the confirmation requirement. Minor redundancy: 'reaches people outside this system' and 'May reach systems outside PaperOffice' communicate the same open-world trait twice.

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

Completeness3/5

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

For an open-world dynamic dispatcher with an unrestricted arguments object, the description covers the danger profile thoroughly but leaves operational gaps: how arguments should be shaped for a given tool_id, how to discover valid tool IDs (despite schema/search siblings existing), and the explicit read-vs-write split with call_read. An output schema exists, so return-value documentation is not the description's responsibility.

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

Parameters2/5

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

With 0% schema description coverage, the description carries the burden for both parameters, but only nominally addresses tool_id (it selects an inner tool in the connector universe, which is something beyond 'string'). The arguments parameter — a free-form passthrough object with additionalProperties — receives zero explanation, and there is no pointer to sibling tools po_mcp_tools_schema or po_mcp_tools_search for discovering valid tool_id values.

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?

Description states a specific verb+resource: 'Execute any inner tool_id in this connector universe, including writes.' The title's '(writes allowed)' framing differentiates it from its read counterpart, po_mcp_tools_call_read, which appears directly in the sibling list. Clear overall, though the description body never names the read sibling explicitly.

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 destructive framing ('Not automatically undoable — confirm intent first') implies this is for write operations requiring user confirmation, which is useful. However, there is no explicit routing guidance: it never states 'use po_mcp_tools_call_read for read-only calls' or gives when-not-to-use conditions. Usage context is implied by the title and danger warnings rather than stated.

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

po_mcp_tools_schemaGet inner tool schemaA
Read-onlyIdempotent
Inspect

READ-ONLY. Returns data, changes nothing. Return the full input schema for one inner tool_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
tool_idYesInner PaperOffice tool_id

Output Schema

ParametersJSON Schema
NameRequiredDescription
hintNo
detailsNo
messageNo
tool_idNo
retryableNo
error_codeNo
http_statusNo
input_schemaNo
schema_sourceNo

TDQS

A3.5/5.0
Behavior2/5

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

The description repeats the annotation profile ('READ-ONLY', 'changes nothing') but adds no new behavioral context beyond what readOnlyHint, idempotentHint, and destructiveHint already provide. There is no additional disclosure about errors, availability, or response structure.

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 short and front-loads the read-only nature. However, 'Returns data, changes nothing' is partially redundant with 'READ-ONLY', so a slightly tighter wording could make every phrase earn its place.

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?

For a single-parameter meta-tool with annotations and an output schema, the description adequately explains the tool's function. The main missing context is how to know which tool_id values are valid, but the sibling tool names and the parameter description give enough guidance for basic invocation.

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 the tool description merely echoes the tool_id parameter without adding format, examples, or constraints. It does not compensate beyond the schema, but it doesn't need to given the complete schema documentation.

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 states a specific verb ('Return') and resource ('full input schema for one inner tool_id'), and opens with READ-ONLY. It is clearly distinct from sibling tools, which are operational tools, since this is a schema-introspection meta-tool.

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 usage context is implied: an agent needing the input schema for an inner tool would call this tool with that tool_id. However, there is no explicit statement about when to prefer this over sibling tools like po_mcp_tools_search, nor any mention of how to discover valid tool_id values.

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

po_workspaces_listList accessible workspacesA
Read-onlyIdempotent
Inspect

READ-ONLY. Returns data, changes nothing. List workspaces accessible to this token.

ParametersJSON Schema
NameRequiredDescriptionDefault
skipNoAlias for offset (legacy PHP skip).
takeNoAlias for limit (legacy PHP take). Clamped to max 200.
limitNoMax workspaces per page (default 25, max 200). Use with offset for pagination.
queryNoAlias for search — filter workspaces by name substring
offsetNoSkip N workspaces (pagination)
searchNoFilter workspaces by name (backend substring search)
detail_levelNocompact omits _tier_summary; full includes tier summary text per rowcompact
workspace_idNoReturn only this workspace (fast path when ID is already known)
include_deletedNoInclude deleted workspaces in the list (default: false, only active/archived workspaces are shown)

Output Schema

ParametersJSON Schema
NameRequiredDescription
hintNo
textNo
limitNo
totalNo
offsetNo
detailsNo
messageNo
has_moreNo
_warningsNo
retryableNo
error_codeNo
workspacesNo
http_statusNo
total_on_pageNo
total_matchingNo
_billing_summaryNo

TDQS

A4/5.0
Behavior3/5

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

The description explicitly states 'READ-ONLY' and 'changes nothing', which reinforces the annotations (readOnlyHint, idempotentHint, destructiveHint). It adds useful context about token-scoped accessibility, but with annotations already covering the safety profile, the additional behavioral disclosure is modest.

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?

The description is two short sentences with no wasted words. The most important behavioral trait ('READ-ONLY') is front-loaded, and the rest states the core action and scope efficiently.

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?

Given the rich schema, output schema, and annotations, the description covers the essential context: read-only behavior, no mutation, and token-scoped accessibility. It does not need to explain return values or parameters because those are fully specified in structured fields.

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%, so the schema fully documents all 9 parameters including pagination, filtering, detail level, and include_deleted. The tool description itself adds no parameter-level meaning, so the baseline of 3 is appropriate.

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 uses a specific verb ('List') and resource ('workspaces accessible to this token'), making the tool's purpose immediately clear. It also distinguishes the tool from document-focused siblings by scoping to workspaces and token accessibility.

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?

The description clearly implies when to use this tool: when you need to enumerate workspaces available to the current token. There are no competing workspace-list siblings, so explicit exclusions are unnecessary, though it could have stated that this is the discovery entry point for workspace IDs.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 14 tool updates
    • First observedpo_documents_create_from_content
    • First observedpo_documents_folders_list
    • First observedpo_documents_get
    • First observedpo_documents_search
    • First observedpo_documents_tags_list
    • First observedpo_documents_text_get
    • First observedpo_documents_upload_url_get
    • First observedpo_extraction_invoice
    • First observedpo_job_get
    • First observedpo_mcp_tools_call_read
    • First observedpo_mcp_tools_call_write
    • First observedpo_mcp_tools_schema
    • First observedpo_mcp_tools_search
    • First observedpo_workspaces_list

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.
    16
    7 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables tracking competitor websites, changelogs, blog feeds, and pricing pages with meaningful diffs, classification, and Markdown digests via MCP tools for listing, adding, removing competitors, running checks, and retrieving digests or changes.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources