EvoHub DocsEvoHub Docs Sign in

Control the board's timer

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}/timer

Runs the board's shared countdown, which everyone on the board sees:

action What it does
start Starts a countdown of minutes (1–120), replacing any timer.
pause Pauses a running countdown that has time left.
resume Resumes a paused countdown.
add_minute Adds a minute to a running or paused countdown; one that reached zero restarts from now.
stop Clears the timer.

An action the timer is not in a state for answers 409 TIMER_STATE. The board must be active. The answer is the timer afterwards; count down against server_time rather than your own clock.

Requires the retro:board:write scope.

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: object

  • action string required
    One of: start pause resume add_minute stop
  • minutes integer
    The countdown's length; required for start, ignored otherwise.
    Minimum: 1 · Maximum: 120

Responses

200

The timer.

Content type: application/json

Type: object

  • success boolean
  • data Timer
    Show Timer properties
    • state string
      A running timer whose end has passed stays running with remaining_ms 0 until it is stopped.
      One of: idle running paused
    • ends_at string (date-time)
      When a running countdown ends; left out otherwise.
    • remaining_ms integer (int64)
      Time left, in milliseconds.
    • server_time string (date-time)
      The server's clock when the timer was read.

400

The body is not JSON (INVALID_BODY), action is unknown (INVALID_ACTION), or start has minutes outside 1–120 (INVALID_MINUTES).

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 (BOARD_CLOSED), or the timer cannot take this action now (TIMER_STATE).

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

Example request

curl -X POST 'https://evohub.io/api/v1/retro/boards/brd_3f9a1c7e2b8d4a60/timer' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer <TOKEN>' \
  -d '{
  "action": "start",
  "minutes": 5
}'