Skip to main content
Glama

Paperclip MCP server

About

An MCP server for Paperclip. It wraps the Paperclip HTTP API in a small set of agent-oriented tools and communicates over stdio.

Related MCP server: jira-mcp

What does it do?

The server simplifies the Paperclip API for language models:

  • turns API responses into compact Markdown;

  • provides dedicated tools for common issue, comment, document, and agent work;

  • returns short acknowledgements for mutations instead of entire API responses;

  • keeps a guarded raw API tool for endpoints without a dedicated tool;

  • rejects external URLs in the raw tool.

Read responses are returned inline until they exceed PAPERCLIP_MCP_INLINE_TOKEN_THRESHOLD. Larger responses are written as immutable Markdown snapshots and the tool returns the file path instead. Snapshots are read-only caches and may become stale; call the tool again when current state matters.

Usage

Requires Node.js 22.19+ and pnpm 11.

pnpm install --frozen-lockfile
pnpm run build

PAPERCLIP_API_URL=http://localhost:3100 \
PAPERCLIP_API_KEY=your-key \
pnpm start

Example MCP configuration:

{
  "mcpServers": {
    "paperclip": {
      "command": "node",
      "args": ["/absolute/path/to/paperclip-mcp/dist/index.js"]
    }
  }
}

Tools

Tool

Description

paperclip_context

Read the current run and wake context without an API call.

paperclip_inbox

Read the current agent inbox.

paperclip_issue

Read one issue.

paperclip_heartbeat_context

Read the compact heartbeat context for an issue.

paperclip_issues

List or search company issues.

paperclip_issue_create

Create an issue or subtask.

paperclip_issue_update

Update issue fields, status, assignment, or comments.

paperclip_issue_checkout

Atomically claim an issue for the current agent.

paperclip_issue_release

Release a checked-out issue to todo.

paperclip_comments

Read issue comments.

paperclip_comment_add

Add a comment to an issue.

paperclip_documents

List documents attached to an issue.

paperclip_document

Read one issue document.

paperclip_document_put

Create or update an issue document.

paperclip_agents

List company agents or read one agent.

paperclip_raw

Call a relative Paperclip API path not covered above.

Environment variables

Name

Required

Default

Description

PAPERCLIP_API_URL

Yes

Paperclip base URL.

PAPERCLIP_API_KEY

No

Bearer token for API requests.

PAPERCLIP_COMPANY_ID

No

Company context; required by company-scoped tools.

PAPERCLIP_AGENT_ID

No

Current agent; required for issue checkout.

PAPERCLIP_RUN_ID

No

Run identity sent on mutations and used in snapshot paths.

PAPERCLIP_TASK_ID

No

Current task context.

PAPERCLIP_WAKE_REASON

No

Wake reason exposed by paperclip_context.

PAPERCLIP_WAKE_COMMENT_ID

No

Comment that triggered the run.

PAPERCLIP_APPROVAL_ID

No

Current approval context.

PAPERCLIP_APPROVAL_STATUS

No

Current approval status.

PAPERCLIP_LINKED_ISSUE_IDS

No

Comma-separated linked issue IDs.

PAPERCLIP_WAKE_PAYLOAD_JSON

No

JSON wake payload rendered by paperclip_context.

PAPERCLIP_MCP_ARTIFACT_DIR

No

OS temp directory

Snapshot output directory.

PAPERCLIP_MCP_TIMEOUT_MS

No

30000

API request timeout.

PAPERCLIP_MCP_INLINE_TOKEN_THRESHOLD

No

30000

Maximum estimated tokens returned inline.

PAPERCLIP_MCP_HEADERS_JSON

No

{}

Additional request headers as a JSON object.

PAPERCLIP_MCP_TELEMETRY

No

true

Enable operation telemetry.

PAPERCLIP_MCP_TELEMETRY_FILE

No

Optional telemetry JSONL output path.

Custom headers

Use PAPERCLIP_MCP_HEADERS_JSON for reverse-proxy or routing headers:

export PAPERCLIP_MCP_HEADERS_JSON='{"CF-Access-Client-Id":"...","CF-Access-Client-Secret":"..."}'

Header names and values are validated at startup. Values containing CR or LF are rejected. PAPERCLIP_API_KEY overrides a custom Authorization header, and PAPERCLIP_RUN_ID overrides X-Paperclip-Run-Id on mutations.

Development

pnpm install --frozen-lockfile
pnpm run check
pnpm run build

scripts/test.sh is an end-to-end test against a disposable Paperclip company. Copy .env.example to the ignored .env.test, fill in its values, and explicitly set PAPERCLIP_TEST_ALLOW_WRITES=1 before running it.

cp .env.example .env.test
scripts/test.sh

Available Tools

16 tools
paperclip_agentsRead Paperclip agentsA
Read-onlyIdempotent

List company agents, or fetch one agent when id is supplied. Returns Markdown inline below the configured token threshold and otherwise only a new immutable snapshot path. Use all_fields=true only when compact agent fields are insufficient.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoAgent UUID or company shortname. Omit to list the company roster.
all_fieldsNo

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already provide readOnlyHint, openWorldHint, and idempotentHint. The description adds valuable non-obvious output behavior: results are returned as Markdown inline below a configured token threshold, otherwise only as a new immutable snapshot path. This goes beyond the annotations and schema without contradicting them.

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 sentences, each earning its place: the first states the core operation, the second describes the output contract, and the third constrains the optional parameter. There is no filler, repetition, or ambiguity.

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 two-parameter read-only tool with no output schema, the description covers purpose, list-vs-fetch selection, and return behavior. It could add notes on error handling or how to consume the snapshot path, but these are minor given the tool's low complexity and strong annotations.

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?

The schema already documents id fully as 'Agent UUID or company shortname' and says to omit it for the roster. all_fields has no schema description, and the description adds a useful decision rule: use it only when compact agent fields are insufficient. This compensates for the 50% schema coverage, though it does not enumerate exactly which fields all_fields adds.

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 and resource: 'List company agents, or fetch one agent when id is supplied.' It clearly distinguishes the two calling modes (list vs. single fetch) and matches the title, making the tool's purpose immediately identifiable among siblings.

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 gives clear conditional guidance: omit id to list the company roster, supply id to fetch a single agent, and use all_fields=true only when compact fields are insufficient. It does not explicitly name alternative tools or exclusion conditions, but the read-only scope and parameter conditions are sufficiently clear.

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

paperclip_comment_addAdd Paperclip commentA

Add a comment to authoritative Paperclip state. Returns only a compact acknowledgement; the full created comment response is not injected into context.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
reopenNo
issue_idYes

TDQS

A3.5/5.0
Behavior4/5

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

The description usefully discloses that the tool returns only a compact acknowledgement and does not inject the full created comment response into context, which is valuable since there is no output schema. Combined with annotations that already signal a non-idempotent, non-destructive operation, this gives good behavioral transparency.

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, each earning its place: the first states the purpose, the second sets expectations about the response. No redundancy or filler.

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?

The core action and response behavior are covered, which is important given the lack of an output schema. However, the description omits the semantics of reopen, does not mention any workflow prerequisites, and leaves the relationship to sibling comment/issue tools implicit.

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%, and the description does not explain the parameters. 'Add a comment' implies that body is the comment text and issue_id identifies the target, but the reopen boolean is left entirely unexplained, and no parameter-level detail is provided.

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 action ('Add a comment') and a specific resource ('authoritative Paperclip state'), so an agent can tell this is a write operation for comments. It does not explicitly contrast with sibling tools like paperclip_comments or paperclip_issue_update, so it misses the top score.

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 intended use is implied: use this when you need to add a comment to Paperclip state. However, there is no explicit guidance about when to prefer this over paperclip_issue_update or paperclip_comments, nor any mention of prerequisites such as issue checkout.

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

paperclip_commentsRead Paperclip commentsA
Read-onlyIdempotent

Fetch issue comments as Markdown. Results are inline below the configured token threshold and otherwise returned as a new immutable snapshot path. Use after_comment_id for deltas instead of replaying an entire thread when possible. Call again for fresh comments.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
orderNoasc
issue_idYes
all_fieldsNo
after_comment_idNo

TDQS

A4.1/5.0
Behavior4/5

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

Beyond the readOnlyHint, openWorldHint, and idempotentHint annotations, the description discloses important behavior: results come back either inline or as a new immutable snapshot path, and comments are not automatically fresh. This adds meaningful operational context.

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 tight sentences with no filler. The main verb and resource are front-loaded, and each sentence adds distinct useful guidance.

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 read-only fetch tool with no output schema, the description covers the core return behavior (Markdown, inline vs. snapshot path) and incremental fetching. It leaves some parameter semantics unexplained, but the essential invocation context is sufficiently communicated.

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 for explaining parameters. It explains after_comment_id, but provides no guidance for issue_id, limit, order, or all_fields. Most parameter semantics remain undocumented.

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 a specific action ('Fetch issue comments as Markdown') and identifies the exact resource (issue comments). It distinguishes this read operation from the sibling write tool paperclip_comment_add without ambiguity.

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 gives practical usage context, especially the guidance to use after_comment_id for deltas instead of replaying the full thread, and to call again for fresh comments. It does not explicitly name alternative tools or exclusion cases, but the read-vs-write distinction is implied by the title and sibling set.

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

paperclip_contextPaperclip runtime contextA
Read-onlyIdempotent

Read the current Paperclip run/wake environment without an API call. Returns LLM-friendly Markdown inline when it fits the configured token threshold; otherwise returns only a new immutable snapshot path.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior5/5

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

The description goes beyond the readOnly and idempotent annotations by explaining the conditional return behavior: Markdown inline when within token threshold, otherwise an immutable snapshot path. This is valuable behavioral detail that the annotations do not convey.

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 compact and front-loaded: the first sentence states the core read action, and the second sentence adds the return behavior. Every sentence earns its place with 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?

For a zero-parameter tool, the description sufficiently explains the two return modes and the no-API-call nature. A small gap is that it does not enumerate what the 'run/wake environment' actually contains, though the Markdown return is described as LLM-friendly.

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?

The tool has zero parameters, so there is no parameter semantics burden on the description. The schema is fully covered vacuously, and the description does not need to explain parameter meaning.

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 clearly states the tool 'Read the current Paperclip run/wake environment', which is a specific verb and resource. It also distinguishes the tool by noting it works 'without an API call', but it does not explicitly differentiate it from the similar sibling paperclip_heartbeat_context.

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 'without an API call' implies this should be used when a lightweight, low-cost read of the current runtime environment is needed. However, the description does not explicitly state when to prefer this over siblings like paperclip_heartbeat_context or paperclip_raw, nor does it provide exclusions.

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

paperclip_documentRead Paperclip issue documentA
Read-onlyIdempotent

Fetch one issue document as Markdown. Results are inline below the configured token threshold and otherwise returned as a new immutable snapshot path. Annotation loading is controlled explicitly with include_annotations/include_annotation_comments. all_fields=true only expands fields from the same response.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
issue_idYes
all_fieldsNo
include_annotationsNo
include_annotation_commentsNo

TDQS

A4/5.0
Behavior5/5

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

The description goes beyond the annotations by explaining that results are inline below a token threshold and otherwise returned as an immutable snapshot path. It also clarifies annotation loading behavior and the all_fields constraint, giving useful behavioral detail beyond readOnlyHint, openWorldHint, and idempotentHint.

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 three dense sentences with no filler: purpose and output format first, result-delivery behavior second, and parameter semantics third. Each sentence 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?

The description covers the fetch semantics, Markdown output, snapshot-vs-inline behavior, and important boolean parameters, which is strong for a read tool with no output schema. The main gap is the lack of routing guidance against sibling read tools and the undocumented meaning of issue_id/key.

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?

With 0% schema description coverage, the description partially compensates by explaining include_annotations, include_annotation_comments, and all_fields. However, the required parameters issue_id and key receive no semantic explanation beyond their names and schema constraints.

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 'Fetch one issue document as Markdown,' naming a specific verb, resource, and output format. It reads as a singular read operation and is clearly distinguishable from siblings like paperclip_document_put and paperclip_issues.

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?

There is no explicit guidance about when to use this tool versus paperclip_raw, paperclip_documents, or paperclip_issue. The only hint is the phrase 'one issue document,' which implies usage but does not rule out alternatives or provide selection criteria.

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

paperclip_document_putCreate or update Paperclip issue documentA
Destructive

Create a document or append a new revision. Updating an existing document normally requires base_revision_id from a fresh paperclip_document result. Returns only a compact acknowledgement.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
bodyYes
titleNo
issue_idYes
change_summaryNo
base_revision_idNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already signal non-idempotent and destructive behavior, so the description does not need to repeat those. It adds useful behavioral detail beyond annotations: updates normally require base_revision_id from a fresh read, and the response is only a compact acknowledgement rather than full content. Nothing in the description contradicts the 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?

Three short sentences with no filler. The primary action is front-loaded, the critical prerequisite is stated next, and the return behavior is summarized last. Every sentence earns its place.

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?

The description covers the essential operation, the base_revision_id prerequisite, and the acknowledgement response. However, with six parameters and no schema-level descriptions, the lack of guidance on key semantics, body usage, and change_summary leaves the tool only partially specified for reliable invocation.

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 carries the burden of explaining parameters, but it only clarifies base_revision_id. It does not explain the meaning or relationship of key, body, title, issue_id, or change_summary beyond their names and types, leaving significant ambiguity for an agent choosing values.

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 action on a specific resource: 'Create a document or append a new revision' for a Paperclip issue document. It also distinguishes itself from read tools by noting the update precondition and the compact acknowledgement, making it clearly the write counterpart to paperclip_document.

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 gives clear usage context: use this tool to create a document or append a revision, and when updating, first obtain base_revision_id from a fresh paperclip_document result. It does not explicitly list exclusions or other sibling alternatives, but the workflow guidance is sufficient for selecting this tool over document read tools.

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

paperclip_documentsList Paperclip issue documentsA
Read-onlyIdempotent

List issue documents as compact Markdown. Results are inline below the configured token threshold and otherwise returned as a new immutable snapshot path. Default output omits document bodies; call paperclip_document for a body or all_fields=true for every returned field.

ParametersJSON Schema
NameRequiredDescriptionDefault
issue_idYes
all_fieldsNo

TDQS

A4.9/5.0
Behavior5/5

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

Beyond annotations readOnlyHint, openWorldHint, and idempotentHint, the description discloses substantive behavior: results are inline below a token threshold and otherwise become an immutable snapshot path, and default output omits document bodies. This gives the agent useful operational expectations without contradicting the 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?

Three tight sentences, each earning its place: purpose, output behavior, and parameter/alternative guidance. The most important information is front-loaded, with no filler or restatement of the schema.

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 simple two-parameter, read-only listing tool with no output schema, the description covers purpose, output format, truncation behavior, default field omission, and the alternative for getting full bodies. Nothing essential 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 description coverage is 0%, so the description must compensate. It does for all_fields by explaining that true returns every returned field. issue_id is not explained in prose, but its meaning is clear from the tool purpose and the required schema field, so the gap is minor.

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 issue documents as compact Markdown.' It clearly identifies the tool's output format and scope, and distinguishes it from the sibling paperclip_document by noting that the singular tool is for fetching a document body.

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 description explicitly tells the agent when to use an alternative: if a document body is needed, call paperclip_document, or set all_fields=true. It also explains the inline-vs-snapshot result behavior, which guides the agent on what to expect for large result sets.

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

paperclip_heartbeat_contextRead Paperclip heartbeat contextA
Read-onlyIdempotent

Fetch GET /api/issues/:id/heartbeat-context explicitly. Returns Markdown inline when it fits the configured token threshold; otherwise returns only a NEW immutable snapshot path. Use this when the smaller wake/execution context is what you want. all_fields=true only expands fields from this same heartbeat-context response.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesIssue UUID or human identifier such as PAP-123.
all_fieldsNoExpand fields from this same Paperclip endpoint response. This never changes endpoint or collection scope.

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the readOnlyHint/idempotentHint annotations, the description discloses key conditional behavior: inline Markdown when under the token threshold, otherwise only a NEW immutable snapshot path, and the scope limitation of all_fields=true. This materially helps an agent predict the response 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?

Three compact sentences, with the endpoint and core behavior front-loaded before the usage guidance and all_fields caveat. No wasted words; every sentence contributes to selection or invocation.

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 description covers the two possible return behaviors and gives a concrete use case, which is sufficient given the simple schema and read-only annotations. It could be more complete by explaining what a snapshot path is or naming the alternative for larger context, but it is not critically incomplete.

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 both id and all_fields. The description repeats the all_fields scope restriction but adds no new parameter-level detail beyond what the schema provides.

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 names a specific verb and resource ('Fetch GET /api/issues/:id/heartbeat-context explicitly') and clarifies that it returns the smaller wake/execution context. This distinguishes it from siblings like paperclip_context or paperclip_raw by scope and intent.

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 an explicit usage condition: 'Use this when the smaller wake/execution context is what you want.' It does not name the specific alternative to use for larger context, so exclusions and when-not-to-use are only implied rather than stated.

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

paperclip_inboxPaperclip inboxA
Read-onlyIdempotent

Fetch the current agent compact inbox. Returns Markdown inline when it fits the configured token threshold; otherwise returns only a new immutable snapshot path. Call again whenever fresh assignment state matters.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

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

Beyond readOnlyHint/openWorldHint/idempotentHint, the description discloses the conditional return behavior: Markdown inline when under token threshold, otherwise only a new immutable snapshot path. This is useful trait information that is not present in the annotations or schema.

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 concise sentences front-load the purpose, then explain the output condition and the polling cue. Every sentence adds distinct information with no redundancy or filler.

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 zero-parameter tool with no output schema, the description covers the important return cases (inline Markdown vs snapshot path) and when to call again. The configured threshold and snapshot concept are not detailed, but the description is sufficient for correct invocation.

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?

The tool has zero parameters and the schema already covers this completely, so there is no parameter documentation gap. The description adds context about token-threshold behavior, though parameter-specific semantics are naturally not applicable.

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 ('Fetch') and resource ('current agent compact inbox'), making the tool's function immediately clear. It also distinguishes the tool from sibling paperclip_* tools by naming the inbox resource and the conditional return modes.

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 phrase 'Call again whenever fresh assignment state matters' gives clear situational guidance for when to invoke the tool. It does not name alternatives or exclusion conditions, but the tool is a singular fetch of the inbox and siblings are not obvious substitutes, so the guidance is adequate.

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

paperclip_issueRead Paperclip issueA
Read-onlyIdempotent

Fetch one issue with GET /api/issues/:id. Returns Markdown inline when it fits the configured token threshold; otherwise returns only a NEW immutable snapshot path. all_fields=true only expands fields from that same response; it never changes the endpoint. Never edit snapshots to modify Paperclip.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesIssue UUID or human identifier such as PAP-123.
all_fieldsNoExpand fields from this same Paperclip endpoint response. This never changes endpoint or collection scope.

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the readOnlyHint and idempotentHint annotations, the description discloses meaningful conditional behavior: Markdown is returned inline only when it fits the token threshold, otherwise a new immutable snapshot path is returned. It also warns against editing snapshots to modify Paperclip, which is valuable context beyond the 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?

Four dense sentences carry all essential information with no filler. The endpoint, conditional response behavior, parameter clarification, and safety warning are each placed in their own sentence, making the definition easy to parse.

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 read-only single-issue fetch with a small parameter surface and strong schema descriptions, the description covers endpoint, response format behavior, all_fields scope, and snapshot immutability. No output schema is present, but the description provides sufficient behavioral expectations 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%, and both id and all_fields already have rich descriptions in the schema. The description mostly restates the all_fields semantics ('only expands fields from that same response; it never changes the endpoint') rather than adding new parameter insight, 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 opens with a specific verb and resource ('Fetch one issue with GET /api/issues/:id'), making the tool's purpose immediately unambiguous. The word 'one' clearly distinguishes it from sibling list tools like paperclip_issues, and the title reinforces its read-only single-issue scope.

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 establishes the context for use: retrieving a single issue. It also gives practical guidance on all_fields behavior and explicitly warns not to edit snapshots. However, it does not explicitly name sibling tools as alternatives or state when not to use this tool, so it stops short of full routing guidance.

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

paperclip_issue_checkoutCheckout Paperclip issueA
DestructiveIdempotent

Atomically claim an issue for the current agent. A 409 is terminal: do not retry or steal the lock. Set reclaim_stale=true only when adopting your own stale in_progress checkout after a crashed run.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
reclaim_staleNo
expected_statusesNoAdvanced override; normally omit.

TDQS

A4.2/5.0
Behavior4/5

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

Beyond the annotations (openWorldHint, idempotentHint, destructiveHint), the description discloses atomicity, lock-stealing prohibition, terminal 409 semantics, and the stale-reclaim recovery path. This adds meaningful behavioral context without contradicting any annotation. Minor gap: it does not state what the checkout returns or what state transition the issue undergoes.

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 terse sentences, each earning its place: purpose, conflict handling, and parameter condition. The core purpose is front-loaded in the first clause, and there is zero filler or repetition of schema content.

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 moderate complexity, the essential calling knowledge is present: the required id, the precise meaning of reclaim_stale, the terminal 409 behavior, and a safety profile from annotations. Remaining gaps — no return-value disclosure and no elaboration on expected_statuses semantics — are minor but worth noting.

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?

With schema description coverage at only 33%, the description carries the burden for undocumented parameters. It compensates where it matters most: reclaim_stale has no schema description but is fully scoped here (true only when adopting your own stale in_progress checkout after a crash). expected_statuses is already covered by its schema description, and id is self-evident from the resource noun.

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: 'Atomically claim an issue for the current agent,' naming the operation, the object, and the actor scope. This clearly distinguishes checkout from siblings such as paperclip_issue_release (the inverse operation) and paperclip_issue_create without restating the title.

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 context is clear — this is the tool for claiming an issue before working on it — and it adds strong conditional guidance ('Set reclaim_stale=true only when adopting your own stale in_progress checkout after a crashed run') plus a failure rule (409 is terminal). However, it never routes to alternatives explicitly; nothing points to paperclip_issue_release for when work is complete, so when-to-use vs alternatives is only implied.

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

paperclip_issue_createCreate Paperclip issueA

Create an issue/subtask in authoritative Paperclip state. Returns only a compact acknowledgement; the full created issue response is deliberately not injected into model context.

ParametersJSON Schema
NameRequiredDescriptionDefault
extraNoUncommon Paperclip request fields not covered by the dedicated arguments.
titleYes
statusNo
goal_idNo
priorityNo
label_idsNo
parent_idNo
project_idNo
descriptionNo
assignee_user_idNo
assignee_agent_idNo
blocked_by_issue_idsNo

TDQS

A3.7/5.0
Behavior4/5

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

The description adds valuable behavioral context beyond the annotations by disclosing that it returns only a compact acknowledgement and intentionally does not inject the full created issue response into model context. This is a meaningful, non-obvious behavior. The description does not contradict the openWorldHint, idempotentHint, or destructiveHint 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 tight sentences with no filler. The core action leads, and the important response behavior follows. Every sentence earns its place by either stating the tool's function or disclosing a critical output constraint.

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?

For a tool with 12 parameters, no output schema, and minimal parameter documentation, the description is too thin to be complete. It clarifies the return behavior, but does not explain the semantics of the many optional fields, expected value formats for status/priority, or how relationships like parent_id, project_id, and blocked_by_issue_ids interact. An agent has to infer a lot from parameter names alone.

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 only 8%, with just the 'extra' parameter explained in the schema, and the description itself provides no parameter-level guidance. Names like title, status, priority, parent_id, and blocked_by_issue_ids are somewhat self-explanatory, but fields like extra, goal_id, label_ids, and assignee_agent_id lack sufficient semantic detail. The description does not compensate for the low schema coverage.

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 an issue/subtask in authoritative Paperclip state.' It clearly identifies the tool's action and object, and the imperative 'Create' distinguishes it from sibling tools like paperclip_issue_update, paperclip_issue_release, and paperclip_issue_checkout.

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 through the verb 'Create,' so an agent can infer it should be used when creating an issue or subtask. However, it does not explicitly state when not to use it, mention prerequisites, or name alternatives such as paperclip_issue_update for modifications. Usage context is clear but relies on inference.

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

paperclip_issue_releaseRelease Paperclip issueA
Destructive

Release the current agent checkout and return the issue to todo. Returns only a compact acknowledgement.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already signal destructive and non-idempotent behavior. The description adds useful context beyond that: the issue transitions to todo, and the response is only a compact acknowledgement. It does not contradict the 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?

Two short sentences with no fluff. The core action is front-loaded, and the response behavior is stated in the second sentence. Every word earns its place.

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 one-parameter destructive action, the description covers the core effect and return shape. However, it leaves meaningful gaps: the semantics of `id`, any prerequisites like an active checkout, and the exact contents of the compact acknowledgement are all unspecified.

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?

The schema has zero description coverage and the description never explains what `id` refers to. An agent must guess whether it is the issue id, a checkout id, or something else, especially since the wording emphasizes 'current agent checkout' without tying it to the required parameter.

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 action ('release'), the target resource ('current agent checkout'), and the resulting state ('return the issue to todo'). This clearly distinguishes it from siblings like checkout, create, update, or comment operations.

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 role as the counterpart to paperclip_issue_checkout is implied, and an agent can infer it should be used when finished with a checked-out issue. However, the description never explicitly states when to use it, when not to use it, or names an alternative.

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

paperclip_issuesList or search Paperclip issuesA
Read-onlyIdempotent

Return a compact Markdown list from GET /api/companies/:companyId/issues. With no filters and no limit, Paperclip returns all visible company issues. Filters narrow the list; limit caps it. Results are inline below the configured token threshold and otherwise returned as a snapshot path. Use paperclip_issue for details on one issue.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoFull-text issue search query.
limitNoOptional result cap. Omit to request all matching issues.
statusNoStatus or statuses.
label_idNo
origin_idNo
parent_idNo
project_idNo
origin_kindNo
assignee_user_idNo
assignee_agent_idNo
participant_agent_idNo
execution_workspace_idNo
include_routine_executionsNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark the tool read-only and idempotent; the description goes further by revealing the compact Markdown output format, the default 'all visible issues' behavior, and the token-threshold condition where results are inline versus returned as a snapshot path. This is meaningful behavioral context that structured fields do not provide.

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?

Five short sentences, each carrying distinct information: endpoint/format, default behavior, filter/limit effects, threshold-based output, and routing to a sibling. No filler or redundancy.

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?

The description covers the core usage and the unusual snapshot-path behavior, but with 13 parameters and no output schema it leaves meaningful gaps: specific filter parameters are not enumerated, and the snapshot path mechanism is not explained. It is adequate but not complete for a tool of this complexity.

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 only 23% of parameters described in the schema, the description needed to compensate. It only says 'Filters narrow the list; limit caps it,' which is generic and names only the limit parameter. The other 10 filter parameters (label_id, origin_id, parent_id, etc.) remain semantically unexplained, so the description falls short of making the parameters usable.

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, 'Return a compact Markdown list from GET /api/companies/:companyId/issues', and clarifies the default scope ('all visible company issues'). The final sentence explicitly distinguishes it from the singular paperclip_issue tool, so an agent can tell which tool to use.

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 description states when to use the tool (to get a list of issues) and explicitly points to paperclip_issue for detail on a single issue. It also explains the effect of no filters/no limit and that filters narrow the list, giving the agent clear conditions for parameterization.

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

paperclip_issue_updateUpdate Paperclip issueA
Destructive

Update authoritative issue state. Use this for status/assignment/field changes and optional comments; never edit snapshot files. Returns only a compact acknowledgement.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
extraNoUncommon Paperclip request fields not covered by the dedicated arguments.
titleNo
reopenNo
statusNo
commentNo
goal_idNo
priorityNo
hidden_atNo
interruptNo
label_idsNo
parent_idNo
project_idNo
descriptionNo
assignee_user_idNo
assignee_agent_idNo
blocked_by_issue_idsNo

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already signal destructive, non-idempotent behavior, and the description adds useful context by calling the state 'authoritative' and noting it returns only a compact acknowledgement. It does not elaborate on what may be overwritten or which fields can have destructive effects, but it does not contradict the 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 tight sentences with no filler. It front-loads the core purpose, gives an immediate usage rule, states the key exclusion, and discloses the return behavior—all in minimal space.

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?

The tool has 17 parameters, no output schema, and almost no per-parameter documentation. The description covers purpose and broad usage but does not provide enough guidance for an agent to confidently choose and populate fields in complex update scenarios, nor does it explain destructive consequences beyond the annotation.

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 only 6%, and the description does not compensate. It vaguely maps to 'status/assignment/field changes and optional comments', but 17 parameters remain largely unexplained, including title, priority, labels, parent_id, project_id, hidden_at, interrupt, and blocked_by_issue_ids.

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 ('Update'), a clear resource ('authoritative issue state'), and the kinds of changes it supports ('status/assignment/field changes and optional comments'). It also distinguishes itself by saying 'never edit snapshot files', which separates it from related tools without ambiguity.

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 says when to use the tool: for status, assignment, field changes, and optional comments. It also gives a clear exclusion ('never edit snapshot files'), though it does not name a specific sibling tool as the alternative.

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

paperclip_rawRaw Paperclip API fallbackA

Fallback for Paperclip endpoints not covered by dedicated tools. Relative same-origin paths only. GET/HEAD return Markdown inline below the configured token threshold and otherwise only a new immutable snapshot path; mutations return only a compact acknowledgement. Prefer dedicated tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo
pathYesRelative Paperclip path such as /api/companies/...; external URLs are rejected.
queryNo
methodNoGET
all_fieldsNoFor read responses, keep every returned field in the rendered Markdown. Delivery threshold behavior is unchanged.

TDQS

A4.4/5.0
Behavior4/5

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

The annotations only provide openWorldHint, so the description carries the behavioral disclosure burden. It does well by explaining that GET/HEAD return inline Markdown below a token threshold or a new immutable snapshot path above it, and that mutations return only a compact acknowledgement. Error, auth, and rate-limit behavior are not covered, but the core response behavior is transparent.

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 tight sentences front-load the purpose, then the constraint, then the behavioral contract. There is no filler and every sentence 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 an open-ended fallback with no output schema, the description covers scope, path restrictions, response behavior, and sibling precedence. Auth and error details are absent, but they are somewhat endpoint-dependent and thus not critical for a raw fallback tool.

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 coverage is only 40%, and the description adds some method-level meaning by contrasting GET/HEAD vs mutations and by reinforcing the path restriction. However, it does not explain body, query, or all_fields beyond what the schema already offers, leaving a gap for a generic fallback tool with five 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 states the tool is a raw fallback for Paperclip endpoints not covered by dedicated tools, and it specifies the HTTP surface through relative same-origin paths and method-specific behavior. This clearly distinguishes it from the many dedicated sibling tools on the same API.

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 says 'Prefer dedicated tools' and defines itself as the fallback for endpoints 'not covered by dedicated tools', giving an agent a direct decision rule. It also adds a hard constraint: relative same-origin paths only, with external URLs rejected.

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. Dates show when Glama detected each change.

  1. 16 tool updatesv0.6.0
    • First observedpaperclip_agents
    • First observedpaperclip_comment_add
    • First observedpaperclip_comments
    • First observedpaperclip_context
    • First observedpaperclip_document
    • First observedpaperclip_document_put
    • First observedpaperclip_documents
    • First observedpaperclip_heartbeat_context
    • First observedpaperclip_inbox
    • First observedpaperclip_issue
    • First observedpaperclip_issue_checkout
    • First observedpaperclip_issue_create
    • First observedpaperclip_issue_release
    • First observedpaperclip_issue_update
    • First observedpaperclip_issues
    • First observedpaperclip_raw

TDQS

A4/5.0
Disambiguation4/5

Most tools target a distinct resource and action, with clear singular/plural pairs such as issue/issues and document/documents. The main ambiguity is paperclip_context vs paperclip_heartbeat_context, but their descriptions differentiate current run/wake state from an issue-specific heartbeat.

Naming Consistency5/5

All tools share the paperclip_ prefix and follow a predictable pattern: read operations use resource nouns while mutations use resource_action naming like paperclip_issue_create and paperclip_comment_add. The paperclip_raw fallback is clearly labeled and does not disrupt the overall convention.

Tool Count4/5

At 16 tools the surface is slightly above the ideal 3-15 range, but the count is justified by the domain: issue lifecycle, comments, documents, agent lookup, context retrieval, and a raw fallback each have a distinct purpose. Nothing feels redundant or excessive.

Completeness4/5

The core issue workflow is well covered: list/get/create/update/checkout/release, plus comments, documents, agents, and context. Minor gaps such as no explicit delete or comment edit exist, but the update operations and paperclip_raw fallback give agents practical workarounds.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to automate GitHub repository management, issue tracking, and commits using natural language.
    10
    Apache 2.0

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/auralab-dev/paperclip-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server