Back to Paperclip

Task Management MCP Interface

doc/TASKS-mcp.md

2026.428.019.2 KB
Original Source

Task Management MCP Interface

Function contracts for the Paperclip task management system. Defines the operations available to agents (and external tools) via MCP. Refer to TASKS.md for the underlying data model.

All operations return JSON. IDs are UUIDs. Timestamps are ISO 8601. Issue identifiers (e.g. ENG-123) are accepted anywhere an issue id is expected.


Issues

list_issues

List and filter issues in the workspace.

ParameterTypeRequiredNotes
querystringnoFree-text search across title and description
teamIdstringnoFilter by team
statusstringnoFilter by specific workflow state
stateTypestringnoFilter by state category: triage, backlog, unstarted, started, completed, cancelled
assigneeIdstringnoFilter by assignee (agent id)
projectIdstringnoFilter by project
parentIdstringnoFilter by parent issue (returns sub-issues)
labelIdsstring[]noFilter to issues with ALL of these labels
prioritynumbernoFilter by priority (0-4)
includeArchivedbooleannoInclude archived issues. Default: false
orderBystringnocreated, updated, priority, due_date. Default: created
limitnumbernoMax results. Default: 50
afterstringnoCursor for forward pagination
beforestringnoCursor for backward pagination

Returns: { issues: Issue[], pageInfo: { hasNextPage, endCursor, hasPreviousPage, startCursor } }


get_issue

Retrieve a single issue by ID or identifier, with all relations expanded.

ParameterTypeRequiredNotes
idstringyesUUID or human-readable identifier (e.g. ENG-123)

Returns: Full Issue object including:

  • state (expanded WorkflowState)
  • assignee (expanded Agent, if set)
  • labels (expanded Label[])
  • relations (IssueRelation[] with expanded related issues)
  • children (sub-issue summaries: id, identifier, title, state, assignee)
  • parent (summary, if this is a sub-issue)
  • comments (Comment[], most recent first)

create_issue

Create a new issue.

ParameterTypeRequiredNotes
titlestringyes
teamIdstringyesTeam the issue belongs to
descriptionstringnoMarkdown
statusstringnoWorkflow state. Default: team's default state
prioritynumberno0-4. Default: 0 (none)
estimatenumbernoPoint estimate
dueDatestringnoISO date
assigneeIdstringnoAgent to assign
projectIdstringnoProject to associate with
milestoneIdstringnoMilestone within the project
parentIdstringnoParent issue (makes this a sub-issue)
goalIdstringnoLinked goal/objective
labelIdsstring[]noLabels to apply
sortOrdernumbernoOrdering within views

Returns: Created Issue object with computed fields (identifier, createdAt, etc.)

Side effects:

  • If parentId is set, inherits projectId from parent (unless explicitly provided)
  • identifier is auto-generated from team key + next sequence number

update_issue

Update an existing issue.

ParameterTypeRequiredNotes
idstringyesUUID or identifier
titlestringno
descriptionstringno
statusstringnoTransition to a new workflow state
prioritynumberno0-4
estimatenumberno
dueDatestringnoISO date, or null to clear
assigneeIdstringnoAgent id, or null to unassign
projectIdstringnoProject id, or null to remove from project
milestoneIdstringnoMilestone id, or null to clear
parentIdstringnoReparent, or null to promote to standalone
goalIdstringnoGoal id, or null to unlink
labelIdsstring[]noReplaces all labels (not additive)
teamIdstringnoMove to a different team
sortOrdernumbernoOrdering within views

Returns: Updated Issue object.

Side effects:

  • Changing status to a state with category started sets startedAt (if not already set)
  • Changing status to completed sets completedAt
  • Changing status to cancelled sets cancelledAt
  • Moving to completed/cancelled with sub-issue auto-close enabled completes open sub-issues
  • Changing teamId re-assigns the identifier (e.g. ENG-42DES-18); old identifier preserved in previousIdentifiers

archive_issue

Soft-archive an issue. Sets archivedAt. Does not delete.

ParameterTypeRequired
idstringyes

Returns: { success: true }


list_my_issues

List issues assigned to a specific agent. Convenience wrapper around list_issues with assigneeId pre-filled.

ParameterTypeRequiredNotes
agentIdstringyesThe agent whose issues to list
stateTypestringnoFilter by state category
orderBystringnoDefault: priority
limitnumbernoDefault: 50

Returns: Same shape as list_issues.


Workflow States

list_workflow_states

List workflow states for a team, grouped by category.

ParameterTypeRequired
teamIdstringyes

Returns: { states: WorkflowState[] } -- ordered by category (triage, backlog, unstarted, started, completed, cancelled), then by position within each category.


get_workflow_state

Look up a workflow state by name or ID.

ParameterTypeRequiredNotes
teamIdstringyes
querystringyesState name or UUID

Returns: Single WorkflowState object.


Teams

list_teams

List all teams in the workspace.

| Parameter | Type | Required | | --------- | ------ | -------- | -------------- | | query | string | no | Filter by name |

Returns: { teams: Team[] }


get_team

Get a team by name, key, or ID.

ParameterTypeRequiredNotes
querystringyesTeam name, key, or UUID

Returns: Single Team object.


Projects

list_projects

List projects in the workspace.

ParameterTypeRequiredNotes
teamIdstringnoFilter to projects containing issues from this team
statusstringnoFilter by status: backlog, planned, in_progress, completed, cancelled
includeArchivedbooleannoDefault: false
limitnumbernoDefault: 50
afterstringnoCursor

Returns: { projects: Project[], pageInfo }


get_project

Get a project by name or ID.

ParameterTypeRequired
querystringyes

Returns: Single Project object including milestones[] and issue count by state category.


create_project

ParameterTypeRequired
namestringyes
descriptionstringno
summarystringno
leadIdstringno
startDatestringno
targetDatestringno

Returns: Created Project object. Status defaults to backlog.


update_project

ParameterTypeRequired
idstringyes
namestringno
descriptionstringno
summarystringno
statusstringno
leadIdstringno
startDatestringno
targetDatestringno

Returns: Updated Project object.


archive_project

Soft-archive a project. Sets archivedAt. Does not delete.

ParameterTypeRequired
idstringyes

Returns: { success: true }


Milestones

list_milestones

ParameterTypeRequired
projectIdstringyes

Returns: { milestones: Milestone[] } -- ordered by sortOrder.


get_milestone

Get a milestone by ID.

ParameterTypeRequired
idstringyes

Returns: Single Milestone object with issue count by state category.


create_milestone

ParameterTypeRequired
projectIdstringyes
namestringyes
descriptionstringno
targetDatestringno
sortOrdernumberno

Returns: Created Milestone object.


update_milestone

ParameterTypeRequired
idstringyes
namestringno
descriptionstringno
targetDatestringno
sortOrdernumberno

Returns: Updated Milestone object.


Labels

list_labels

List labels available for a team (includes workspace-level labels).

ParameterTypeRequiredNotes
teamIdstringnoIf omitted, returns only workspace labels

Returns: { labels: Label[] } -- grouped by label group, ungrouped labels listed separately.


get_label

Get a label by name or ID.

ParameterTypeRequiredNotes
querystringyesLabel name or UUID

Returns: Single Label object.


create_label

ParameterTypeRequiredNotes
namestringyes
colorstringnoHex color. Auto-assigned if omitted
descriptionstringno
teamIdstringnoOmit for workspace-level label
groupIdstringnoParent label group

Returns: Created Label object.


update_label

ParameterTypeRequired
idstringyes
namestringno
colorstringno
descriptionstringno

Returns: Updated Label object.


Issue Relations

list_issue_relations

List all relations for an issue.

ParameterTypeRequired
issueIdstringyes

Returns: { relations: IssueRelation[] } -- each with expanded relatedIssue summary (id, identifier, title, state).


create_issue_relation

Create a relation between two issues.

ParameterTypeRequiredNotes
issueIdstringyesSource issue
relatedIssueIdstringyesTarget issue
typestringyesrelated, blocks, blocked_by, duplicate

Returns: Created IssueRelation object.

Side effects:

  • duplicate auto-transitions the source issue to a cancelled state
  • Creating blocks from A->B implicitly means B is blocked_by A (both directions visible when querying either issue)

delete_issue_relation

Remove a relation between two issues.

ParameterTypeRequired
idstringyes

Returns: { success: true }


Comments

list_comments

List comments on an issue.

ParameterTypeRequiredNotes
issueIdstringyes
limitnumbernoDefault: 50

Returns: { comments: Comment[] } -- threaded (top-level comments with nested children).


create_comment

Add a comment to an issue.

ParameterTypeRequiredNotes
issueIdstringyes
bodystringyesMarkdown
parentIdstringnoReply to an existing comment (thread)

Returns: Created Comment object.


update_comment

Update a comment's body.

ParameterTypeRequired
idstringyes
bodystringyes

Returns: Updated Comment object.


resolve_comment

Mark a comment thread as resolved.

ParameterTypeRequired
idstringyes

Returns: Updated Comment with resolvedAt set.


Initiatives

list_initiatives

ParameterTypeRequiredNotes
statusstringnoplanned, active, completed
limitnumbernoDefault: 50

Returns: { initiatives: Initiative[] }


get_initiative

ParameterTypeRequired
querystringyes

Returns: Single Initiative object with expanded projects[] (summaries with status and issue count).


create_initiative

ParameterTypeRequired
namestringyes
descriptionstringno
ownerIdstringno
targetDatestringno
projectIdsstring[]no

Returns: Created Initiative object. Status defaults to planned.


update_initiative

ParameterTypeRequired
idstringyes
namestringno
descriptionstringno
statusstringno
ownerIdstringno
targetDatestringno
projectIdsstring[]no

Returns: Updated Initiative object.


archive_initiative

Soft-archive an initiative. Sets archivedAt. Does not delete.

ParameterTypeRequired
idstringyes

Returns: { success: true }


Summary

Entitylistgetcreateupdatedelete/archive
Issuexxxxarchive
WorkflowStatexx------
Teamxx------
Projectxxxxarchive
Milestonexxxx--
Labelxxxx--
IssueRelationx--x--x
Commentx--xxresolve
Initiativexxxxarchive

Total: 35 operations

Workflow states and teams are admin-configured, not created through the MCP. The MCP is primarily for agents to manage their work: create issues, update status, coordinate via relations and comments, and understand project context.