MCP 2025-06-18

task_create

Create a task in a project. Set source to where the request came from, such as { type: 'slack', url: <https message link> }; task_list sourceUrl finds it again.

Scopes

The agent key needs these scopes. The server also checks access to each record before returning data or changing it.

  • read:projects
  • write:projects

Input schema

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

Synthetic example · JSON
{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "description": "Project name, key (DEV) or ID"
    },
    "title": {
      "type": "string",
      "description": "Concise task title"
    },
    "description": {
      "type": "string",
      "description": "Full task description"
    },
    "status": {
      "type": "string",
      "description": "Status name (Ready, In progress), kind (backlog, ready, active, waiting, review, done) or ID"
    },
    "priority": {
      "enum": [
        "low",
        "normal",
        "high",
        "urgent"
      ]
    },
    "assignee": {
      "enum": [
        "me"
      ]
    },
    "source": {
      "type": "object",
      "properties": {
        "url": {
          "type": "string",
          "format": "uri",
          "pattern": "^https://"
        },
        "type": {
          "type": "string",
          "description": "A short word such as slack or github"
        }
      },
      "required": [
        "url"
      ],
      "additionalProperties": false
    },
    "idempotencyKey": {
      "type": "string",
      "description": "Unique retry key retained for 24 hours"
    }
  },
  "required": [
    "project",
    "title",
    "idempotencyKey"
  ],
  "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_task_create",
  "method": "tools/call",
  "params": {
    "name": "task_create",
    "arguments": {
      "project": "<project>",
      "title": "<title>",
      "idempotencyKey": "retry-1"
    }
  }
}

Read the result before continuing

The created task.

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.