{
  "openapi": "3.1.0",
  "info": {
    "title": "Optiverse API",
    "version": "2.0.0",
    "description": "The Optiverse public API. Every v2 operation is also an MCP tool at https://assistant.optiverse.ai/mcp (see `x-mcp-tool`).\n\nAuthenticate with your personal API key: `Authorization: Bearer optiuser_v1_…` (Settings → API).\n\nSuccess responses are `{ data, pagination? }`; errors are `{ error: { code, message, retryable, requestId } }`.\n\nEvery response carries `X-Request-Id`; authenticated responses also carry `RateLimit-Limit` / `RateLimit-Remaining` / `RateLimit-Reset` headers."
  },
  "servers": [
    {
      "url": "https://developer.optiverse.ai/api"
    }
  ],
  "tags": [
    {
      "name": "Agent"
    },
    {
      "name": "Meetings"
    },
    {
      "name": "Calendar"
    },
    {
      "name": "Topics"
    },
    {
      "name": "Summaries"
    },
    {
      "name": "Boards"
    },
    {
      "name": "Help"
    },
    {
      "name": "Uploads"
    },
    {
      "name": "Meta"
    }
  ],
  "paths": {
    "/v2/agent/ask": {
      "post": {
        "operationId": "askOptiverse",
        "summary": "Ask Optiverse",
        "description": "Ask the full Optiverse Agent to answer from your private Optiverse data or act through your connected integrations. It may make difficult-to-reverse changes in external systems.",
        "tags": [
          "Agent"
        ],
        "security": [
          {
            "apiKey": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "message": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 32000,
                    "description": "The request for the Optiverse Agent. Markdown is supported."
                  },
                  "sessionId": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Session to continue, from a previous answer. Omit to start a new private session."
                  }
                },
                "required": [
                  "message"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "answer": {
                          "type": "string",
                          "description": "The final answer in Markdown."
                        },
                        "sessionId": {
                          "type": "string",
                          "format": "uuid",
                          "description": "Pass back as sessionId to continue the same session."
                        }
                      },
                      "required": [
                        "answer",
                        "sessionId"
                      ],
                      "additionalProperties": false
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              },
              "text/event-stream": {
                "schema": {
                  "type": "string"
                },
                "description": "Sent when the request has `Accept: text/event-stream`: `progress` events (`{ message }`; Ask Optiverse first sends one `session` event, `{ sessionId }`), then one `result` event (the JSON body) or one `error` event (the error envelope)."
              }
            }
          },
          "400": {
            "description": "The request is invalid (`invalid_request`), or the turn was cancelled through the cancel endpoint (`cancelled`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (`unauthorized`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "No credits left for Ask Optiverse (`insufficient_credits`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "You can read the resource but not change it (`forbidden`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The resource does not exist or is not accessible (`not_found`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "A name matches more than one item, or the session is busy (`conflict`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "The request body is larger than 1 MB (`payload_too_large`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (`rate_limited`); see `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "The agent failed (`internal_error`). After execution starts, actions may already have happened: retryable is false and details.sessionId identifies the session to inspect.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The connection to the agent was interrupted (`upstream_unavailable`). Ambiguous failures have retryable: false and details.sessionId; inspect the session before resubmitting.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "504": {
            "description": "The answer took too long (`timeout`). The agent may still be running: retryable is false and details.sessionId identifies the session to inspect or cancel.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-access": "write",
        "x-rate-limit": "10 requests per 60s (agent)",
        "x-mcp-tool": "ask_optiverse"
      }
    },
    "/v2/agent/sessions": {
      "get": {
        "operationId": "listAgentSessions",
        "summary": "List Ask Optiverse sessions",
        "description": "Ask Optiverse sessions started over the API or MCP, newest first.",
        "tags": [
          "Agent"
        ],
        "security": [
          {
            "apiKey": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of results (1-100).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Number of results to skip.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "maximum": 100000,
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "sessions": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "sessionId": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "title": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "source": {
                                "type": "string",
                                "enum": [
                                  "api",
                                  "mcp"
                                ],
                                "description": "Where the session started; either transport can continue it."
                              },
                              "createdAt": {
                                "type": "string"
                              },
                              "updatedAt": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              }
                            },
                            "required": [
                              "sessionId",
                              "title",
                              "source",
                              "createdAt",
                              "updatedAt"
                            ],
                            "additionalProperties": false
                          }
                        }
                      },
                      "required": [
                        "sessions"
                      ],
                      "additionalProperties": false
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid (`invalid_request`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (`unauthorized`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The resource does not exist or is not accessible (`not_found`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (`rate_limited`); see `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected failure (`internal_error`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-access": "read",
        "x-rate-limit": "120 requests per 60s (read)"
      }
    },
    "/v2/agent/sessions/{sessionId}/messages": {
      "get": {
        "operationId": "getAgentSessionMessages",
        "summary": "Get Ask Optiverse session messages",
        "description": "The messages and answers of one Ask Optiverse session, oldest first.",
        "tags": [
          "Agent"
        ],
        "security": [
          {
            "apiKey": []
          }
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "Session ID.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of results (1-100).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Number of results to skip.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "maximum": 100000,
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "session": {
                          "type": "object",
                          "properties": {
                            "sessionId": {
                              "type": "string",
                              "format": "uuid"
                            },
                            "title": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "source": {
                              "type": "string",
                              "enum": [
                                "api",
                                "mcp"
                              ],
                              "description": "Where the session started; either transport can continue it."
                            },
                            "createdAt": {
                              "type": "string"
                            },
                            "updatedAt": {
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          },
                          "required": [
                            "sessionId",
                            "title",
                            "source",
                            "createdAt",
                            "updatedAt"
                          ],
                          "additionalProperties": false
                        },
                        "messages": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "messageId": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "createdAt": {
                                "type": "string"
                              },
                              "message": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "description": "What was asked."
                              },
                              "answer": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "description": "The answer, or null while the turn is running."
                              },
                              "completed": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "messageId",
                              "createdAt",
                              "message",
                              "answer",
                              "completed"
                            ],
                            "additionalProperties": false
                          }
                        }
                      },
                      "required": [
                        "session",
                        "messages"
                      ],
                      "additionalProperties": false
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid (`invalid_request`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (`unauthorized`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The resource does not exist or is not accessible (`not_found`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (`rate_limited`); see `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected failure (`internal_error`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-access": "read",
        "x-rate-limit": "120 requests per 60s (read)"
      }
    },
    "/v2/agent/sessions/{sessionId}/cancel": {
      "post": {
        "operationId": "cancelAgentSession",
        "summary": "Cancel an Ask Optiverse turn",
        "description": "Stops the turn a session is running. cancelled is false when nothing was running.",
        "tags": [
          "Agent"
        ],
        "security": [
          {
            "apiKey": []
          }
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "Session ID.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "sessionId": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "cancelled": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "sessionId",
                        "cancelled"
                      ],
                      "additionalProperties": false
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid (`invalid_request`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (`unauthorized`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "You can read the resource but not change it (`forbidden`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The resource does not exist or is not accessible (`not_found`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "A name matches more than one item, or the session is busy (`conflict`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "The request body is larger than 1 MB (`payload_too_large`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (`rate_limited`); see `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected failure (`internal_error`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "A dependent service is temporarily unavailable (`upstream_unavailable`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-access": "write",
        "x-rate-limit": "60 requests per 60s (write)"
      }
    },
    "/v2/meetings/search": {
      "get": {
        "operationId": "searchMeetings",
        "summary": "Search meetings",
        "description": "Full-text search across every meeting transcript the user can access. Returns matching quotes with speaker, meeting title and date. Use get_meeting or get_meeting_analysis to go deeper on a result. Pass dateFrom/dateTo whenever the question is about a time period.",
        "tags": [
          "Meetings"
        ],
        "security": [
          {
            "apiKey": []
          }
        ],
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "required": true,
            "description": "Search keywords, e.g. \"budget review Q3\".",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 500
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of matching quotes (1-50).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "default": 20
            }
          },
          {
            "name": "dateFrom",
            "in": "query",
            "required": false,
            "description": "Inclusive lower bound on when the meeting happened (ISO date or timestamp).",
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|[+-]\\d{2}:\\d{2}))?$"
            }
          },
          {
            "name": "dateTo",
            "in": "query",
            "required": false,
            "description": "Upper bound on when the meeting happened. A date includes that whole UTC day; a timestamp is exclusive.",
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|[+-]\\d{2}:\\d{2}))?$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "matches": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "recordId": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "meetingTitle": {
                                "type": "string"
                              },
                              "meetingDate": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "speaker": {
                                "type": "string"
                              },
                              "quote": {
                                "type": "string"
                              },
                              "sentenceId": {
                                "anyOf": [
                                  {
                                    "type": "integer"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ],
                                "description": "Position of the quote in the transcript."
                              }
                            },
                            "required": [
                              "recordId",
                              "meetingTitle",
                              "meetingDate",
                              "speaker",
                              "quote",
                              "sentenceId"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "meetingCount": {
                          "type": "integer",
                          "description": "Distinct meetings among the matches."
                        }
                      },
                      "required": [
                        "matches",
                        "meetingCount"
                      ],
                      "additionalProperties": false
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid (`invalid_request`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (`unauthorized`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The resource does not exist or is not accessible (`not_found`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (`rate_limited`); see `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected failure (`internal_error`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-access": "read",
        "x-rate-limit": "120 requests per 60s (read)",
        "x-mcp-tool": "search_meetings"
      }
    },
    "/v2/meetings": {
      "get": {
        "operationId": "listMeetings",
        "summary": "List meetings",
        "description": "List recorded meetings the user can access, most recent first, with a one-sentence summary each. Filter by meeting date, title keyword, attendee email or attendee domain. To pick up new meetings since a point in time, filter on createdFrom: when a meeting became available to the user. Paginate with offset.",
        "tags": [
          "Meetings"
        ],
        "security": [
          {
            "apiKey": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of results (1-100).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Number of results to skip.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "maximum": 100000,
              "default": 0
            }
          },
          {
            "name": "dateFrom",
            "in": "query",
            "required": false,
            "description": "Inclusive lower bound on when the meeting happened (ISO date or timestamp).",
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|[+-]\\d{2}:\\d{2}))?$"
            }
          },
          {
            "name": "dateTo",
            "in": "query",
            "required": false,
            "description": "Upper bound on when the meeting happened. A date includes that whole UTC day; a timestamp is exclusive.",
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|[+-]\\d{2}:\\d{2}))?$"
            }
          },
          {
            "name": "createdFrom",
            "in": "query",
            "required": false,
            "description": "Inclusive lower bound on when the meeting became available to the user: recorded, uploaded or shared (ISO date or timestamp).",
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|[+-]\\d{2}:\\d{2}))?$"
            }
          },
          {
            "name": "createdTo",
            "in": "query",
            "required": false,
            "description": "Upper bound on when the meeting became available to the user. A date includes that whole UTC day; a timestamp is exclusive.",
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|[+-]\\d{2}:\\d{2}))?$"
            }
          },
          {
            "name": "titleSearch",
            "in": "query",
            "required": false,
            "description": "Case-insensitive keyword in the meeting title.",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 500
            }
          },
          {
            "name": "attendeeEmail",
            "in": "query",
            "required": false,
            "description": "Only meetings with this attendee email (partial match).",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 320
            }
          },
          {
            "name": "attendeeDomain",
            "in": "query",
            "required": false,
            "description": "Only meetings with at least one attendee from this email domain, e.g. \"acme.com\".",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "meetings": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "recordId": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "title": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "date": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "description": "Meeting date (YYYY-MM-DD)."
                              },
                              "startDate": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "description": "Meeting start (ISO timestamp)."
                              },
                              "endDate": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "description": "Meeting end (ISO timestamp)."
                              },
                              "durationMinutes": {
                                "type": [
                                  "number",
                                  "null"
                                ]
                              },
                              "attendees": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "organizer": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "description": "Calendar organizer email."
                              },
                              "role": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "description": "Your access to the meeting: owner, invited or guest."
                              },
                              "createdAt": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "description": "When the meeting became available to you: recorded, uploaded or shared (ISO timestamp)."
                              },
                              "summary": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              }
                            },
                            "required": [
                              "recordId",
                              "title",
                              "date",
                              "startDate",
                              "endDate",
                              "durationMinutes",
                              "attendees",
                              "organizer",
                              "role",
                              "createdAt",
                              "summary"
                            ],
                            "additionalProperties": false
                          }
                        }
                      },
                      "required": [
                        "meetings"
                      ],
                      "additionalProperties": false
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid (`invalid_request`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (`unauthorized`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The resource does not exist or is not accessible (`not_found`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (`rate_limited`); see `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected failure (`internal_error`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-access": "read",
        "x-rate-limit": "120 requests per 60s (read)",
        "x-mcp-tool": "list_meetings"
      }
    },
    "/v2/meetings/analysis": {
      "get": {
        "operationId": "getMeetingAnalysis",
        "summary": "Get meeting analysis",
        "description": "Analysis for up to 20 meetings: one-sentence summary, topics with takeaways, and action items. With includeSummaries=true, also the meeting notes and protocol Q&A sections. Meetings that do not exist or that the user cannot access are left out.",
        "tags": [
          "Meetings"
        ],
        "security": [
          {
            "apiKey": []
          }
        ],
        "parameters": [
          {
            "name": "recordIds",
            "in": "query",
            "required": true,
            "description": "Meeting record IDs (1-20).",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              },
              "minItems": 1,
              "maxItems": 20
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "includeSummaries",
            "in": "query",
            "required": false,
            "description": "Also return notes and protocol Q&A sections.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "meetings": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "recordId": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "title": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "oneSentenceSummary": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "topics": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "name": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "type": [
                                        "string",
                                        "null"
                                      ]
                                    },
                                    "takeaways": {
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "content": {
                                            "type": "string"
                                          },
                                          "sentenceIds": {
                                            "type": "array",
                                            "items": {
                                              "type": "integer"
                                            },
                                            "description": "Transcript sentence ids that support this item."
                                          }
                                        },
                                        "required": [
                                          "content",
                                          "sentenceIds"
                                        ],
                                        "additionalProperties": false
                                      }
                                    }
                                  },
                                  "required": [
                                    "name",
                                    "description",
                                    "takeaways"
                                  ],
                                  "additionalProperties": false
                                }
                              },
                              "actionItems": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "text": {
                                      "type": "string"
                                    },
                                    "type": {
                                      "type": [
                                        "string",
                                        "null"
                                      ]
                                    },
                                    "isDone": {
                                      "type": "boolean"
                                    },
                                    "sentenceIds": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "description": "Transcript sentence ids that support this item."
                                    }
                                  },
                                  "required": [
                                    "text",
                                    "type",
                                    "isDone",
                                    "sentenceIds"
                                  ],
                                  "additionalProperties": false
                                }
                              },
                              "summaries": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "protocolId": {
                                      "type": [
                                        "string",
                                        "null"
                                      ]
                                    },
                                    "protocolTitle": {
                                      "type": "string"
                                    },
                                    "markdown": {
                                      "type": [
                                        "string",
                                        "null"
                                      ]
                                    },
                                    "sections": {
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "title": {
                                            "type": "string"
                                          },
                                          "answers": {
                                            "type": "array",
                                            "items": {
                                              "type": "string"
                                            }
                                          }
                                        },
                                        "required": [
                                          "title",
                                          "answers"
                                        ],
                                        "additionalProperties": false
                                      }
                                    }
                                  },
                                  "required": [
                                    "protocolId",
                                    "protocolTitle",
                                    "markdown",
                                    "sections"
                                  ],
                                  "additionalProperties": false
                                }
                              }
                            },
                            "required": [
                              "recordId",
                              "title",
                              "oneSentenceSummary",
                              "topics",
                              "actionItems"
                            ],
                            "additionalProperties": false
                          }
                        }
                      },
                      "required": [
                        "meetings"
                      ],
                      "additionalProperties": false
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid (`invalid_request`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (`unauthorized`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The resource does not exist or is not accessible (`not_found`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (`rate_limited`); see `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected failure (`internal_error`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-access": "read",
        "x-rate-limit": "120 requests per 60s (read)",
        "x-mcp-tool": "get_meeting_analysis"
      }
    },
    "/v2/meetings/{recordId}": {
      "get": {
        "operationId": "getMeeting",
        "summary": "Get meeting",
        "description": "Load one meeting: title, date, duration, attendees, speakers and the full transcript. Transcript lines are grouped by speaker as \"[Speaker]:\" blocks. Over MCP, «n» after a sentence is its sentence id (as in search_meetings and get_meeting_analysis); REST returns plain sentences.",
        "tags": [
          "Meetings"
        ],
        "security": [
          {
            "apiKey": []
          }
        ],
        "parameters": [
          {
            "name": "recordId",
            "in": "path",
            "required": true,
            "description": "Meeting record ID.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "recordId": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "title": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "date": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Meeting start (ISO timestamp)."
                        },
                        "durationMinutes": {
                          "type": [
                            "number",
                            "null"
                          ]
                        },
                        "attendees": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "speakers": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "transcript": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "recordId",
                        "title",
                        "date",
                        "durationMinutes",
                        "attendees",
                        "speakers",
                        "transcript"
                      ],
                      "additionalProperties": false
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid (`invalid_request`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (`unauthorized`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The resource does not exist or is not accessible (`not_found`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (`rate_limited`); see `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected failure (`internal_error`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-access": "read",
        "x-rate-limit": "120 requests per 60s (read)",
        "x-mcp-tool": "get_meeting"
      }
    },
    "/v2/contacts/meetings": {
      "get": {
        "operationId": "findContactMeetings",
        "summary": "Find meetings with a person",
        "description": "Fuzzy-match a person's name or email across calendar attendees, meeting titles and transcript speaker labels, and return the meetings they appear in. Handles partial names and typos.",
        "tags": [
          "Meetings"
        ],
        "security": [
          {
            "apiKey": []
          }
        ],
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "required": true,
            "description": "Name or email, e.g. \"Mario Assaf\" or \"mario@acme.com\".",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 320
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of results (1-50).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "default": 15
            }
          },
          {
            "name": "threshold",
            "in": "query",
            "required": false,
            "description": "Similarity threshold 0-1; lower is fuzzier.",
            "schema": {
              "type": "number",
              "minimum": 0,
              "maximum": 1,
              "default": 0.3
            }
          },
          {
            "name": "dateFrom",
            "in": "query",
            "required": false,
            "description": "Inclusive lower bound on when the meeting happened (ISO date or timestamp).",
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|[+-]\\d{2}:\\d{2}))?$"
            }
          },
          {
            "name": "dateTo",
            "in": "query",
            "required": false,
            "description": "Upper bound on when the meeting happened. A date includes that whole UTC day; a timestamp is exclusive.",
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|[+-]\\d{2}:\\d{2}))?$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "meetings": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "recordId": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "title": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "date": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "durationMinutes": {
                                "type": [
                                  "number",
                                  "null"
                                ]
                              },
                              "summary": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "matchScore": {
                                "type": "number"
                              },
                              "matchedValue": {
                                "type": "string"
                              },
                              "matchSource": {
                                "type": "string",
                                "enum": [
                                  "attendee",
                                  "title",
                                  "speaker"
                                ]
                              },
                              "attendees": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "email": {
                                      "type": "string"
                                    },
                                    "name": {
                                      "type": [
                                        "string",
                                        "null"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "email",
                                    "name"
                                  ],
                                  "additionalProperties": false
                                }
                              }
                            },
                            "required": [
                              "recordId",
                              "title",
                              "date",
                              "durationMinutes",
                              "summary",
                              "matchScore",
                              "matchedValue",
                              "matchSource",
                              "attendees"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "total": {
                          "type": "integer"
                        }
                      },
                      "required": [
                        "meetings",
                        "total"
                      ],
                      "additionalProperties": false
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid (`invalid_request`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (`unauthorized`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The resource does not exist or is not accessible (`not_found`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (`rate_limited`); see `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected failure (`internal_error`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-access": "read",
        "x-rate-limit": "120 requests per 60s (read)",
        "x-mcp-tool": "find_contact_meetings"
      }
    },
    "/v2/calendar/events": {
      "get": {
        "operationId": "listUpcomingEvents",
        "summary": "List upcoming calendar events",
        "description": "Upcoming events from the user's synced Google or Outlook calendar, soonest first, with attendees and join URL. Only events that have not ended; for past recorded meetings use list_meetings.",
        "tags": [
          "Calendar"
        ],
        "security": [
          {
            "apiKey": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of results (1-50).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "default": 20
            }
          },
          {
            "name": "dateFrom",
            "in": "query",
            "required": false,
            "description": "Only events starting at or after this time. Defaults to now.",
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|[+-]\\d{2}:\\d{2}))?$"
            }
          },
          {
            "name": "dateTo",
            "in": "query",
            "required": false,
            "description": "Only events starting at or before this time.",
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|[+-]\\d{2}:\\d{2}))?$"
            }
          },
          {
            "name": "titleSearch",
            "in": "query",
            "required": false,
            "description": "Case-insensitive keyword in the event title.",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 500
            }
          },
          {
            "name": "attendeeEmail",
            "in": "query",
            "required": false,
            "description": "Only events with this attendee email (partial match).",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 320
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "events": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "eventId": {
                                "type": "string"
                              },
                              "title": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "eventStart": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "eventEnd": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "attendees": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "organizer": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "joinUrl": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "meetingProvider": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "joinPref": {
                                "type": [
                                  "boolean",
                                  "null"
                                ],
                                "description": "Whether the Optiverse notetaker is set to join."
                              }
                            },
                            "required": [
                              "eventId",
                              "title",
                              "eventStart",
                              "eventEnd",
                              "attendees",
                              "organizer",
                              "joinUrl",
                              "meetingProvider",
                              "joinPref"
                            ],
                            "additionalProperties": false
                          }
                        }
                      },
                      "required": [
                        "events"
                      ],
                      "additionalProperties": false
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid (`invalid_request`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (`unauthorized`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The resource does not exist or is not accessible (`not_found`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (`rate_limited`); see `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected failure (`internal_error`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-access": "read",
        "x-rate-limit": "120 requests per 60s (read)",
        "x-mcp-tool": "list_upcoming_events"
      }
    },
    "/v2/topics": {
      "get": {
        "operationId": "browseTopics",
        "summary": "Browse meeting topics",
        "description": "Topics discussed in the user's meetings, grouped by meeting, most recent first. Use it to find the meetings about a theme: scan the topics yourself for relevance. Always pass dateFrom/dateTo for a time period. If hasMore is true the topic cap was reached; narrow the date range or raise maxTopics. For a whole-period overview use analyze_topic_trends instead.",
        "tags": [
          "Topics"
        ],
        "security": [
          {
            "apiKey": []
          }
        ],
        "parameters": [
          {
            "name": "dateFrom",
            "in": "query",
            "required": false,
            "description": "Inclusive lower bound on when the meeting happened (ISO date or timestamp).",
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|[+-]\\d{2}:\\d{2}))?$"
            }
          },
          {
            "name": "dateTo",
            "in": "query",
            "required": false,
            "description": "Upper bound on when the meeting happened. A date includes that whole UTC day; a timestamp is exclusive.",
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|[+-]\\d{2}:\\d{2}))?$"
            }
          },
          {
            "name": "maxTopics",
            "in": "query",
            "required": false,
            "description": "Maximum topic rows to read (1-1000).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 1000,
              "default": 300
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "meetings": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "recordId": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "meetingTitle": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "meetingDate": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "topics": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "\"Topic: description\" labels."
                              }
                            },
                            "required": [
                              "recordId",
                              "meetingTitle",
                              "meetingDate",
                              "topics"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "topicCount": {
                          "type": "integer"
                        },
                        "totalTopicCount": {
                          "type": "integer",
                          "description": "Topics in the date scope, including those past the cap."
                        },
                        "hasMore": {
                          "type": "boolean"
                        },
                        "warning": {
                          "type": "string",
                          "description": "Present when the result is partial; explains how to narrow the request."
                        }
                      },
                      "required": [
                        "meetings",
                        "topicCount",
                        "totalTopicCount",
                        "hasMore"
                      ],
                      "additionalProperties": false
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid (`invalid_request`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (`unauthorized`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The resource does not exist or is not accessible (`not_found`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (`rate_limited`); see `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected failure (`internal_error`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-access": "read",
        "x-rate-limit": "120 requests per 60s (read)",
        "x-mcp-tool": "browse_topics"
      }
    },
    "/v2/topics/trends": {
      "get": {
        "operationId": "analyzeTopicTrends",
        "summary": "Analyze topic trends",
        "description": "How topics evolve over time: meetings grouped by week or month (newest first), with the most frequent topics, the meetings and key takeaways in each period. Pass a topic keyword to follow one theme, or omit it for overall trends.",
        "tags": [
          "Topics"
        ],
        "security": [
          {
            "apiKey": []
          }
        ],
        "parameters": [
          {
            "name": "topic",
            "in": "query",
            "required": false,
            "description": "Topic name or keyword to follow. Omit for overall trends.",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            }
          },
          {
            "name": "dateFrom",
            "in": "query",
            "required": false,
            "description": "Inclusive lower bound on when the meeting happened (ISO date or timestamp).",
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|[+-]\\d{2}:\\d{2}))?$"
            }
          },
          {
            "name": "dateTo",
            "in": "query",
            "required": false,
            "description": "Upper bound on when the meeting happened. A date includes that whole UTC day; a timestamp is exclusive.",
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|[+-]\\d{2}:\\d{2}))?$"
            }
          },
          {
            "name": "timezone",
            "in": "query",
            "required": false,
            "description": "IANA timezone used to group meetings into local weeks or months, e.g. \"Europe/Zurich\". Defaults to UTC.",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64
            }
          },
          {
            "name": "groupBy",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "week",
                "month"
              ],
              "default": "week"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum topics to analyze (5-100).",
            "schema": {
              "type": "integer",
              "minimum": 5,
              "maximum": 100,
              "default": 30
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "periods": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "period": {
                                "type": "string",
                                "description": "Week (\"2026-W41\") or month (\"2026-10\") label."
                              },
                              "meetingCount": {
                                "type": "integer"
                              },
                              "topics": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "name": {
                                      "type": "string"
                                    },
                                    "count": {
                                      "type": "integer"
                                    }
                                  },
                                  "required": [
                                    "name",
                                    "count"
                                  ],
                                  "additionalProperties": false
                                }
                              },
                              "meetings": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "recordId": {
                                      "type": "string",
                                      "format": "uuid"
                                    },
                                    "title": {
                                      "type": [
                                        "string",
                                        "null"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "recordId",
                                    "title"
                                  ],
                                  "additionalProperties": false
                                }
                              },
                              "takeaways": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              }
                            },
                            "required": [
                              "period",
                              "meetingCount",
                              "topics",
                              "meetings",
                              "takeaways"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "topRecurring": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "name": {
                                "type": "string"
                              },
                              "count": {
                                "type": "integer"
                              }
                            },
                            "required": [
                              "name",
                              "count"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "meetingCount": {
                          "type": "integer"
                        },
                        "topicCount": {
                          "type": "integer"
                        },
                        "hasMore": {
                          "type": "boolean"
                        },
                        "timezone": {
                          "type": "string"
                        },
                        "warning": {
                          "type": "string",
                          "description": "Present when the result is partial; explains how to narrow the request."
                        }
                      },
                      "required": [
                        "periods",
                        "topRecurring",
                        "meetingCount",
                        "topicCount",
                        "hasMore",
                        "timezone"
                      ],
                      "additionalProperties": false
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid (`invalid_request`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (`unauthorized`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The resource does not exist or is not accessible (`not_found`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (`rate_limited`); see `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected failure (`internal_error`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-access": "read",
        "x-rate-limit": "120 requests per 60s (read)",
        "x-mcp-tool": "analyze_topic_trends"
      }
    },
    "/v2/summary-templates": {
      "get": {
        "operationId": "listSummaryTemplates",
        "summary": "List summary templates",
        "description": "Summary templates (protocols) the user can use, newest first. Pass a protocolId to get_meeting_summaries to read the summaries a template produced.",
        "tags": [
          "Summaries"
        ],
        "security": [
          {
            "apiKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "templates": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "protocolId": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "title": {
                                "type": "string"
                              },
                              "description": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "summaryType": {
                                "type": "string",
                                "enum": [
                                  "structured",
                                  "unstructured",
                                  "docx"
                                ],
                                "description": "structured: Q&A sections; unstructured: markdown; docx: a signed download URL."
                              },
                              "managedBy": {
                                "type": "string",
                                "enum": [
                                  "optiverse",
                                  "user"
                                ]
                              },
                              "createdAt": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "protocolId",
                              "title",
                              "description",
                              "summaryType",
                              "managedBy",
                              "createdAt"
                            ],
                            "additionalProperties": false
                          }
                        }
                      },
                      "required": [
                        "templates"
                      ],
                      "additionalProperties": false
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid (`invalid_request`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (`unauthorized`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The resource does not exist or is not accessible (`not_found`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (`rate_limited`); see `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected failure (`internal_error`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-access": "read",
        "x-rate-limit": "120 requests per 60s (read)",
        "x-mcp-tool": "list_summary_templates"
      }
    },
    "/v2/summaries": {
      "get": {
        "operationId": "getMeetingSummaries",
        "summary": "Get meeting summaries",
        "description": "Summaries produced by one summary template, newest first, including historical formats after the template changes. Each summary has its own summaryType: Q&A sections, markdown, or a signed .docx download URL valid for one hour (null when no document is available). The page summaryType is mixed when it contains several formats. Filter by meeting or by summary creation date.",
        "tags": [
          "Summaries"
        ],
        "security": [
          {
            "apiKey": []
          }
        ],
        "parameters": [
          {
            "name": "protocolId",
            "in": "query",
            "required": true,
            "description": "Summary template ID from list_summary_templates.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "recordId",
            "in": "query",
            "required": false,
            "description": "Only summaries of this meeting.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "dateFrom",
            "in": "query",
            "required": false,
            "description": "Only summaries created at or after this time.",
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|[+-]\\d{2}:\\d{2}))?$"
            }
          },
          {
            "name": "dateTo",
            "in": "query",
            "required": false,
            "description": "Only summaries created at or before this time.",
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|[+-]\\d{2}:\\d{2}))?$"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of results (1-50).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "default": 20
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Number of results to skip.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "maximum": 100000,
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "protocolId": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "summaryType": {
                          "type": "string",
                          "enum": [
                            "structured",
                            "unstructured",
                            "docx",
                            "mixed"
                          ],
                          "description": "Format on this page, or mixed for several formats. An empty page uses the template's current format."
                        },
                        "summaries": {
                          "type": "array",
                          "items": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "summaryType": {
                                    "type": "string",
                                    "const": "structured"
                                  },
                                  "recordId": {
                                    "type": "string",
                                    "format": "uuid"
                                  },
                                  "createdAt": {
                                    "type": "string"
                                  },
                                  "sections": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "title": {
                                          "type": "string"
                                        },
                                        "question": {
                                          "type": "string"
                                        },
                                        "answerType": {
                                          "type": "string"
                                        },
                                        "answers": {
                                          "type": "array",
                                          "items": {
                                            "type": "object",
                                            "properties": {
                                              "answer": {
                                                "type": "string"
                                              },
                                              "referenceIds": {
                                                "type": "array",
                                                "items": {
                                                  "type": [
                                                    "number",
                                                    "string"
                                                  ]
                                                },
                                                "description": "Transcript sentence ids that support the answer."
                                              }
                                            },
                                            "required": [
                                              "answer",
                                              "referenceIds"
                                            ],
                                            "additionalProperties": false
                                          }
                                        }
                                      },
                                      "required": [
                                        "title",
                                        "question",
                                        "answerType",
                                        "answers"
                                      ],
                                      "additionalProperties": false
                                    }
                                  }
                                },
                                "required": [
                                  "summaryType",
                                  "recordId",
                                  "createdAt",
                                  "sections"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "summaryType": {
                                    "type": "string",
                                    "const": "unstructured"
                                  },
                                  "recordId": {
                                    "type": "string",
                                    "format": "uuid"
                                  },
                                  "createdAt": {
                                    "type": "string"
                                  },
                                  "markdown": {
                                    "type": [
                                      "string",
                                      "null"
                                    ]
                                  }
                                },
                                "required": [
                                  "summaryType",
                                  "recordId",
                                  "createdAt",
                                  "markdown"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "summaryType": {
                                    "type": "string",
                                    "const": "docx"
                                  },
                                  "recordId": {
                                    "type": "string",
                                    "format": "uuid"
                                  },
                                  "createdAt": {
                                    "type": "string"
                                  },
                                  "downloadUrl": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "format": "uri"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "description": "Signed download URL, or null when no document is available (not generated yet, or the file is gone)."
                                  },
                                  "expiresIn": {
                                    "anyOf": [
                                      {
                                        "type": "integer"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "description": "Seconds until downloadUrl expires, or null when no document is available."
                                  }
                                },
                                "required": [
                                  "summaryType",
                                  "recordId",
                                  "createdAt",
                                  "downloadUrl",
                                  "expiresIn"
                                ],
                                "additionalProperties": false
                              }
                            ]
                          }
                        }
                      },
                      "required": [
                        "protocolId",
                        "summaryType",
                        "summaries"
                      ],
                      "additionalProperties": false
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid (`invalid_request`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (`unauthorized`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The resource does not exist or is not accessible (`not_found`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (`rate_limited`); see `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected failure (`internal_error`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-access": "read",
        "x-rate-limit": "120 requests per 60s (read)",
        "x-mcp-tool": "get_meeting_summaries"
      }
    },
    "/v2/boards": {
      "get": {
        "operationId": "listBoards",
        "summary": "List boards",
        "description": "The user's Optiverse task boards with their columns, open-task counts and board IDs. Call it first to find the boardId the other board tools need.",
        "tags": [
          "Boards"
        ],
        "security": [
          {
            "apiKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "boards": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "boardId": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "title": {
                                "type": "string"
                              },
                              "boardType": {
                                "type": "string",
                                "enum": [
                                  "personal",
                                  "project"
                                ]
                              },
                              "color": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "openTaskCount": {
                                "type": "integer"
                              },
                              "sections": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "sectionId": {
                                      "type": "string",
                                      "format": "uuid"
                                    },
                                    "name": {
                                      "type": "string"
                                    },
                                    "order": {
                                      "type": "number"
                                    },
                                    "color": {
                                      "type": [
                                        "string",
                                        "null"
                                      ]
                                    },
                                    "isInbox": {
                                      "type": "boolean"
                                    },
                                    "isDone": {
                                      "type": "boolean"
                                    },
                                    "isArchive": {
                                      "type": "boolean"
                                    },
                                    "taskCount": {
                                      "type": "integer"
                                    }
                                  },
                                  "required": [
                                    "sectionId",
                                    "name",
                                    "order",
                                    "color",
                                    "isInbox",
                                    "isDone",
                                    "isArchive"
                                  ],
                                  "additionalProperties": false
                                }
                              }
                            },
                            "required": [
                              "boardId",
                              "title",
                              "boardType",
                              "color",
                              "openTaskCount",
                              "sections"
                            ],
                            "additionalProperties": false
                          }
                        }
                      },
                      "required": [
                        "boards"
                      ],
                      "additionalProperties": false
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid (`invalid_request`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (`unauthorized`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The resource does not exist or is not accessible (`not_found`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (`rate_limited`); see `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected failure (`internal_error`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-access": "read",
        "x-rate-limit": "120 requests per 60s (read)",
        "x-mcp-tool": "list_boards"
      },
      "post": {
        "operationId": "createBoard",
        "summary": "Create board",
        "description": "Create a project board with the default Inbox, To Do, In Progress and Done columns.",
        "tags": [
          "Boards"
        ],
        "security": [
          {
            "apiKey": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200,
                    "description": "Board title."
                  },
                  "color": {
                    "type": "string",
                    "pattern": "^#[0-9a-fA-F]{6}$",
                    "description": "Hex color, e.g. #3B82F6."
                  },
                  "description": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 2000,
                    "description": "Board description."
                  }
                },
                "required": [
                  "title"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "board": {
                          "type": "object",
                          "properties": {
                            "boardId": {
                              "type": "string",
                              "format": "uuid"
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "boardType": {
                              "type": "string",
                              "enum": [
                                "personal",
                                "project"
                              ]
                            },
                            "color": {
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          },
                          "required": [
                            "boardId",
                            "title",
                            "description",
                            "boardType",
                            "color"
                          ],
                          "additionalProperties": false
                        },
                        "sections": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "sectionId": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "name": {
                                "type": "string"
                              },
                              "order": {
                                "type": "number"
                              },
                              "color": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "isInbox": {
                                "type": "boolean"
                              },
                              "isDone": {
                                "type": "boolean"
                              },
                              "isArchive": {
                                "type": "boolean"
                              },
                              "taskCount": {
                                "type": "integer"
                              }
                            },
                            "required": [
                              "sectionId",
                              "name",
                              "order",
                              "color",
                              "isInbox",
                              "isDone",
                              "isArchive"
                            ],
                            "additionalProperties": false
                          }
                        }
                      },
                      "required": [
                        "board",
                        "sections"
                      ],
                      "additionalProperties": false
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid (`invalid_request`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (`unauthorized`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "You can read the resource but not change it (`forbidden`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The resource does not exist or is not accessible (`not_found`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "A name matches more than one item, or the session is busy (`conflict`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "The request body is larger than 1 MB (`payload_too_large`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (`rate_limited`); see `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected failure (`internal_error`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "A dependent service is temporarily unavailable (`upstream_unavailable`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-access": "write",
        "x-rate-limit": "60 requests per 60s (write)",
        "x-mcp-tool": "create_board"
      }
    },
    "/v2/boards/{boardId}": {
      "get": {
        "operationId": "getBoard",
        "summary": "Get board",
        "description": "One board with its columns (sections), labels and tasks. Completed tasks are left out unless includeCompleted is true.",
        "tags": [
          "Boards"
        ],
        "security": [
          {
            "apiKey": []
          }
        ],
        "parameters": [
          {
            "name": "boardId",
            "in": "path",
            "required": true,
            "description": "Board ID from list_boards.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "includeCompleted",
            "in": "query",
            "required": false,
            "description": "Include completed tasks and tasks in the Done column.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "taskLimit",
            "in": "query",
            "required": false,
            "description": "Maximum tasks to return (1-200).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 80
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "board": {
                          "type": "object",
                          "properties": {
                            "boardId": {
                              "type": "string",
                              "format": "uuid"
                            },
                            "title": {
                              "type": "string"
                            },
                            "boardType": {
                              "type": "string",
                              "enum": [
                                "personal",
                                "project"
                              ]
                            },
                            "color": {
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          },
                          "required": [
                            "boardId",
                            "title",
                            "boardType",
                            "color"
                          ],
                          "additionalProperties": false
                        },
                        "sections": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "sectionId": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "name": {
                                "type": "string"
                              },
                              "order": {
                                "type": "number"
                              },
                              "color": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "isInbox": {
                                "type": "boolean"
                              },
                              "isDone": {
                                "type": "boolean"
                              },
                              "isArchive": {
                                "type": "boolean"
                              },
                              "taskCount": {
                                "type": "integer"
                              }
                            },
                            "required": [
                              "sectionId",
                              "name",
                              "order",
                              "color",
                              "isInbox",
                              "isDone",
                              "isArchive"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "labels": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "labelId": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "name": {
                                "type": "string"
                              },
                              "color": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "order": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "labelId",
                              "name",
                              "color",
                              "order"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "tasks": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "taskId": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "title": {
                                "type": "string"
                              },
                              "sectionId": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "priority": {
                                "type": "integer"
                              },
                              "dueDate": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "labelIds": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "completedAt": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "subtaskCount": {
                                "type": "integer"
                              }
                            },
                            "required": [
                              "taskId",
                              "title",
                              "sectionId",
                              "priority",
                              "dueDate",
                              "labelIds",
                              "completedAt",
                              "subtaskCount"
                            ],
                            "additionalProperties": false
                          }
                        }
                      },
                      "required": [
                        "board",
                        "sections",
                        "labels",
                        "tasks"
                      ],
                      "additionalProperties": false
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid (`invalid_request`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (`unauthorized`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The resource does not exist or is not accessible (`not_found`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (`rate_limited`); see `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected failure (`internal_error`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-access": "read",
        "x-rate-limit": "120 requests per 60s (read)",
        "x-mcp-tool": "get_board"
      },
      "patch": {
        "operationId": "updateBoard",
        "summary": "Update board",
        "description": "Rename a board, or change its color or description. Only the board owner can change these.",
        "tags": [
          "Boards"
        ],
        "security": [
          {
            "apiKey": []
          }
        ],
        "parameters": [
          {
            "name": "boardId",
            "in": "path",
            "required": true,
            "description": "Board ID from list_boards.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200,
                    "description": "New title."
                  },
                  "color": {
                    "type": "string",
                    "pattern": "^#[0-9a-fA-F]{6}$",
                    "description": "New hex color."
                  },
                  "description": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 2000,
                    "description": "New description."
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "board": {
                          "type": "object",
                          "properties": {
                            "boardId": {
                              "type": "string",
                              "format": "uuid"
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "boardType": {
                              "type": "string",
                              "enum": [
                                "personal",
                                "project"
                              ]
                            },
                            "color": {
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          },
                          "required": [
                            "boardId",
                            "title",
                            "description",
                            "boardType",
                            "color"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "required": [
                        "board"
                      ],
                      "additionalProperties": false
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid (`invalid_request`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (`unauthorized`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "You can read the resource but not change it (`forbidden`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The resource does not exist or is not accessible (`not_found`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "A name matches more than one item, or the session is busy (`conflict`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "The request body is larger than 1 MB (`payload_too_large`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (`rate_limited`); see `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected failure (`internal_error`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "A dependent service is temporarily unavailable (`upstream_unavailable`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-access": "write",
        "x-rate-limit": "60 requests per 60s (write)",
        "x-mcp-tool": "update_board"
      }
    },
    "/v2/tasks/search": {
      "get": {
        "operationId": "searchTasks",
        "summary": "Search tasks",
        "description": "Search tasks across all boards, or one board with boardId. Filter by text in the title or description, priority, column name, label names and due date.",
        "tags": [
          "Boards"
        ],
        "security": [
          {
            "apiKey": []
          }
        ],
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "required": false,
            "description": "Text to find in task titles and descriptions.",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 500
            }
          },
          {
            "name": "boardId",
            "in": "query",
            "required": false,
            "description": "Board ID from list_boards.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "priority",
            "in": "query",
            "required": false,
            "description": "Only these priorities (1 = urgent … 4 = low).",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "minimum": 1,
                "maximum": 4,
                "description": "1 = urgent, 2 = high, 3 = medium, 4 = low."
              },
              "maxItems": 4
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "sectionName",
            "in": "query",
            "required": false,
            "description": "Only tasks in a column with this name, e.g. \"In Progress\".",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            }
          },
          {
            "name": "labelNames",
            "in": "query",
            "required": false,
            "description": "Only tasks with these labels.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "maxItems": 20
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "dueBefore",
            "in": "query",
            "required": false,
            "description": "Inclusive upper due-date bound. A date includes the whole UTC day; timestamps use their timezone. Date-only tasks match any overlap.",
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|[+-]\\d{2}:\\d{2}))?$"
            }
          },
          {
            "name": "dueAfter",
            "in": "query",
            "required": false,
            "description": "Inclusive lower due-date bound. A date includes the whole UTC day; timestamps use their timezone. Date-only tasks match any overlap.",
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|[+-]\\d{2}:\\d{2}))?$"
            }
          },
          {
            "name": "includeCompleted",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum tasks to return (1-100).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 30
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "tasks": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "taskId": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "title": {
                                "type": "string"
                              },
                              "boardId": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "boardTitle": {
                                "type": "string"
                              },
                              "sectionName": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "priority": {
                                "type": "integer"
                              },
                              "dueDate": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              }
                            },
                            "required": [
                              "taskId",
                              "title",
                              "boardId",
                              "boardTitle",
                              "sectionName",
                              "priority",
                              "dueDate"
                            ],
                            "additionalProperties": false
                          }
                        }
                      },
                      "required": [
                        "tasks"
                      ],
                      "additionalProperties": false
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid (`invalid_request`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (`unauthorized`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The resource does not exist or is not accessible (`not_found`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (`rate_limited`); see `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected failure (`internal_error`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-access": "read",
        "x-rate-limit": "120 requests per 60s (read)",
        "x-mcp-tool": "search_tasks"
      }
    },
    "/v2/boards/{boardId}/sections": {
      "post": {
        "operationId": "manageBoardSection",
        "summary": "Manage board columns",
        "description": "Create, update, delete or reorder the columns (sections) of a board. update and delete take sectionId or the current sectionName. Deleting a column moves its tasks to Inbox; Inbox and Done can't be deleted. reorder takes the full list in orders.",
        "tags": [
          "Boards"
        ],
        "security": [
          {
            "apiKey": []
          }
        ],
        "parameters": [
          {
            "name": "boardId",
            "in": "path",
            "required": true,
            "description": "Board ID from list_boards.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "action": {
                    "type": "string",
                    "enum": [
                      "create",
                      "update",
                      "delete",
                      "reorder"
                    ]
                  },
                  "sectionId": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Column to update or delete."
                  },
                  "sectionName": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200,
                    "description": "Current name of the column to update or delete, when sectionId is unknown."
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200,
                    "description": "New column name (create, update)."
                  },
                  "color": {
                    "type": "string",
                    "pattern": "^#[0-9a-fA-F]{6}$",
                    "description": "Column hex color (create, update)."
                  },
                  "order": {
                    "type": "number",
                    "description": "Position index (create, update)."
                  },
                  "orders": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "sectionId": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "order": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "sectionId",
                        "order"
                      ],
                      "additionalProperties": false
                    },
                    "minItems": 1,
                    "maxItems": 50,
                    "description": "Every column with its new position (reorder)."
                  }
                },
                "required": [
                  "action"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "action": {
                          "type": "string",
                          "enum": [
                            "create",
                            "update",
                            "delete",
                            "reorder"
                          ]
                        },
                        "section": {
                          "type": "object",
                          "properties": {
                            "sectionId": {
                              "type": "string",
                              "format": "uuid"
                            },
                            "name": {
                              "type": "string"
                            },
                            "order": {
                              "type": "number"
                            },
                            "color": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "isInbox": {
                              "type": "boolean"
                            },
                            "isDone": {
                              "type": "boolean"
                            },
                            "isArchive": {
                              "type": "boolean"
                            },
                            "taskCount": {
                              "type": "integer"
                            }
                          },
                          "required": [
                            "sectionId",
                            "name",
                            "order",
                            "color",
                            "isInbox",
                            "isDone",
                            "isArchive"
                          ],
                          "additionalProperties": false
                        },
                        "sections": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "sectionId": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "name": {
                                "type": "string"
                              },
                              "order": {
                                "type": "number"
                              },
                              "color": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "isInbox": {
                                "type": "boolean"
                              },
                              "isDone": {
                                "type": "boolean"
                              },
                              "isArchive": {
                                "type": "boolean"
                              },
                              "taskCount": {
                                "type": "integer"
                              }
                            },
                            "required": [
                              "sectionId",
                              "name",
                              "order",
                              "color",
                              "isInbox",
                              "isDone",
                              "isArchive"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "deletedSectionId": {
                          "type": "string",
                          "format": "uuid"
                        }
                      },
                      "required": [
                        "action"
                      ],
                      "additionalProperties": false
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid (`invalid_request`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (`unauthorized`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "You can read the resource but not change it (`forbidden`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The resource does not exist or is not accessible (`not_found`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "A name matches more than one item, or the session is busy (`conflict`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "The request body is larger than 1 MB (`payload_too_large`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (`rate_limited`); see `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected failure (`internal_error`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "A dependent service is temporarily unavailable (`upstream_unavailable`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-access": "write",
        "x-rate-limit": "60 requests per 60s (write)",
        "x-mcp-tool": "manage_board_section"
      }
    },
    "/v2/boards/{boardId}/labels": {
      "post": {
        "operationId": "manageBoardLabel",
        "summary": "Manage board labels",
        "description": "Create, update or delete a label on a board. update and delete take labelId or the current labelName.",
        "tags": [
          "Boards"
        ],
        "security": [
          {
            "apiKey": []
          }
        ],
        "parameters": [
          {
            "name": "boardId",
            "in": "path",
            "required": true,
            "description": "Board ID from list_boards.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "action": {
                    "type": "string",
                    "enum": [
                      "create",
                      "update",
                      "delete"
                    ]
                  },
                  "labelId": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Label to update or delete."
                  },
                  "labelName": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 100,
                    "description": "Current name of the label to update or delete, when labelId is unknown."
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 100,
                    "description": "New label name (create, update)."
                  },
                  "color": {
                    "type": "string",
                    "pattern": "^#[0-9a-fA-F]{6}$",
                    "description": "Label hex color (create, update)."
                  }
                },
                "required": [
                  "action"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "action": {
                          "type": "string",
                          "enum": [
                            "create",
                            "update",
                            "delete"
                          ]
                        },
                        "label": {
                          "type": "object",
                          "properties": {
                            "labelId": {
                              "type": "string",
                              "format": "uuid"
                            },
                            "name": {
                              "type": "string"
                            },
                            "color": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "order": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "labelId",
                            "name",
                            "color",
                            "order"
                          ],
                          "additionalProperties": false
                        },
                        "deletedLabelId": {
                          "type": "string",
                          "format": "uuid"
                        }
                      },
                      "required": [
                        "action"
                      ],
                      "additionalProperties": false
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid (`invalid_request`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (`unauthorized`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "You can read the resource but not change it (`forbidden`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The resource does not exist or is not accessible (`not_found`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "A name matches more than one item, or the session is busy (`conflict`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "The request body is larger than 1 MB (`payload_too_large`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (`rate_limited`); see `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected failure (`internal_error`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "A dependent service is temporarily unavailable (`upstream_unavailable`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-access": "write",
        "x-rate-limit": "60 requests per 60s (write)",
        "x-mcp-tool": "manage_board_label"
      }
    },
    "/v2/boards/{boardId}/tasks": {
      "post": {
        "operationId": "createTask",
        "summary": "Create task",
        "description": "Create one task on a board. Prefer sectionName over guessing IDs. Set transcriptId when the task comes from a meeting action item. For three or more tasks use batch_create_tasks.",
        "tags": [
          "Boards"
        ],
        "security": [
          {
            "apiKey": []
          }
        ],
        "parameters": [
          {
            "name": "boardId",
            "in": "path",
            "required": true,
            "description": "Board ID from list_boards.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 500,
                    "description": "Task title."
                  },
                  "description": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 10000,
                    "description": "Task description (plain text or markdown)."
                  },
                  "sectionId": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Column to put the task in. Defaults to Inbox."
                  },
                  "sectionName": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200,
                    "description": "Column name, e.g. \"To Do\", when sectionId is unknown."
                  },
                  "priority": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 4,
                    "description": "1 = urgent, 2 = high, 3 = medium, 4 = low."
                  },
                  "labelNames": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 100
                    },
                    "maxItems": 20,
                    "description": "Label names on this board."
                  },
                  "dueDate": {
                    "type": "string",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2})?$",
                    "description": "Due date, YYYY-MM-DD or YYYY-MM-DDThh:mm."
                  },
                  "subtasks": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "title": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 500
                        },
                        "completed": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "title"
                      ],
                      "additionalProperties": false
                    },
                    "maxItems": 50
                  },
                  "transcriptId": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Meeting record ID when the task comes from a meeting (sets source to transcript)."
                  },
                  "position": {
                    "anyOf": [
                      {
                        "type": "string",
                        "enum": [
                          "top",
                          "bottom"
                        ]
                      },
                      {
                        "type": "object",
                        "properties": {
                          "after": {
                            "type": "string",
                            "format": "uuid"
                          }
                        },
                        "required": [
                          "after"
                        ],
                        "additionalProperties": false
                      }
                    ],
                    "description": "Place the task at the \"top\" or \"bottom\" of its column, or { \"after\": taskId }."
                  }
                },
                "required": [
                  "title"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "task": {
                          "type": "object",
                          "properties": {
                            "taskId": {
                              "type": "string",
                              "format": "uuid"
                            },
                            "boardId": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "uuid"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "type": "string"
                            },
                            "sectionId": {
                              "type": "string",
                              "format": "uuid",
                              "description": "Column the task is in."
                            },
                            "priority": {
                              "type": "integer"
                            },
                            "labelIds": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "dueDate": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "reminderMinutes": {
                              "type": [
                                "number",
                                "null"
                              ]
                            },
                            "subtasks": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "title": {
                                    "type": "string"
                                  },
                                  "completed": {
                                    "type": "boolean"
                                  }
                                },
                                "required": [
                                  "id",
                                  "title",
                                  "completed"
                                ],
                                "additionalProperties": false
                              }
                            },
                            "source": {
                              "type": "string"
                            },
                            "transcriptId": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "description": "Meeting the task was created from."
                            },
                            "completedAt": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "createdAt": {
                              "type": "string"
                            },
                            "updatedAt": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "taskId",
                            "boardId",
                            "title",
                            "description",
                            "sectionId",
                            "priority",
                            "labelIds",
                            "dueDate",
                            "reminderMinutes",
                            "subtasks",
                            "source",
                            "transcriptId",
                            "completedAt",
                            "createdAt",
                            "updatedAt"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "required": [
                        "task"
                      ],
                      "additionalProperties": false
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid (`invalid_request`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (`unauthorized`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "You can read the resource but not change it (`forbidden`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The resource does not exist or is not accessible (`not_found`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "A name matches more than one item, or the session is busy (`conflict`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "The request body is larger than 1 MB (`payload_too_large`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (`rate_limited`); see `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected failure (`internal_error`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "A dependent service is temporarily unavailable (`upstream_unavailable`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-access": "write",
        "x-rate-limit": "60 requests per 60s (write)",
        "x-mcp-tool": "create_task"
      }
    },
    "/v2/boards/{boardId}/tasks/{taskId}": {
      "patch": {
        "operationId": "updateTask",
        "summary": "Update task",
        "description": "Update one task: title, description, priority, labels, due date or subtasks, and optionally move it to another column. completed=true marks it done and moves it to Done. labelNames and subtasks replace the existing lists. To move several tasks to one column use move_tasks.",
        "tags": [
          "Boards"
        ],
        "security": [
          {
            "apiKey": []
          }
        ],
        "parameters": [
          {
            "name": "boardId",
            "in": "path",
            "required": true,
            "description": "Board ID from list_boards.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "taskId",
            "in": "path",
            "required": true,
            "description": "Task to update.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 500,
                    "description": "New title."
                  },
                  "description": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 10000,
                    "description": "New description."
                  },
                  "sectionId": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Move to this column."
                  },
                  "sectionName": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200,
                    "description": "Move to the column with this name."
                  },
                  "priority": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 4,
                    "description": "1 = urgent, 2 = high, 3 = medium, 4 = low."
                  },
                  "labelNames": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 100
                    },
                    "maxItems": 20,
                    "description": "Replace the labels with these."
                  },
                  "dueDate": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2})?$",
                        "description": "Due date, YYYY-MM-DD or YYYY-MM-DDThh:mm."
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "New due date, or null to clear it."
                  },
                  "subtasks": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "Existing subtask ID; omit for a new one."
                        },
                        "title": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 500
                        },
                        "completed": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "title"
                      ],
                      "additionalProperties": false
                    },
                    "maxItems": 50,
                    "description": "Replace the subtasks with this list."
                  },
                  "position": {
                    "anyOf": [
                      {
                        "type": "string",
                        "enum": [
                          "top",
                          "bottom"
                        ]
                      },
                      {
                        "type": "object",
                        "properties": {
                          "after": {
                            "type": "string",
                            "format": "uuid"
                          }
                        },
                        "required": [
                          "after"
                        ],
                        "additionalProperties": false
                      }
                    ],
                    "description": "Place the task at the \"top\" or \"bottom\" of its column, or { \"after\": taskId }."
                  },
                  "completed": {
                    "type": "boolean",
                    "description": "true marks the task done; false reopens it."
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "task": {
                          "type": "object",
                          "properties": {
                            "taskId": {
                              "type": "string",
                              "format": "uuid"
                            },
                            "boardId": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "uuid"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "type": "string"
                            },
                            "sectionId": {
                              "type": "string",
                              "format": "uuid",
                              "description": "Column the task is in."
                            },
                            "priority": {
                              "type": "integer"
                            },
                            "labelIds": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "dueDate": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "reminderMinutes": {
                              "type": [
                                "number",
                                "null"
                              ]
                            },
                            "subtasks": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "title": {
                                    "type": "string"
                                  },
                                  "completed": {
                                    "type": "boolean"
                                  }
                                },
                                "required": [
                                  "id",
                                  "title",
                                  "completed"
                                ],
                                "additionalProperties": false
                              }
                            },
                            "source": {
                              "type": "string"
                            },
                            "transcriptId": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "description": "Meeting the task was created from."
                            },
                            "completedAt": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "createdAt": {
                              "type": "string"
                            },
                            "updatedAt": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "taskId",
                            "boardId",
                            "title",
                            "description",
                            "sectionId",
                            "priority",
                            "labelIds",
                            "dueDate",
                            "reminderMinutes",
                            "subtasks",
                            "source",
                            "transcriptId",
                            "completedAt",
                            "createdAt",
                            "updatedAt"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "required": [
                        "task"
                      ],
                      "additionalProperties": false
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid (`invalid_request`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (`unauthorized`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "You can read the resource but not change it (`forbidden`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The resource does not exist or is not accessible (`not_found`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "A name matches more than one item, or the session is busy (`conflict`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "The request body is larger than 1 MB (`payload_too_large`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (`rate_limited`); see `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected failure (`internal_error`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "A dependent service is temporarily unavailable (`upstream_unavailable`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-access": "write",
        "x-rate-limit": "60 requests per 60s (write)",
        "x-mcp-tool": "update_task"
      }
    },
    "/v2/boards/{boardId}/tasks/batch": {
      "post": {
        "operationId": "batchCreateTasks",
        "summary": "Create several tasks",
        "description": "Create up to 40 tasks on one board in one call, for example a meeting's action items. All columns, labels and dates are validated before writing. Each task commits atomically; a later failure returns status=partial with confirmed tasks, the failed item and unattempted indexes. Never replay the whole batch after a partial result; reconcile uncertainTaskId before retrying that item.",
        "tags": [
          "Boards"
        ],
        "security": [
          {
            "apiKey": []
          }
        ],
        "parameters": [
          {
            "name": "boardId",
            "in": "path",
            "required": true,
            "description": "Board ID from list_boards.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "tasks": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "title": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 500,
                          "description": "Task title."
                        },
                        "description": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 10000,
                          "description": "Task description (plain text or markdown)."
                        },
                        "sectionId": {
                          "type": "string",
                          "format": "uuid",
                          "description": "Column to put the task in. Defaults to Inbox."
                        },
                        "sectionName": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 200,
                          "description": "Column name, e.g. \"To Do\", when sectionId is unknown."
                        },
                        "priority": {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 4,
                          "description": "1 = urgent, 2 = high, 3 = medium, 4 = low."
                        },
                        "labelNames": {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 100
                          },
                          "maxItems": 20,
                          "description": "Label names on this board."
                        },
                        "dueDate": {
                          "type": "string",
                          "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2})?$",
                          "description": "Due date, YYYY-MM-DD or YYYY-MM-DDThh:mm."
                        },
                        "subtasks": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "title": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 500
                              },
                              "completed": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "title"
                            ],
                            "additionalProperties": false
                          },
                          "maxItems": 50
                        },
                        "transcriptId": {
                          "type": "string",
                          "format": "uuid",
                          "description": "Meeting record ID when the task comes from a meeting (sets source to transcript)."
                        }
                      },
                      "required": [
                        "title"
                      ],
                      "additionalProperties": false
                    },
                    "minItems": 1,
                    "maxItems": 40
                  }
                },
                "required": [
                  "tasks"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "tasks": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "taskId": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "boardId": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "format": "uuid"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "title": {
                                "type": "string"
                              },
                              "description": {
                                "type": "string"
                              },
                              "sectionId": {
                                "type": "string",
                                "format": "uuid",
                                "description": "Column the task is in."
                              },
                              "priority": {
                                "type": "integer"
                              },
                              "labelIds": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "dueDate": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "reminderMinutes": {
                                "type": [
                                  "number",
                                  "null"
                                ]
                              },
                              "subtasks": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string"
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "completed": {
                                      "type": "boolean"
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "title",
                                    "completed"
                                  ],
                                  "additionalProperties": false
                                }
                              },
                              "source": {
                                "type": "string"
                              },
                              "transcriptId": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "description": "Meeting the task was created from."
                              },
                              "completedAt": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "createdAt": {
                                "type": "string"
                              },
                              "updatedAt": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "taskId",
                              "boardId",
                              "title",
                              "description",
                              "sectionId",
                              "priority",
                              "labelIds",
                              "dueDate",
                              "reminderMinutes",
                              "subtasks",
                              "source",
                              "transcriptId",
                              "completedAt",
                              "createdAt",
                              "updatedAt"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "completed",
                            "partial"
                          ]
                        },
                        "remainingTaskIndexes": {
                          "type": "array",
                          "items": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "description": "Zero-based indexes never attempted after the failed item; empty on completion."
                        },
                        "failure": {
                          "type": "object",
                          "properties": {
                            "taskIndex": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "Zero-based index of the failed or unconfirmed item."
                            },
                            "code": {
                              "type": "string",
                              "enum": [
                                "not_found",
                                "ambiguous",
                                "invalid_request",
                                "forbidden",
                                "not_allowed",
                                "failed"
                              ]
                            },
                            "message": {
                              "type": "string"
                            },
                            "retryable": {
                              "type": "boolean",
                              "const": false,
                              "description": "Do not replay the whole batch; already confirmed tasks would be duplicated."
                            },
                            "uncertainTaskId": {
                              "type": "string",
                              "format": "uuid",
                              "description": "The write response was lost. Look up this task ID before retrying this item."
                            }
                          },
                          "required": [
                            "taskIndex",
                            "code",
                            "message",
                            "retryable"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "required": [
                        "tasks",
                        "status",
                        "remainingTaskIndexes"
                      ],
                      "additionalProperties": false
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid (`invalid_request`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (`unauthorized`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "You can read the resource but not change it (`forbidden`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The resource does not exist or is not accessible (`not_found`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "A name matches more than one item, or the session is busy (`conflict`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "The request body is larger than 1 MB (`payload_too_large`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (`rate_limited`); see `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected failure (`internal_error`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "A dependent service is temporarily unavailable (`upstream_unavailable`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-access": "write",
        "x-rate-limit": "60 requests per 60s (write)",
        "x-mcp-tool": "batch_create_tasks"
      }
    },
    "/v2/boards/{boardId}/tasks/move": {
      "post": {
        "operationId": "moveTasks",
        "summary": "Move tasks",
        "description": "Move up to 50 tasks on one board to the same column, by sectionId or sectionName.",
        "tags": [
          "Boards"
        ],
        "security": [
          {
            "apiKey": []
          }
        ],
        "parameters": [
          {
            "name": "boardId",
            "in": "path",
            "required": true,
            "description": "Board ID from list_boards.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "taskIds": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "minItems": 1,
                    "maxItems": 50,
                    "description": "Tasks to move."
                  },
                  "sectionId": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Target column."
                  },
                  "sectionName": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200,
                    "description": "Target column name, when sectionId is unknown."
                  },
                  "position": {
                    "anyOf": [
                      {
                        "type": "string",
                        "enum": [
                          "top",
                          "bottom"
                        ]
                      },
                      {
                        "type": "object",
                        "properties": {
                          "after": {
                            "type": "string",
                            "format": "uuid"
                          }
                        },
                        "required": [
                          "after"
                        ],
                        "additionalProperties": false
                      }
                    ],
                    "description": "Place the task at the \"top\" or \"bottom\" of its column, or { \"after\": taskId }."
                  }
                },
                "required": [
                  "taskIds"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "tasks": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "taskId": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "boardId": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "format": "uuid"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "title": {
                                "type": "string"
                              },
                              "description": {
                                "type": "string"
                              },
                              "sectionId": {
                                "type": "string",
                                "format": "uuid",
                                "description": "Column the task is in."
                              },
                              "priority": {
                                "type": "integer"
                              },
                              "labelIds": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "dueDate": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "reminderMinutes": {
                                "type": [
                                  "number",
                                  "null"
                                ]
                              },
                              "subtasks": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string"
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "completed": {
                                      "type": "boolean"
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "title",
                                    "completed"
                                  ],
                                  "additionalProperties": false
                                }
                              },
                              "source": {
                                "type": "string"
                              },
                              "transcriptId": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "description": "Meeting the task was created from."
                              },
                              "completedAt": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "createdAt": {
                                "type": "string"
                              },
                              "updatedAt": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "taskId",
                              "boardId",
                              "title",
                              "description",
                              "sectionId",
                              "priority",
                              "labelIds",
                              "dueDate",
                              "reminderMinutes",
                              "subtasks",
                              "source",
                              "transcriptId",
                              "completedAt",
                              "createdAt",
                              "updatedAt"
                            ],
                            "additionalProperties": false
                          }
                        }
                      },
                      "required": [
                        "tasks"
                      ],
                      "additionalProperties": false
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid (`invalid_request`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (`unauthorized`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "You can read the resource but not change it (`forbidden`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The resource does not exist or is not accessible (`not_found`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "A name matches more than one item, or the session is busy (`conflict`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "The request body is larger than 1 MB (`payload_too_large`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (`rate_limited`); see `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected failure (`internal_error`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "A dependent service is temporarily unavailable (`upstream_unavailable`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-access": "write",
        "x-rate-limit": "60 requests per 60s (write)",
        "x-mcp-tool": "move_tasks"
      }
    },
    "/v2/help/search": {
      "get": {
        "operationId": "searchHelpCenter",
        "summary": "Search the Optiverse help center",
        "description": "Search the Optiverse Academy documentation: how-to guides, feature explanations, integration setup and troubleshooting. Returns matching sections with links; read a full page with get_help_article.",
        "tags": [
          "Help"
        ],
        "security": [
          {
            "apiKey": []
          }
        ],
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "required": true,
            "description": "Question or keywords, e.g. \"connect HubSpot\".",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 500
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum sections to return (1-10).",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 10,
              "default": 5
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "results": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "pageTitle": {
                                "type": "string"
                              },
                              "sectionHeading": {
                                "type": "string"
                              },
                              "url": {
                                "type": "string"
                              },
                              "slug": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "description": "Pass to get_help_article."
                              },
                              "snippet": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "pageTitle",
                              "sectionHeading",
                              "url",
                              "slug",
                              "snippet"
                            ],
                            "additionalProperties": false
                          }
                        }
                      },
                      "required": [
                        "results"
                      ],
                      "additionalProperties": false
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid (`invalid_request`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (`unauthorized`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The resource does not exist or is not accessible (`not_found`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (`rate_limited`); see `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected failure (`internal_error`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-access": "read",
        "x-rate-limit": "120 requests per 60s (read)",
        "x-mcp-tool": "search_help_center"
      }
    },
    "/v2/help/articles": {
      "get": {
        "operationId": "getHelpArticle",
        "summary": "Get a help center article",
        "description": "Full markdown of one Optiverse Academy page, by slug (for example \"desktop-app/capture\"). Long pages are truncated at about 6,000 characters.",
        "tags": [
          "Help"
        ],
        "security": [
          {
            "apiKey": []
          }
        ],
        "parameters": [
          {
            "name": "slug",
            "in": "query",
            "required": true,
            "description": "Page slug from search_help_center results.",
            "schema": {
              "type": "string",
              "pattern": "^(\\/?docs\\/)?[a-z0-9][a-z0-9-]*(\\/[a-z0-9][a-z0-9-]*)*\\/?$",
              "maxLength": 200
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "title": {
                          "type": "string"
                        },
                        "url": {
                          "type": "string"
                        },
                        "content": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "title",
                        "url",
                        "content"
                      ],
                      "additionalProperties": false
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid (`invalid_request`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (`unauthorized`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The resource does not exist or is not accessible (`not_found`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (`rate_limited`); see `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected failure (`internal_error`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-access": "read",
        "x-rate-limit": "120 requests per 60s (read)",
        "x-mcp-tool": "get_help_article"
      }
    },
    "/v2/uploads": {
      "post": {
        "operationId": "createUpload",
        "summary": "Start a recording upload",
        "description": "Returns a presigned URL for uploading one audio or video recording. PUT the file bytes to uploadUrl with requiredHeaders, then call POST /v2/uploads/{uploadId}/complete to start processing. Supported extensions: mp4, webm, mov, mp3, m4a, wav, opus, ogg.",
        "tags": [
          "Uploads"
        ],
        "security": [
          {
            "apiKey": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "fileName": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255,
                    "description": "Original file name including its extension, e.g. \"standup.mp4\"."
                  }
                },
                "required": [
                  "fileName"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "uploadId": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "uploadUrl": {
                          "type": "string",
                          "format": "uri"
                        },
                        "method": {
                          "type": "string",
                          "const": "PUT"
                        },
                        "requiredHeaders": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "string"
                          },
                          "description": "Send these headers with the PUT."
                        }
                      },
                      "required": [
                        "uploadId",
                        "uploadUrl",
                        "method",
                        "requiredHeaders"
                      ],
                      "additionalProperties": false
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid (`invalid_request`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (`unauthorized`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "You can read the resource but not change it (`forbidden`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The resource does not exist or is not accessible (`not_found`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "A name matches more than one item, or the session is busy (`conflict`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "The request body is larger than 1 MB (`payload_too_large`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (`rate_limited`); see `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected failure (`internal_error`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "A dependent service is temporarily unavailable (`upstream_unavailable`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-access": "write",
        "x-rate-limit": "60 requests per 60s (write)"
      }
    },
    "/v2/uploads/{uploadId}/complete": {
      "post": {
        "operationId": "completeUpload",
        "summary": "Finish a recording upload",
        "description": "Call after the PUT to the presigned URL succeeded. Starts transcription and analysis; the meeting appears in list_meetings once processing finishes. Optionally names the meeting and picks the summary template.",
        "tags": [
          "Uploads"
        ],
        "security": [
          {
            "apiKey": []
          }
        ],
        "parameters": [
          {
            "name": "uploadId",
            "in": "path",
            "required": true,
            "description": "Upload ID from POST /v2/uploads.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 300,
                    "description": "Meeting title. Defaults to \"Untitled Upload\"."
                  },
                  "protocolId": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Summary template to apply, from list_summary_templates."
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "uploadId": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "status": {
                          "type": "string",
                          "const": "processing"
                        }
                      },
                      "required": [
                        "uploadId",
                        "status"
                      ],
                      "additionalProperties": false
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid (`invalid_request`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (`unauthorized`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "You can read the resource but not change it (`forbidden`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The resource does not exist or is not accessible (`not_found`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "A name matches more than one item, or the session is busy (`conflict`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "The request body is larger than 1 MB (`payload_too_large`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (`rate_limited`); see `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected failure (`internal_error`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "A dependent service is temporarily unavailable (`upstream_unavailable`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "x-access": "write",
        "x-rate-limit": "60 requests per 60s (write)"
      }
    },
    "/v2/openapi.json": {
      "get": {
        "operationId": "getOpenApiDocument",
        "summary": "OpenAPI document",
        "description": "This document. No authentication required.",
        "tags": [
          "Meta"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "OpenAPI 3.1 document",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "apiKey": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "optiuser_v1_<56 hex characters>",
        "description": "Personal API key from Settings → API."
      }
    },
    "schemas": {
      "Pagination": {
        "type": "object",
        "required": [
          "limit",
          "offset",
          "hasMore",
          "nextOffset"
        ],
        "properties": {
          "limit": {
            "type": "integer"
          },
          "offset": {
            "type": "integer"
          },
          "hasMore": {
            "type": "boolean"
          },
          "nextOffset": {
            "type": [
              "integer",
              "null"
            ]
          },
          "total": {
            "type": "integer"
          }
        }
      },
      "Error": {
        "type": "object",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "object",
            "required": [
              "code",
              "message",
              "retryable",
              "requestId"
            ],
            "properties": {
              "code": {
                "type": "string",
                "enum": [
                  "invalid_request",
                  "unauthorized",
                  "forbidden",
                  "not_found",
                  "conflict",
                  "payload_too_large",
                  "insufficient_credits",
                  "rate_limited",
                  "cancelled",
                  "internal_error",
                  "not_implemented",
                  "upstream_unavailable",
                  "timeout"
                ]
              },
              "message": {
                "type": "string"
              },
              "retryable": {
                "type": "boolean"
              },
              "requestId": {
                "type": "string"
              },
              "details": {
                "type": "object"
              }
            }
          }
        }
      }
    }
  }
}
