EvoHub DocsEvoHub Docs Sign in

Add an action item

Use with AI
View as MarkdownThis page as plain text, for pasting into an AI tool Open in ClaudeAsk Claude questions about this page Open in ChatGPTAsk ChatGPT questions about this page
Connect to Cursor / VS Code / ClaudeSearch and read these docs from your AI tool (MCP server)

MCP server URL

https://docs.evohub.io/mcp

Claude Code

claude mcp add --transport http evohub-docs https://docs.evohub.io/mcp

Claude (claude.ai and Claude Desktop): Settings → Connectors → Add custom connector, and paste the URL above.

Claude Desktop — claude_desktop_config.json

{
  "mcpServers": {
    "evohub-docs": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://docs.evohub.io/mcp"
      ]
    }
  }
}

Cursor — ~/.cursor/mcp.json

{
  "mcpServers": {
    "evohub-docs": {
      "url": "https://docs.evohub.io/mcp"
    }
  }
}

VS Code — .vscode/mcp.json

{
  "servers": {
    "evohub-docs": {
      "type": "http",
      "url": "https://docs.evohub.io/mcp"
    }
  }
}
POST/api/v1/retro/boards/{boardID}/action-items

Adds an open action item to an active board.

  • description is required.
  • assignee_user_id makes a member of the organization the item's owner; anyone else answers 400 ASSIGNEE_NOT_MEMBER. assignee is a free-text name instead, for someone outside EvoHub.
  • due_at is RFC 3339, or left out or null for no due date.

Requires the retro:action:write scope, and retro:card:write as well.

Authorization

Any one of:

Parameters

Path parameters

  • boardID string required
    The board's ID.
    Example: brd_3f9a1c7e2b8d4a60

Request body required

Content type: application/json

Type: CreateActionItemRequest

  • description string required
  • assignee string
    A free-text owner name.
  • assignee_user_id string | null
    An organization member who owns the item.
  • due_at string (date-time) | null

Responses

201

The action item was added.

Content type: application/json

Type: object

  • success boolean
  • data ActionItem
    Show ActionItem properties
    • id string
      Example: act_5b2e8c1d9f4a7e30
    • board_id string
    • description string
    • assignee string
      A free-text owner name; "" when none.
    • assignee_user_id string | null
      The organization member who owns the item.
    • status string
      One of: open done
    • created_at string (date-time)
    • updated_at string (date-time)
      When the item last changed.
    • completed_at string (date-time) | null
      When the item was marked done; null while open, and for some items done before this was recorded.
    • due_at string (date-time) | null

400

The body is not JSON or due_at is not RFC 3339 (INVALID_BODY), description is missing or blank (MISSING_DESCRIPTION), or assignee_user_id is not a member of the organization (ASSIGNEE_NOT_MEMBER).

Content type: application/json

Type: Error

  • success boolean
    Sent by Retro itself; refusals before the request reaches Retro (401, 429) carry only error.
    Value: false
  • error object required
    • code string required
      Example: NOT_FOUND
    • message string required
      Example: board not found
    • request_id string

401

No API key was sent, or it is unknown, revoked or expired (UNAUTHORIZED).

Content type: application/json

Type: Error

  • success boolean
    Sent by Retro itself; refusals before the request reaches Retro (401, 429) carry only error.
    Value: false
  • error object required
    • code string required
      Example: NOT_FOUND
    • message string required
      Example: board not found
    • request_id string

403

The key lacks the scope this endpoint needs (FORBIDDEN).

Content type: application/json

Type: Error

  • success boolean
    Sent by Retro itself; refusals before the request reaches Retro (401, 429) carry only error.
    Value: false
  • error object required
    • code string required
      Example: NOT_FOUND
    • message string required
      Example: board not found
    • request_id string

404

The board does not exist, or the caller cannot see it (NOT_FOUND).

Content type: application/json

Type: Error

  • success boolean
    Sent by Retro itself; refusals before the request reaches Retro (401, 429) carry only error.
    Value: false
  • error object required
    • code string required
      Example: NOT_FOUND
    • message string required
      Example: board not found
    • request_id string

409

The board is closed and its content cannot change (BOARD_CLOSED). Reopen it first.

Content type: application/json

Type: Error

  • success boolean
    Sent by Retro itself; refusals before the request reaches Retro (401, 429) carry only error.
    Value: false
  • error object required
    • code string required
      Example: NOT_FOUND
    • message string required
      Example: board not found
    • request_id string

429

Too many requests (RATE_LIMITED). Wait for Retry-After seconds.

Headers

  • Retry-After integer
    Seconds to wait before retrying.

Content type: application/json

Type: Error

  • success boolean
    Sent by Retro itself; refusals before the request reaches Retro (401, 429) carry only error.
    Value: false
  • error object required
    • code string required
      Example: NOT_FOUND
    • message string required
      Example: board not found
    • request_id string

500

Something went wrong on EvoHub's side (INTERNAL_ERROR). Retry later.

Content type: application/json

Type: Error

  • success boolean
    Sent by Retro itself; refusals before the request reaches Retro (401, 429) carry only error.
    Value: false
  • error object required
    • code string required
      Example: NOT_FOUND
    • message string required
      Example: board not found
    • request_id string

503

The owner's membership could not be checked right now (MEMBER_CHECK_UNAVAILABLE). Retry shortly.

Content type: application/json

Type: Error

  • success boolean
    Sent by Retro itself; refusals before the request reaches Retro (401, 429) carry only error.
    Value: false
  • error object required
    • code string required
      Example: NOT_FOUND
    • message string required
      Example: board not found
    • request_id string

Example request

curl -X POST 'https://evohub.io/api/v1/retro/boards/brd_3f9a1c7e2b8d4a60/action-items' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer <TOKEN>' \
  -d '{
  "due_at": "2026-11-07T17:00:00Z",
  "description": "Add a staging smoke test before each release",
  "assignee_user_id": "usr_9c4d2f7a1e6b3058"
}'