MCP 2025-06-18

projects_execute

Execute a Projects operation with its typed payload. Account and credential scope come from the current key. list, get, collectionContext, tasksPage, taskGet and comments read in one call. Every write needs expectedVersion where it has one, and receipt: { operation, key, issuedAt, requestHash }, where operation names the write (tasks.create, tasks.update, tasks.move, comments.create), key is unique, issuedAt is now in milliseconds and requestHash is the SHA-256 hex of the payload without receipt, serialized as compact JSON with object keys sorted by localeCompare and undefined values left out. taskMove takes each column's generation from collectionContext.orders. tasksPage filters is a JSON string such as { statusId, assignee: { kind: 'unassigned' } }.

Scopes

Reads need read:projects. Writes also need write:projects; creating and managing projects, statuses and settings also need manage:projects.

  • read:projects

Input schema

This schema is shared with tools/list, including the required fields and additionalProperties rules.

Synthetic example · JSON
{
  "type": "object",
  "properties": {
    "operation": {
      "enum": [
        "admitRead",
        "renewRead",
        "releaseRead",
        "list",
        "get",
        "collectionContext",
        "tasksPage",
        "taskGet",
        "sprintsList",
        "create",
        "update",
        "setLegacyDefault",
        "taskCreate",
        "taskUpdate",
        "taskMove",
        "sprintCreate",
        "sprintUpdate",
        "statusCreate",
        "statusUpdate",
        "statusesReorder",
        "tagCreate",
        "tagUpdate",
        "tagMerge",
        "commentCreate",
        "sprintStart",
        "sprintRetry",
        "sprintCancel",
        "sprintComplete",
        "metrics",
        "overview",
        "dashboard",
        "burndown",
        "sprintRolloverTask",
        "rebalance",
        "comments"
      ]
    },
    "payload": {
      "type": "object",
      "description": "Operation payload from the Projects API contract; omit account/service/authorization selectors."
    }
  },
  "required": [
    "operation",
    "payload"
  ],
  "additionalProperties": false
}

Call this tool

Send it as POST https://www.specifywork.com/api/mcp. Authorization: Bearer <agent key>, a key that starts with sw_agent. Replace the example values with records your key can reach.

Synthetic example · JSON
{
  "jsonrpc": "2.0",
  "id": "example_projects_execute",
  "method": "tools/call",
  "params": {
    "name": "projects_execute",
    "arguments": {
      "operation": "admitRead",
      "payload": {}
    }
  }
}

Read the result before continuing

The selected Projects operation's result.

A call returns content[0].text with the JSON result and structuredContent.result with the same value. A refused call returns isError: true and the error code in content[0].text.

A request being accepted is not proof of an external action completing. Keep correlation IDs and mutation idempotency keys unchanged across safe retries.