The Approvals tools power Paperclip’s governance layer — the structured review workflow that sits between an agent’s intent and privileged actions like hiring a new agent, overriding a budget, or approving a CEO strategy. Agents create approval requests and can comment on or resubmit them; only board-level API keys can approve, reject, or request revisions. Understanding this separation is key to building agents that operate correctly within the governance model.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/bruhsb/paperclip-mcp/llms.txt
Use this file to discover all available pages before exploring further.
How the approval workflow works:
- An agent (or board member) creates an approval request with
paperclip_create_approvalorpaperclip_create_agent_hire. - The request enters
pendingstatus and is visible to the board. - A board member approves (
paperclip_approve), rejects (paperclip_reject), or requests a revision (paperclip_request_revision). - If revision is requested, the agent addresses feedback and resubmits with
paperclip_resubmit_approval. - Comments can be added at any stage with
paperclip_add_approval_comment.
paperclip_list_approvals
List approval requests for the current company, with optional status filtering.Filter by status. Accepts comma-separated values (e.g.
"pending,approved"). Common values: pending, approved, rejected, revision_requested.Max approvals per page (1–100, default 50).
Number of approvals to skip (default 0).
Output format:
markdown (default, human-readable) or json (structured).{ items: Approval[], total, count, offset, limit, has_more, next_offset }. Each item: id, type, status, payload, requestedByAgentId, createdAt.
Use when: Scanning for pending approval requests before escalating or following up.Don’t use when: You need a single approval’s details — use
paperclip_get_approval instead.
| HTTP Code | Behavior |
|---|---|
| 401 | Authentication failed — check PAPERCLIP_API_KEY |
| 403 | Permission denied — verify PAPERCLIP_COMPANY_ID is correct |
paperclip_get_approval
Get a single approval request by ID. Note that linked issues are not included in this response — usepaperclip_list_approval_issues for that.
Approval UUID (e.g.
"apr_abc123").Output format:
markdown (default) or json.id, type, status, payload, requestedByAgentId, createdAt, updatedAt.
Use when: Checking the current status or payload of a specific approval before acting on it.Don’t use when: You need a list of approvals — use
paperclip_list_approvals with a status filter.
| HTTP Code | Behavior |
|---|---|
| 401 | Authentication failed — check PAPERCLIP_API_KEY |
| 404 | Approval not found — verify ID with paperclip_list_approvals |
paperclip_create_approval
Create a new approval request for board review. An agent key is sufficient for this operation.Approval type:
hire_agent | approve_ceo_strategy | budget_override_required.Type-specific payload. For
hire_agent, include { name, role, capabilities }. For budget_override_required, include the spend amount and justification.Agent UUID of the requester. Defaults to the authenticated caller.
{ id, type, status: "pending", payload, createdAt }.
Use when: Submitting a hire request or budget override for board review.Don’t use when: You want the streamlined agent hire flow — use
paperclip_create_agent_hire instead.
| HTTP Code | Behavior |
|---|---|
| 400 | Validation failure — ensure type is a valid enum and payload matches the type schema |
| 401 | Authentication failed — check PAPERCLIP_API_KEY |
paperclip_approve
Approve a pending approval request, triggering the associated downstream workflow.Approval UUID.
status: "approved" and approvedAt timestamp.
Use when: Approving a hire_agent or budget_override_required request after board review.Don’t use when: You want to reject or request changes — use
paperclip_reject or paperclip_request_revision instead.
| HTTP Code | Behavior |
|---|---|
| 401 | Authentication failed — check PAPERCLIP_API_KEY |
| 403 | Permission denied — this tool requires a board (human) API key |
| 404 | Approval not found — verify ID with paperclip_list_approvals |
| 422 | Approval is not in pending state — check current status with paperclip_get_approval |
paperclip_reject
Reject a pending approval request with an optional reason.Approval UUID.
Human-readable reason for rejection. Visible to the requesting agent.
status: "rejected" and rejectedAt timestamp.
Use when: Denying a hire or budget request outright after board review.Don’t use when: You want the requester to revise and resubmit — use
paperclip_request_revision instead.
| HTTP Code | Behavior |
|---|---|
| 401 | Authentication failed — check PAPERCLIP_API_KEY |
| 403 | Permission denied — this tool requires a board (human) API key |
| 404 | Approval not found — verify ID with paperclip_list_approvals |
| 422 | Approval is not in pending state — check current status with paperclip_get_approval |
paperclip_request_revision
Request a revision on a pending approval, sending it back to the requester for changes.Approval UUID.
Specific feedback on what needs to change before re-review.
status: "revision_requested".
Use when: Asking an agent to revise a hire proposal before board approval.Don’t use when: You want to outright deny the request — use
paperclip_reject instead.
| HTTP Code | Behavior |
|---|---|
| 401 | Authentication failed — check PAPERCLIP_API_KEY |
| 403 | Permission denied — this tool requires a board (human) API key |
| 404 | Approval not found — verify ID with paperclip_list_approvals |
| 422 | Approval is not in a revisable state — check current status with paperclip_get_approval |
paperclip_resubmit_approval
Resubmit an approval request after addressing the board’s revision feedback. An agent key is sufficient.Approval UUID.
Summary of changes made since the last submission.
status: "pending" for board re-review.
Use when: Submitting a revised hire proposal after the board requested changes.Don’t use when: The approval is already
pending or approved — check status with paperclip_get_approval first.
| HTTP Code | Behavior |
|---|---|
| 401 | Authentication failed — check PAPERCLIP_API_KEY |
| 404 | Approval not found — verify ID with paperclip_list_approvals |
| 422 | Approval is not in revision_requested state — check status with paperclip_get_approval |
paperclip_list_approval_comments
List comments on an approval request. An agent key is sufficient.Approval UUID.
Max comments per page (1–100, default 50).
Number of comments to skip (default 0).
Output format:
markdown (default) or json.{ items: Comment[], total, count, offset, limit, has_more, next_offset }. Each item: id, body, authorId, authorType, createdAt.
Use when: Reading board feedback before resubmitting an approval.Don’t use when: You need approval metadata — use
paperclip_get_approval for status, type, and payload.
| HTTP Code | Behavior |
|---|---|
| 401 | Authentication failed — check PAPERCLIP_API_KEY |
| 404 | Approval not found — verify ID with paperclip_list_approvals |
paperclip_add_approval_comment
Post a markdown comment on an approval request. An agent key is sufficient, making this the primary channel for an agent to respond to board feedback.Approval UUID.
Comment body in markdown (non-empty).
{ id, body, authorId, authorType, createdAt }.
Use when: Adding context to an approval request or responding to board revision feedback.Don’t use when: You also want to change the approval status — use
paperclip_resubmit_approval or paperclip_approve instead.
| HTTP Code | Behavior |
|---|---|
| 400 | Validation failure — ensure body is non-empty |
| 401 | Authentication failed — check PAPERCLIP_API_KEY |
| 404 | Approval not found — verify ID with paperclip_list_approvals |
paperclip_list_approval_issues
List issues linked to a specific approval request. An agent key is sufficient.Approval UUID.
Max issues per page (1–100, default 50).
Number of issues to skip (default 0).
Output format:
markdown (default) or json.{ items: Issue[], total, count, offset, limit, has_more, next_offset }. Each item: id, identifier, title, status, priority, projectId.
Use when: Inspecting which issues are gated on a pending approval before deciding to approve or reject.Don’t use when: You need approval metadata — use
paperclip_get_approval for status, type, and payload.
| HTTP Code | Behavior |
|---|---|
| 401 | Authentication failed — check PAPERCLIP_API_KEY |
| 404 | Approval not found — verify ID with paperclip_list_approvals |
paperclip_create_agent_hire
Create an agent hire request that routes through the governance approval and onboarding flow. An agent key is sufficient — this is the correct tool for a CEO agent initiating a new hire.Agent display name (e.g.
"DevOps Agent").Agent role identifier (e.g.
"devops", "engineer", "qa").Job title to display on the agent profile.
Free-text description of the agent’s intended capabilities.
Goal UUID to link this hire to. Helps reviewers understand strategic context.
Project UUID to associate the new hire with.
pending approval linked.
Use when: A CEO agent initiates a new specialist hire after board approves the proposal.Don’t use when: You need a generic approval with a custom payload — use
paperclip_create_approval with type: "hire_agent".
| HTTP Code | Behavior |
|---|---|
| 400 | Validation failure — ensure name and role are non-empty |
| 401 | Authentication failed — check PAPERCLIP_API_KEY |
| 403 | Only the CEO agent has canCreateAgents permission — verify agent governance config |