{
  "meta": {
    "title": "Contio MeetingOS User API",
    "version": "1.1.0",
    "servers": [
      {
        "url": "https://api.contio.ai"
      }
    ],
    "flag_legend": {
      "missing_idempotency_key": "This mutating operation does not accept an Idempotency-Key header, so a blind retry after a network error may apply the change more than once. Re-read state before retrying if you are unsure the first call succeeded."
    }
  },
  "operations": {
    "v1AddMeetingParticipants": {
      "id": "v1AddMeetingParticipants",
      "method": "POST",
      "path": "/v1/meetings/{id}/participants",
      "summary": "Add meeting participants",
      "description": "Adds one or more participants to a meeting owned by the authenticated user's workspace.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting ID",
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "description": "Participants to add",
            "has_schema": true
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Optional client-generated idempotency key (max 255 printable ASCII). Repeat requests with the same key replay the original 2xx response.",
            "type": "string"
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "participants": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "guest_email": {
                    "type": "string",
                    "format": "email",
                    "example": "guest@example.com"
                  },
                  "role": {
                    "type": "string",
                    "enum": [
                      "EDITOR",
                      "VIEWER"
                    ],
                    "example": "VIEWER"
                  },
                  "user_id": {
                    "type": "string",
                    "format": "uuid",
                    "example": "123e4567-e89b-12d3-a456-426614174003"
                  }
                },
                "required": [
                  "role"
                ]
              }
            }
          },
          "required": [
            "participants"
          ]
        }
      },
      "responses": {
        "201": {
          "description": "Created",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "participants": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "created_at": {
                      "type": "string",
                      "example": "2023-01-01T00:00:00Z"
                    },
                    "email": {
                      "type": "string",
                      "example": "john.doe@example.com"
                    },
                    "id": {
                      "type": "string",
                      "example": "123e4567-e89b-12d3-a456-426614174004"
                    },
                    "is_attended": {
                      "type": "boolean",
                      "example": true
                    },
                    "meeting_id": {
                      "type": "string",
                      "example": "123e4567-e89b-12d3-a456-426614174000"
                    },
                    "name": {
                      "type": "string",
                      "example": "John Doe"
                    },
                    "role": {
                      "type": "string",
                      "example": "EDITOR"
                    },
                    "updated_at": {
                      "type": "string",
                      "example": "2023-01-01T00:00:00Z"
                    },
                    "user_id": {
                      "type": "string",
                      "example": "123e4567-e89b-12d3-a456-426614174003"
                    }
                  }
                }
              }
            }
          }
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Insufficient scope or permissions",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Meeting not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "409": {
          "description": "An identical request is currently being processed (Idempotency-Key conflict)",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "422": {
          "description": "Idempotency-Key has already been used with a different request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "addMeetingParticipants",
        "readOnly": false,
        "destructive": false,
        "idempotent": true,
        "description": "Add meeting participants. Use this when the user wants to invite people to an existing meeting; do not re-add the caller."
      },
      "agent_notes": "Adds one or more participants to an existing meeting the caller's workspace\nowns; the `{id}` path parameter is the meeting id from v1CreateMeeting. The\nbody `participants` array is required. Adding a participant who is already on\nthe meeting is a no-op for that entry rather than an error. Supports an\noptional `Idempotency-Key` header: supply a client-generated printable-ASCII\nkey (max 255 chars) and the API replays the original `2xx` response for\nidentical repeats, returning `Idempotent-Replayed: true` on replays. Without\na key, blind retries could double-add newly-supplied people.\n\n\u003c!-- POST /v1/meetings/{id}/participants --\u003e\n\u003c!-- Add meeting participants --\u003e"
    },
    "v1AuthorizeOAuth": {
      "id": "v1AuthorizeOAuth",
      "method": "GET",
      "path": "/v1/oauth/authorize",
      "summary": "First-Party OAuth Authorization",
      "description": "Initiates the first-party OAuth 2.1 authorization code flow with PKCE. Redirects to the loopback with an authorization code.",
      "auth": {
        "surface": "user-oauth",
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "client_id",
            "in": "query",
            "required": true,
            "description": "First-party client ID",
            "type": "string"
          },
          {
            "name": "redirect_uri",
            "in": "query",
            "required": true,
            "description": "Loopback redirect URI (http://127.0.0.1:PORT or http://localhost:PORT)",
            "type": "string"
          },
          {
            "name": "response_type",
            "in": "query",
            "required": true,
            "description": "Must be 'code'",
            "type": "string"
          },
          {
            "name": "scope",
            "in": "query",
            "required": true,
            "description": "Space-delimited scopes",
            "type": "string"
          },
          {
            "name": "state",
            "in": "query",
            "required": false,
            "description": "Opaque state value",
            "type": "string"
          },
          {
            "name": "code_challenge",
            "in": "query",
            "required": true,
            "description": "PKCE S256 code challenge",
            "type": "string"
          },
          {
            "name": "code_challenge_method",
            "in": "query",
            "required": true,
            "description": "Must be 'S256'",
            "type": "string"
          }
        ]
      },
      "responses": {
        "302": {
          "description": "Redirect to redirect_uri with code and state",
          "has_schema": false
        },
        "400": {
          "description": "Bad Request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "error": {
                "type": "string"
              },
              "error_description": {
                "type": "string"
              }
            }
          }
        },
        "401": {
          "description": "Unauthorized",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "error": {
                "type": "string"
              },
              "error_description": {
                "type": "string"
              }
            }
          }
        },
        "500": {
          "description": "Internal Server Error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "error": {
                "type": "string"
              },
              "error_description": {
                "type": "string"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "authorizeOAuth",
        "readOnly": true,
        "destructive": false,
        "idempotent": false,
        "description": "Initiate OAuth authorization. Use this when the user is starting a browser-based OAuth 2.1 + PKCE flow.",
        "skip": true
      },
      "agent_notes": "Browser-facing entry point of the first-party OAuth 2.1 authorization-code +\nPKCE flow. This is a redirect endpoint meant to be opened in a user agent, not\ncalled programmatically for JSON: on success it returns a 302 to the\n`redirect_uri` (a loopback address) carrying the authorization `code` and the\n`state` you sent. Required query params are `client_id`, `redirect_uri`,\n`response_type`, `scope`, `code_challenge`, and `code_challenge_method`;\n`state` is optional but strongly recommended for CSRF protection. The\nauthorization code you receive is single-use and short-lived — hand it,\ntogether with the matching PKCE `code_verifier`, to v1ExchangeOAuthToken to mint\nthe access token. Do not attempt to \"retry\" this call to obtain a fresh code\nwithout restarting the user-facing flow.\n\n\u003c!-- GET /v1/oauth/authorize --\u003e\n\u003c!-- First-Party OAuth Authorization --\u003e"
    },
    "v1CreateActionItem": {
      "id": "v1CreateActionItem",
      "method": "POST",
      "path": "/v1/action-items",
      "summary": "Create action item",
      "description": "Creates a new action item in a meeting the authenticated user can access",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "action-items:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "action_item",
            "in": "body",
            "required": true,
            "description": "Action item data",
            "has_schema": true
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Optional client-generated idempotency key (max 255 printable ASCII). Repeat requests with the same key replay the original 2xx response.",
            "type": "string"
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "description": {
              "type": "string",
              "example": "Send proposal by Friday"
            },
            "due_date": {
              "type": "string",
              "example": "2026-01-15"
            },
            "meeting_id": {
              "type": "string",
              "example": "019abc12-def3-7000-8000-000000000002"
            },
            "status": {
              "type": "string",
              "enum": [
                "needs_review",
                "accepted",
                "in_progress",
                "blocked",
                "completed",
                "cancelled"
              ],
              "example": "needs_review"
            },
            "title": {
              "type": "string",
              "example": "Follow up with client"
            }
          },
          "required": [
            "meeting_id",
            "title"
          ]
        }
      },
      "responses": {
        "201": {
          "description": "Created",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "agenda_item_id": {
                "type": "string",
                "example": "019abc12-def3-7000-8000-000000000003"
              },
              "assigned_to_user_id": {
                "type": "string",
                "example": "019abc12-def3-7000-8000-000000000004"
              },
              "completed_at": {
                "type": "string",
                "example": "2026-01-15T10:00:00Z"
              },
              "created_at": {
                "type": "string",
                "example": "2026-01-01T00:00:00Z"
              },
              "description": {
                "type": "string",
                "example": "Send proposal by Friday"
              },
              "due_date": {
                "type": "string",
                "example": "2026-01-15"
              },
              "id": {
                "type": "string",
                "example": "019abc12-def3-7000-8000-000000000001"
              },
              "is_completed": {
                "type": "boolean",
                "example": false
              },
              "meeting_id": {
                "type": "string",
                "example": "019abc12-def3-7000-8000-000000000002"
              },
              "status": {
                "type": "string",
                "example": "accepted"
              },
              "title": {
                "type": "string",
                "example": "Follow up with client"
              },
              "updated_at": {
                "type": "string",
                "example": "2026-01-01T00:00:00Z"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request body",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Insufficient scope",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Meeting not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "409": {
          "description": "An identical request is currently being processed (Idempotency-Key conflict)",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "422": {
          "description": "Idempotency-Key has already been used with a different request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "createActionItem",
        "readOnly": false,
        "destructive": false,
        "idempotent": true,
        "description": "Create action item. Use this when the user wants to add a follow-up task to a meeting."
      },
      "agent_notes": "Creates an action item inside a meeting the caller can access; requires the\n`meetings:write` scope. Both `meeting_id` (from v1ListMeetings/v1CreateMeeting)\nand `title` are required — a missing or unknown meeting id returns 404, not a\nvalidation 400. `status` is optional and, when set, must be one of\n`needs_review`, `accepted`, `in_progress`, `blocked`, `completed`, `cancelled`;\nomit it to accept the server default. The 201 body returns the created item\nincluding its `id`, which you then pass to v1UpdateActionItem or\nv1DeleteActionItem. Supports an optional `Idempotency-Key` header: supply a\nclient-generated printable-ASCII key (max 255 chars) and the API replays the\noriginal `2xx` response for identical repeats, returning `Idempotent-Replayed:\ntrue` on replays. Without a key, blind retries can create duplicates.\n\n\u003c!-- POST /v1/action-items --\u003e\n\u003c!-- Create action item --\u003e"
    },
    "v1CreateAgendaItem": {
      "id": "v1CreateAgendaItem",
      "method": "POST",
      "path": "/v1/agenda-items",
      "summary": "Create an agenda item",
      "description": "Creates an agenda item attached to a meeting in the authenticated user's workspace.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "description": "Agenda item creation parameters",
            "has_schema": true
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Optional client-generated idempotency key (max 255 printable ASCII). Repeat requests with the same key replay the original 2xx response.",
            "type": "string"
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "description": {
              "type": "string",
              "example": "Review the Q3 roadmap"
            },
            "item_type": {
              "type": "string",
              "example": "DISCUSSION"
            },
            "meeting_id": {
              "type": "string",
              "example": "019abc12-def3-7000-8000-000000000002"
            },
            "presenters": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "restricted_to_leads": {
              "type": "boolean",
              "example": false
            },
            "sequence": {
              "type": "string",
              "example": "a0"
            },
            "time_allocation_minutes": {
              "type": "number",
              "example": 15
            },
            "title": {
              "type": "string",
              "example": "Q3 roadmap review"
            }
          },
          "required": [
            "item_type",
            "meeting_id",
            "title"
          ]
        }
      },
      "responses": {
        "201": {
          "description": "Created",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "created_at": {
                "type": "string",
                "example": "2026-01-01T00:00:00Z"
              },
              "deferred": {
                "type": "boolean",
                "example": false
              },
              "id": {
                "type": "string",
                "example": "019abc12-def3-7000-8000-000000000001"
              },
              "item_type": {
                "type": "string",
                "example": "DISCUSSION"
              },
              "meeting_id": {
                "type": "string",
                "example": "019abc12-def3-7000-8000-000000000002"
              },
              "status": {
                "type": "string",
                "example": "PENDING"
              },
              "time_allocation_minutes": {
                "type": "number",
                "example": 15
              },
              "title": {
                "type": "string",
                "example": "Q3 roadmap review"
              },
              "updated_at": {
                "type": "string",
                "example": "2026-01-01T00:00:00Z"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Insufficient scope",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Meeting not found or not accessible",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "409": {
          "description": "Meeting has ended, or an identical request is currently being processed (Idempotency-Key conflict)",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "422": {
          "description": "Idempotency-Key has already been used with a different request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "createAgendaItem",
        "readOnly": false,
        "destructive": false,
        "idempotent": true,
        "description": "Create agenda item. Use this when the user wants to add an agenda item to a meeting."
      },
      "agent_notes": "Creates an agenda item attached to a meeting in the caller's workspace;\nrequires the `meetings:write` scope. `meeting_id`, `title`, and `item_type`\nare all required — an unknown meeting id returns 404. A 409 means the target\nmeeting has already ended, so agenda items can no longer be added; this is a\nterminal state for that meeting rather than something to retry — do not loop on\nthe request. The 201 body returns the created item including its `id` for\nfollow-up updates. Supports an optional `Idempotency-Key` header: supply a\nclient-generated printable-ASCII key (max 255 chars) and the API replays the\noriginal `2xx` response for identical repeats, returning `Idempotent-Replayed:\ntrue` on replays. Without a key, blind retries can double-add an item.\n\n\u003c!-- POST /v1/agenda-items --\u003e\n\u003c!-- Create an agenda item --\u003e"
    },
    "v1CreateMeeting": {
      "id": "v1CreateMeeting",
      "method": "POST",
      "path": "/v1/meetings",
      "summary": "Create a meeting",
      "description": "Creates a meeting owned by the authenticated user within their workspace. The creator is added as the owner participant.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "description": "Meeting creation parameters",
            "has_schema": true
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Optional client-generated idempotency key (max 255 printable ASCII). Repeat requests with the same key replay the original 2xx response.",
            "type": "string"
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "detail_level": {
              "type": "string",
              "enum": [
                "BULLET_POINTS",
                "STANDARD",
                "VERBATIM"
              ],
              "example": "STANDARD"
            },
            "end_time": {
              "type": "string",
              "example": "2023-01-01T11:00:00Z"
            },
            "is_instant": {
              "type": "boolean",
              "example": false
            },
            "start_time": {
              "type": "string",
              "example": "2023-01-01T10:00:00Z"
            },
            "template_id": {
              "type": "string",
              "example": "123e4567-e89b-12d3-a456-426614174004"
            },
            "title": {
              "type": "string",
              "example": "Weekly Team Sync"
            }
          },
          "required": [
            "title"
          ]
        }
      },
      "responses": {
        "201": {
          "description": "Created",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "calendar_event_id": {
                "type": "string",
                "description": "ID of the linked calendar event, if any",
                "example": "123e4567-e89b-12d3-a456-426614174006"
              },
              "created_at": {
                "type": "string",
                "description": "Timestamp when the meeting was created",
                "example": "2023-01-01T00:00:00Z"
              },
              "created_by_user_id": {
                "type": "string",
                "description": "ID of the user who created the meeting",
                "example": "123e4567-e89b-12d3-a456-426614174003"
              },
              "end_time": {
                "type": "string",
                "description": "Scheduled end time in RFC3339 format",
                "example": "2023-01-01T11:00:00-07:00"
              },
              "id": {
                "type": "string",
                "description": "Unique identifier for the meeting",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "owned_by_user_id": {
                "type": "string",
                "description": "ID of the user who owns the meeting",
                "example": "123e4567-e89b-12d3-a456-426614174003"
              },
              "redirect_to_meeting_id": {
                "type": "string",
                "description": "ID of the meeting to redirect to if this meeting was merged",
                "example": "123e4567-e89b-12d3-a456-426614174007"
              },
              "start_time": {
                "type": "string",
                "description": "Scheduled start time in RFC3339 format",
                "example": "2023-01-01T10:00:00-07:00"
              },
              "status": {
                "type": "string",
                "description": "Current status of the meeting",
                "enum": [
                  "draft",
                  "scheduled",
                  "in_progress",
                  "ended",
                  "completed"
                ],
                "example": "completed"
              },
              "summary_notes": {
                "type": "string",
                "description": "AI-generated summary notes from the meeting. Only populated on the single-meeting GET; PRO+ callers receive the full summary while FREE-tier callers receive a truncated preview (first 200 characters) followed by an upgrade note. Omitted in list/search/upcoming views.",
                "example": "Post-Meeting Summarization ..."
              },
              "title": {
                "type": "string",
                "description": "Title of the meeting",
                "example": "Weekly Team Sync"
              },
              "updated_at": {
                "type": "string",
                "description": "Timestamp when the meeting was last updated",
                "example": "2023-01-01T00:00:00Z"
              },
              "workspace_id": {
                "type": "string",
                "description": "ID of the workspace this meeting belongs to",
                "example": "123e4567-e89b-12d3-a456-426614174002"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "402": {
          "description": "Plan upgrade required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Insufficient scope",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Meeting template not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "409": {
          "description": "An identical request is currently being processed (Idempotency-Key conflict)",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "422": {
          "description": "Idempotency-Key has already been used with a different request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "createMeeting",
        "readOnly": false,
        "destructive": false,
        "idempotent": true,
        "description": "Create a meeting. Use this when the user wants to start a new meeting; the caller is added as owner automatically."
      },
      "agent_notes": "Creates a meeting owned by the authenticated user; the caller is automatically\nadded as the owner participant, so do not re-add yourself via\nv1AddMeetingParticipants. Only `title` is required — `start_time`/`end_time`\nare ISO-8601 and optional (set `is_instant: true` for an ad-hoc meeting that\nstarts now). The 201 body returns the created meeting including its `id`; use\nthat id for follow-up calls (participants, agenda, context).\nSupports an optional `Idempotency-Key` header: supply a client-generated\nprintable-ASCII key (max 255 chars) and the API replays the original `2xx`\nresponse for identical repeats, returning `Idempotent-Replayed: true` on\nreplays. Without a key, retries can create duplicate meetings.\n\n\u003c!-- POST /v1/meetings --\u003e\n\u003c!-- Create a meeting --\u003e"
    },
    "v1CreateWorkspaceWebhook": {
      "id": "v1CreateWorkspaceWebhook",
      "method": "POST",
      "path": "/v1/workspace/webhooks",
      "summary": "Create a workspace webhook endpoint",
      "description": "Registers a new webhook endpoint and returns the plaintext signing secret exactly once — it is not retrievable later, so store it immediately. The endpoint starts in pending verification. Requires PRO+ plan.",
      "auth": {
        "surface": "admin",
        "scopes": [
          "workspace:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "description": "Webhook creation parameters",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "subscribed_events": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "url": {
              "type": "string"
            }
          },
          "required": [
            "subscribed_events",
            "url"
          ]
        }
      },
      "responses": {
        "201": {
          "description": "Created",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "signing_secret": {
                "type": "string"
              },
              "verification_token": {
                "type": "string"
              },
              "webhook": {
                "type": "object",
                "properties": {
                  "consecutive_failure_count": {
                    "type": "integer"
                  },
                  "created_at": {
                    "type": "string"
                  },
                  "id": {
                    "type": "string"
                  },
                  "last_success_at": {
                    "type": "string"
                  },
                  "status": {
                    "type": "string"
                  },
                  "subscribed_events": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "updated_at": {
                    "type": "string"
                  },
                  "url": {
                    "type": "string"
                  },
                  "verified_at": {
                    "type": "string"
                  },
                  "workspace_id": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "402": {
          "description": "Plan upgrade required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "current_plan": {
                "type": "string"
              },
              "feature": {
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "required_plan": {
                "type": "string"
              }
            }
          }
        },
        "403": {
          "description": "Insufficient scope or role",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "409": {
          "description": "Active endpoint cap exceeded",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "createWorkspaceWebhook",
        "readOnly": false,
        "destructive": false,
        "idempotent": false,
        "description": "Create workspace webhook. Use this when the user wants to register a webhook endpoint; store the signing secret immediately."
      },
      "agent_notes": "Registers a new workspace webhook endpoint and returns the plaintext\n`signing_secret` EXACTLY ONCE in the 201 body — it is never retrievable\nafterwards (v1ListWorkspaceWebhooks omits it), so capture and store it\nimmediately. `verification_token` is also returned for endpoint verification.\nRequires a PRO+ plan: FREE workspaces get 402. Each plan caps the number of\nactive endpoints (PRO=1, ELITE=3, ENTERPRISE=unlimited); exceeding it returns\n409 `endpoint_cap_exceeded` — delete an existing endpoint or upgrade. `url`\nmust be HTTPS and `subscribed_events` must be a non-empty list of known event\ntypes (otherwise 400). The endpoint starts in `pending` status until\nverified. Requires workspace:write scope and an ADMIN/OWNER role. Not\nidempotent — retrying creates duplicate endpoints (subject to the cap).\n\n\u003c!-- POST /v1/workspace/webhooks --\u003e\n\u003c!-- Create a workspace webhook endpoint --\u003e",
      "flags": [
        "missing_idempotency_key"
      ]
    },
    "v1DeleteActionItem": {
      "id": "v1DeleteActionItem",
      "method": "DELETE",
      "path": "/v1/action-items/{id}",
      "summary": "Delete action item",
      "description": "Deletes an action item the authenticated user can access",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "action-items:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Action Item ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "204": {
          "description": "No Content",
          "has_schema": false
        },
        "400": {
          "description": "Invalid action item ID",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Insufficient scope",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Action item not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "deleteActionItem",
        "readOnly": false,
        "destructive": true,
        "idempotent": true,
        "description": "Delete action item. Use this when the user wants to remove a follow-up task."
      },
      "agent_notes": "Deletes an action item the caller can access, keyed by the `{id}` from\nv1ListActionItems or v1CreateActionItem; requires the `meetings:write` scope.\nThis is a soft delete, so the item stops appearing in lists and reads but is\nnot physically purged. Returns 204 No Content on success — there is no body to\nparse. Deleting an unknown id or one outside the caller's workspace returns\n404. Because the operation is effectively idempotent (a second delete of the\nsame id simply 404s rather than corrupting state), retries after a network\nerror are safe.\n\n\u003c!-- DELETE /v1/action-items/{id} --\u003e\n\u003c!-- Delete action item --\u003e",
      "flags": [
        "missing_idempotency_key"
      ]
    },
    "v1DeleteAgendaItem": {
      "id": "v1DeleteAgendaItem",
      "method": "DELETE",
      "path": "/v1/agenda-items/{id}",
      "summary": "Delete an agenda item",
      "description": "Deletes an agenda item in the authenticated user's workspace.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Agenda item ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "204": {
          "description": "Agenda item deleted",
          "has_schema": false
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Insufficient scope",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Agenda item not found or not accessible",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "deleteAgendaItem",
        "readOnly": false,
        "destructive": true,
        "idempotent": true,
        "description": "Delete agenda item. Use this when the user wants to remove an agenda item from a meeting."
      },
      "agent_notes": "Deletes an agenda item in the caller's workspace, keyed by the `{id}` from\nv1ListAgendaItems; requires the `meetings:write` scope. Returns 204 No Content\non success with\nno body. Deleting an unknown id or one outside the caller's workspace returns\n404. The operation is effectively idempotent — a repeat delete of the same id\nsimply 404s — so retries after a network error are safe.\n\n\u003c!-- DELETE /v1/agenda-items/{id} --\u003e\n\u003c!-- Delete an agenda item --\u003e",
      "flags": [
        "missing_idempotency_key"
      ]
    },
    "v1DeleteMeeting": {
      "id": "v1DeleteMeeting",
      "method": "DELETE",
      "path": "/v1/meetings/{id}",
      "summary": "Delete a meeting",
      "description": "Soft-deletes a meeting owned by the authenticated user (owner-scoped).",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "204": {
          "description": "Meeting deleted",
          "has_schema": false
        },
        "400": {
          "description": "Invalid meeting ID",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Not the meeting owner",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Meeting not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "deleteMeeting",
        "readOnly": false,
        "destructive": true,
        "idempotent": true,
        "description": "Delete a meeting. Use this when the user wants to remove a meeting they own."
      },
      "agent_notes": "Soft-deletes a meeting owned by the authenticated user, keyed by the `{id}`\nfrom v1CreateMeeting/v1ListMeetings; requires the `meetings:write` scope. This\nis owner-scoped: only the meeting owner may delete it, so a caller who is\nmerely a participant gets 403, and an unknown id gets 404. Deleting a meeting\nremoves it (and stops it surfacing in lists/reads) but does not physically\npurge the underlying record. Returns 204 No Content on success. The operation is effectively\nidempotent (a repeat delete 404s), so retries after a network error are safe.\n\n\u003c!-- DELETE /v1/meetings/{id} --\u003e\n\u003c!-- Delete a meeting --\u003e",
      "flags": [
        "missing_idempotency_key"
      ]
    },
    "v1DeleteMeetingContext": {
      "id": "v1DeleteMeetingContext",
      "method": "DELETE",
      "path": "/v1/meetings/{id}/context/{context_id}",
      "summary": "Delete meeting context",
      "description": "Soft-deletes a specific meeting context document.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting ID",
            "type": "string"
          },
          {
            "name": "context_id",
            "in": "path",
            "required": true,
            "description": "Context ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "204": {
          "description": "Context deleted",
          "has_schema": false
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Insufficient scope",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Context not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "deleteMeetingContext",
        "readOnly": false,
        "destructive": true,
        "idempotent": true,
        "description": "Delete meeting context. Use this when the user wants to remove a document from a meeting."
      },
      "agent_notes": "Soft-deletes a single meeting context document, keyed by the meeting `{id}` and\nthe `{context_id}` from v1ListMeetingContext; requires the `meetings:write`\nscope. The document stops surfacing in lists and reads but is not physically\npurged. Returns 204 No Content on success with no body. Deleting an unknown id,\nor one outside the caller's workspace, returns 404. The operation is\neffectively idempotent (a repeat delete 404s), so retries after a network error\nare safe.\n\n\u003c!-- DELETE /v1/meetings/{id}/context/{context_id} --\u003e\n\u003c!-- Delete meeting context --\u003e",
      "flags": [
        "missing_idempotency_key"
      ]
    },
    "v1DeleteUserToken": {
      "id": "v1DeleteUserToken",
      "method": "DELETE",
      "path": "/v1/user/tokens/{id}",
      "summary": "Delete a user access token",
      "description": "Soft-deletes a PAT by ID. Only the token owner can delete.",
      "auth": {
        "surface": "user-oauth",
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Token ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "204": {
          "description": "Token deleted",
          "has_schema": false
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Forbidden — not the token owner",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Token not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "deleteUserToken",
        "readOnly": false,
        "destructive": true,
        "idempotent": true,
        "description": "Delete user access token. Use this when the user wants to revoke a personal access token."
      },
      "agent_notes": "Permanently deletes a user access token by its `{id}` (the token id from\nv1ListUserTokens, NOT the secret token value itself). This is destructive and\nirreversible: any integration or automation still authenticating with that token\nwill start receiving 401s immediately, so confirm the token is unused before\ndeleting. Deleting an already-deleted or unknown id returns 404. Returns 204 No\nContent on success — there is no body to parse.\n\n\u003c!-- DELETE /v1/user/tokens/{id} --\u003e\n\u003c!-- Delete a user access token --\u003e",
      "flags": [
        "missing_idempotency_key"
      ]
    },
    "v1DeleteWorkspaceApiKey": {
      "id": "v1DeleteWorkspaceApiKey",
      "method": "DELETE",
      "path": "/v1/workspace/api-keys/{id}",
      "summary": "Delete a workspace API key",
      "description": "Soft-deletes a workspace API key by ID. IDOR protection: workspace-ownership verified before revocation; returns 404 on mismatch (section 3.4 cloaking).",
      "auth": {
        "surface": "admin",
        "scopes": [
          "workspace:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "API Key ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "204": {
          "description": "Key deleted",
          "has_schema": false
        },
        "400": {
          "description": "Invalid API key ID",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "402": {
          "description": "Plan upgrade required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Insufficient role",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Key not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "deleteWorkspaceApiKey",
        "readOnly": false,
        "destructive": true,
        "idempotent": true,
        "description": "Delete workspace API key. Use this when the user wants to revoke an API key."
      },
      "agent_notes": "Soft-deletes (revokes) a workspace API key by its `{id}` from\nv1ListWorkspaceApiKeys; requires the `workspace:write` scope AND an admin or\nowner role. This is destructive and takes effect immediately: any integration\nstill authenticating with that key starts receiving 401s, so confirm the key is\nunused before revoking. For IDOR protection the endpoint returns 404 (not 403)\nwhen the id belongs to another workspace, so a 404 is expected for\nnon-matching ids. A 402 indicates the feature is gated on the current plan.\nReturns 204 No Content on success. The operation is effectively idempotent (a\nrepeat delete 404s), so retries are safe.\n\n\u003c!-- DELETE /v1/workspace/api-keys/{id} --\u003e\n\u003c!-- Delete a workspace API key --\u003e",
      "flags": [
        "missing_idempotency_key"
      ]
    },
    "v1DeleteWorkspaceWebhook": {
      "id": "v1DeleteWorkspaceWebhook",
      "method": "DELETE",
      "path": "/v1/workspace/webhooks/{id}",
      "summary": "Delete a workspace webhook endpoint",
      "description": "Soft-deletes a webhook endpoint by ID. Only workspace admins/owners can delete.",
      "auth": {
        "surface": "admin",
        "scopes": [
          "workspace:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Webhook endpoint ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "204": {
          "description": "Webhook endpoint deleted",
          "has_schema": false
        },
        "400": {
          "description": "Invalid webhook endpoint ID",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Insufficient scope or role",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Webhook endpoint not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "deleteWorkspaceWebhook",
        "readOnly": false,
        "destructive": true,
        "idempotent": true,
        "description": "Delete workspace webhook. Use this when the user wants to remove a webhook endpoint."
      },
      "agent_notes": "Soft-deletes a webhook endpoint by its `{id}` from v1ListWorkspaceWebhooks;\nrequires the `workspace:write` scope AND an admin or owner role. Once deleted\nthe endpoint stops receiving event deliveries immediately, so confirm nothing\ndepends on it before removing. Returns 204 No Content on success. An unknown id\nreturns 404. The operation is effectively idempotent (a repeat delete 404s), so\nretries after a network error are safe.\n\n\u003c!-- DELETE /v1/workspace/webhooks/{id} --\u003e\n\u003c!-- Delete a workspace webhook endpoint --\u003e",
      "flags": [
        "missing_idempotency_key"
      ]
    },
    "v1DownloadMeetingContextContent": {
      "id": "v1DownloadMeetingContextContent",
      "method": "GET",
      "path": "/v1/meetings/{id}/context/{context_id}/content",
      "summary": "Download meeting context content",
      "description": "Streams the file content for a specific meeting context document from S3.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting ID",
            "type": "string"
          },
          {
            "name": "context_id",
            "in": "path",
            "required": true,
            "description": "Context ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "Context file stream; Content-Disposition includes filename",
          "has_schema": true,
          "schema": {
            "type": "file"
          }
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Context not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "downloadMeetingContextContent",
        "readOnly": true,
        "destructive": false,
        "idempotent": true,
        "description": "Download meeting context content. Use this when the user wants to fetch the file content of a meeting document."
      },
      "agent_notes": "Streams the raw file content of a single meeting context document, keyed by the\nmeeting `{id}` and the `{context_id}` from v1ListMeetingContext; requires the\n`meetings:read` scope. The 200 response body is the file bytes themselves (a\nstreamed download), not a JSON envelope — read it as a byte stream and rely on\nthe response headers for content type, not on JSON parsing. Use\nv1GetMeetingContext first if you only need metadata. Returns 404 if either id\nis unknown or the document belongs to another workspace's meeting.\n\n\u003c!-- GET /v1/meetings/{id}/context/{context_id}/content --\u003e\n\u003c!-- Download meeting context content --\u003e"
    },
    "v1ExchangeOAuthToken": {
      "id": "v1ExchangeOAuthToken",
      "method": "POST",
      "path": "/v1/oauth/token",
      "summary": "First-Party OAuth Token Exchange",
      "description": "Exchanges an authorization code + PKCE verifier for tokens, or refreshes an existing token.",
      "auth": {
        "surface": "public"
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "grant_type",
            "in": "formData",
            "required": true,
            "description": "authorization_code or refresh_token",
            "type": "string"
          },
          {
            "name": "code",
            "in": "formData",
            "required": false,
            "description": "Authorization code (for authorization_code grant)",
            "type": "string"
          },
          {
            "name": "code_verifier",
            "in": "formData",
            "required": false,
            "description": "PKCE code verifier (for authorization_code grant)",
            "type": "string"
          },
          {
            "name": "client_id",
            "in": "formData",
            "required": false,
            "description": "First-party client ID (for authorization_code grant)",
            "type": "string"
          },
          {
            "name": "redirect_uri",
            "in": "formData",
            "required": false,
            "description": "Must match authorize redirect_uri (for authorization_code grant)",
            "type": "string"
          },
          {
            "name": "refresh_token",
            "in": "formData",
            "required": false,
            "description": "Refresh token (for refresh_token grant)",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "access_token": {
                "type": "string",
                "example": "cto_at_v1_..."
              },
              "expires_in": {
                "type": "integer",
                "example": 3600
              },
              "refresh_token": {
                "type": "string",
                "example": "cto_rt_v1_..."
              },
              "scope": {
                "type": "string",
                "example": "meetings:read meetings:write action-items:read action-items:write calendar:read workspace:read workspace:write"
              },
              "token_type": {
                "type": "string",
                "example": "Bearer"
              }
            }
          }
        },
        "400": {
          "description": "Bad Request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "error": {
                "type": "string"
              },
              "error_description": {
                "type": "string"
              }
            }
          }
        },
        "401": {
          "description": "Unauthorized",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "error": {
                "type": "string"
              },
              "error_description": {
                "type": "string"
              }
            }
          }
        },
        "500": {
          "description": "Internal Server Error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "error": {
                "type": "string"
              },
              "error_description": {
                "type": "string"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "exchangeOAuthToken",
        "readOnly": false,
        "destructive": false,
        "idempotent": false,
        "description": "Exchange OAuth token. Use this when the user wants to exchange an authorization code or refresh a token.",
        "skip": true
      },
      "agent_notes": "Public endpoint (no bearer token) that mints the access token every other /v1\noperation needs — call this first when bootstrapping a client. It serves two\ngrant types via the form/body `grant_type` field: `authorization_code`\n(exchange the code + PKCE `code_verifier` from the redirect) and\n`refresh_token` (rotate an expiring token). Treat the returned `access_token`\nand `refresh_token` as secrets: never log them or echo them into tool\narguments. An authorization code is single-use — a repeated exchange with the\nsame code returns 400, so do not retry a failed exchange with the same code.\n\n\u003c!-- POST /v1/oauth/token --\u003e\n\u003c!-- First-Party OAuth Token Exchange --\u003e",
      "flags": [
        "missing_idempotency_key"
      ]
    },
    "v1ExportTranscript": {
      "id": "v1ExportTranscript",
      "method": "GET",
      "path": "/v1/meetings/{id}/transcript/export",
      "summary": "Export meeting transcript",
      "description": "Downloads the meeting transcript as an SRT file. Requires the Elite plan.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting ID",
            "type": "string"
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format (default: srt)",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "SRT file content",
          "has_schema": true,
          "schema": {
            "type": "string"
          }
        },
        "400": {
          "description": "Invalid meeting ID or unsupported format",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "402": {
          "description": "Plan upgrade required (Elite)",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "current_plan": {
                "type": "string"
              },
              "feature": {
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "required_plan": {
                "type": "string"
              }
            }
          }
        },
        "403": {
          "description": "Insufficient scope",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Transcript not found, empty, or inaccessible",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "meetingTranscript",
        "readOnly": true,
        "destructive": false,
        "idempotent": true,
        "description": "Get the transcript of a meeting. Use this when the user asks for the transcript, meeting transcript, SRT/captions, or recording transcript; requires Elite plan."
      },
      "agent_notes": "Use this tool whenever the user asks for a meeting transcript, transcript export, SRT file, recording transcript, or to read the transcript from a meeting.\n\nDownloads a meeting transcript as an SRT file. This operation requires the\nELITE plan; lower tiers receive HTTP 402. The response is binary\n`application/x-subrip` content with a download filename in the\n`Content-Disposition` header, not a JSON envelope. The optional `format`\nquery parameter defaults to `srt`, which is currently the only supported\nformat.\n\n\u003c!-- GET /v1/meetings/{id}/transcript/export --\u003e\n\u003c!-- Export meeting transcript --\u003e"
    },
    "v1GetActionItem": {
      "id": "v1GetActionItem",
      "method": "GET",
      "path": "/v1/action-items/{id}",
      "summary": "Get action item",
      "description": "Retrieves a single action item by ID if it is accessible to the authenticated user",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "action-items:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Action Item ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "agenda_item_id": {
                "type": "string",
                "example": "019abc12-def3-7000-8000-000000000003"
              },
              "assigned_to_user_id": {
                "type": "string",
                "example": "019abc12-def3-7000-8000-000000000004"
              },
              "completed_at": {
                "type": "string",
                "example": "2026-01-15T10:00:00Z"
              },
              "created_at": {
                "type": "string",
                "example": "2026-01-01T00:00:00Z"
              },
              "description": {
                "type": "string",
                "example": "Send proposal by Friday"
              },
              "due_date": {
                "type": "string",
                "example": "2026-01-15"
              },
              "id": {
                "type": "string",
                "example": "019abc12-def3-7000-8000-000000000001"
              },
              "is_completed": {
                "type": "boolean",
                "example": false
              },
              "meeting_id": {
                "type": "string",
                "example": "019abc12-def3-7000-8000-000000000002"
              },
              "status": {
                "type": "string",
                "example": "accepted"
              },
              "title": {
                "type": "string",
                "example": "Follow up with client"
              },
              "updated_at": {
                "type": "string",
                "example": "2026-01-01T00:00:00Z"
              }
            }
          }
        },
        "400": {
          "description": "Invalid action item ID",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Insufficient scope",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Action item not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "getActionItem",
        "readOnly": true,
        "destructive": false,
        "idempotent": true,
        "description": "Get action item. Use this when the user wants details of a specific action item."
      },
      "agent_notes": "Fetches a single action item by the `{id}` returned from v1ListActionItems or\nv1CreateActionItem; requires the `meetings:read` scope. Access is user-scoped:\nthe item is only returned if the caller is its assignee or a participant in the\nparent meeting, so an id that exists but belongs to someone else's meeting\nreturns 404 rather than leaking its existence. Use this to read back a single\nitem's current `status`, `is_completed`, or `due_date` after an update instead\nof re-listing. Returns 404 if the id is unknown or not accessible to the caller.\n\n\u003c!-- GET /v1/action-items/{id} --\u003e\n\u003c!-- Get action item --\u003e"
    },
    "v1GetAgendaItem": {
      "id": "v1GetAgendaItem",
      "method": "GET",
      "path": "/v1/agenda-items/{id}",
      "summary": "Get an agenda item",
      "description": "Retrieves a single agenda item by ID from the authenticated user's workspace.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Agenda item ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "created_at": {
                "type": "string",
                "example": "2026-01-01T00:00:00Z"
              },
              "deferred": {
                "type": "boolean",
                "example": false
              },
              "id": {
                "type": "string",
                "example": "019abc12-def3-7000-8000-000000000001"
              },
              "item_type": {
                "type": "string",
                "example": "DISCUSSION"
              },
              "meeting_id": {
                "type": "string",
                "example": "019abc12-def3-7000-8000-000000000002"
              },
              "status": {
                "type": "string",
                "example": "PENDING"
              },
              "time_allocation_minutes": {
                "type": "number",
                "example": 15
              },
              "title": {
                "type": "string",
                "example": "Q3 roadmap review"
              },
              "updated_at": {
                "type": "string",
                "example": "2026-01-01T00:00:00Z"
              }
            }
          }
        },
        "400": {
          "description": "Invalid agenda item ID",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Insufficient scope",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Agenda item not found or not accessible",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "getAgendaItem",
        "readOnly": true,
        "destructive": false,
        "idempotent": true,
        "description": "Get agenda item. Use this when the user wants details of a specific agenda item."
      },
      "agent_notes": "Fetches a single agenda item by the `{id}` returned from v1ListAgendaItems or\nv1CreateAgendaItem; requires the `meetings:read` scope. The item is only\nreturned when it is attached to a meeting the caller's workspace owns —\nbacklog (meeting-less) items and items in other workspaces are cloaked as 404.\nUse this to read back an agenda item's current `status`, `title`, or\n`time_allocation_minutes` after an update instead of re-listing. Returns 404 if\nthe id is unknown or not accessible to the caller.\n\n\u003c!-- GET /v1/agenda-items/{id} --\u003e\n\u003c!-- Get agenda item --\u003e"
    },
    "v1GetAuthIntrospect": {
      "id": "v1GetAuthIntrospect",
      "method": "GET",
      "path": "/v1/auth/introspect",
      "summary": "Introspect first-party token",
      "description": "Returns the authenticated Principal's metadata for the bearer token in the Authorization header. This is intended for first-party clients such as the MCP gateway.",
      "auth": {
        "surface": "user-oauth",
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "active": {
                "type": "boolean"
              },
              "auth_surface": {
                "type": "string"
              },
              "plan_type": {
                "type": "string"
              },
              "scopes": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "token_type": {
                "type": "string"
              },
              "user_id": {
                "type": "string"
              },
              "workspace_id": {
                "type": "string"
              },
              "workspace_role": {
                "type": "string"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "skip": true
      },
      "agent_notes": "Internal first-party token introspection endpoint used by the MCP gateway and\nother Contio clients. It is not exposed as an end-user MCP tool.\n\n\u003c!-- GET /v1/auth/introspect --\u003e\n\u003c!-- Introspect first-party token --\u003e"
    },
    "v1GetCalendarEvent": {
      "id": "v1GetCalendarEvent",
      "method": "GET",
      "path": "/v1/calendar/events/{id}",
      "summary": "Get calendar event by ID",
      "description": "Retrieve details of a specific calendar event for the authenticated user",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "calendar:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Calendar Event ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "attendees": {
                "type": "array",
                "description": "List of attendees for the calendar event",
                "items": {
                  "type": "object",
                  "properties": {
                    "email": {
                      "type": "string",
                      "description": "Email address of the attendee",
                      "example": "john.doe@example.com"
                    },
                    "name": {
                      "type": "string",
                      "description": "Display name of the attendee",
                      "example": "John Doe"
                    },
                    "status": {
                      "type": "string",
                      "description": "RSVP status (accepted, declined, tentative, needs_action)",
                      "example": "accepted"
                    },
                    "type": {
                      "type": "string",
                      "description": "Attendee type (required, optional, resource)",
                      "example": "required"
                    }
                  }
                }
              },
              "description": {
                "type": "string",
                "description": "Description or body of the calendar event",
                "example": "Discuss project updates"
              },
              "end_time": {
                "type": "string",
                "description": "End time of the event in RFC3339 format",
                "example": "2023-01-01T11:00:00Z"
              },
              "id": {
                "type": "string",
                "description": "Unique identifier for the calendar event",
                "example": "123e4567-e89b-12d3-a456-426614174006"
              },
              "linked_meetings": {
                "type": "array",
                "description": "IDs of all linked Contio meetings, sorted by creation date (oldest first)",
                "example": [
                  "[\"123e4567-e89b-12d3-a456-426614174000\"]"
                ],
                "items": {
                  "type": "string"
                }
              },
              "location": {
                "type": "string",
                "description": "Location of the event (physical or virtual)",
                "example": "Conference Room A"
              },
              "organizer": {
                "type": "object",
                "description": "Organizer of the calendar event",
                "properties": {
                  "email": {
                    "type": "string",
                    "description": "Email address of the attendee",
                    "example": "john.doe@example.com"
                  },
                  "name": {
                    "type": "string",
                    "description": "Display name of the attendee",
                    "example": "John Doe"
                  },
                  "status": {
                    "type": "string",
                    "description": "RSVP status (accepted, declined, tentative, needs_action)",
                    "example": "accepted"
                  },
                  "type": {
                    "type": "string",
                    "description": "Attendee type (required, optional, resource)",
                    "example": "required"
                  }
                }
              },
              "start_time": {
                "type": "string",
                "description": "Start time of the event in RFC3339 format",
                "example": "2023-01-01T10:00:00Z"
              },
              "title": {
                "type": "string",
                "description": "Title of the calendar event",
                "example": "Weekly Team Sync"
              }
            }
          }
        },
        "400": {
          "description": "Invalid calendar event ID format",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Calendar event not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "getCalendarEvent",
        "readOnly": true,
        "destructive": false,
        "idempotent": true,
        "description": "Get calendar event. Use this when the user wants details of a specific calendar event."
      },
      "agent_notes": "Fetches a single calendar event for the authenticated user, keyed by the `{id}`\nfrom v1ListCalendarEvents; requires the `meetings:read` scope. Use it to read\nthe full detail of an event you already discovered via the list call. Returns\n404 if the id is unknown or the event does not belong to the caller.\n\n\u003c!-- GET /v1/calendar/events/{id} --\u003e\n\u003c!-- Get calendar event by ID --\u003e"
    },
    "v1GetMe": {
      "id": "v1GetMe",
      "method": "GET",
      "path": "/v1/me",
      "summary": "Get current user identity",
      "description": "Returns the authenticated user's identity and workspace context.",
      "auth": {
        "surface": "user-oauth",
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "created_at": {
                "type": "string",
                "example": "2023-01-01T00:00:00Z"
              },
              "display_name": {
                "type": "string",
                "example": "John Doe"
              },
              "email": {
                "type": "string",
                "example": "john.doe@example.com"
              },
              "id": {
                "type": "string",
                "example": "123e4567-e89b-12d3-a456-426614174003"
              },
              "plan_type": {
                "type": "string",
                "example": "FREE"
              },
              "workspace_id": {
                "type": "string",
                "example": "123e4567-e89b-12d3-a456-426614174002"
              },
              "workspace_name": {
                "type": "string",
                "example": "Acme Corp"
              },
              "workspace_role": {
                "type": "string",
                "example": "WORKSPACE_MEMBER"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "getMe",
        "readOnly": true,
        "destructive": false,
        "idempotent": true,
        "description": "Get current user identity. Use this when the user wants to know who they are or their workspace context."
      },
      "agent_notes": "Returns the authenticated user's public identity and the workspace context\ncarried by the current credential. Use this to resolve the caller's user id,\nemail, workspace id, workspace role, and plan before invoking operations that\nrequire those identifiers. The endpoint requires authentication but no\nresource scope, and repeated calls do not change state.\n\n\u003c!-- GET /v1/me --\u003e\n\u003c!-- Get current user identity --\u003e"
    },
    "v1GetMeeting": {
      "id": "v1GetMeeting",
      "method": "GET",
      "path": "/v1/meetings/{id}",
      "summary": "Get meeting by ID",
      "description": "Retrieves a specific meeting by ID. PRO+ plans receive the full summary_notes; FREE-tier callers receive a truncated preview (first 200 characters) followed by an upgrade note.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "calendar_event_id": {
                "type": "string",
                "description": "ID of the linked calendar event, if any",
                "example": "123e4567-e89b-12d3-a456-426614174006"
              },
              "created_at": {
                "type": "string",
                "description": "Timestamp when the meeting was created",
                "example": "2023-01-01T00:00:00Z"
              },
              "created_by_user_id": {
                "type": "string",
                "description": "ID of the user who created the meeting",
                "example": "123e4567-e89b-12d3-a456-426614174003"
              },
              "end_time": {
                "type": "string",
                "description": "Scheduled end time in RFC3339 format",
                "example": "2023-01-01T11:00:00-07:00"
              },
              "id": {
                "type": "string",
                "description": "Unique identifier for the meeting",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "owned_by_user_id": {
                "type": "string",
                "description": "ID of the user who owns the meeting",
                "example": "123e4567-e89b-12d3-a456-426614174003"
              },
              "redirect_to_meeting_id": {
                "type": "string",
                "description": "ID of the meeting to redirect to if this meeting was merged",
                "example": "123e4567-e89b-12d3-a456-426614174007"
              },
              "start_time": {
                "type": "string",
                "description": "Scheduled start time in RFC3339 format",
                "example": "2023-01-01T10:00:00-07:00"
              },
              "status": {
                "type": "string",
                "description": "Current status of the meeting",
                "enum": [
                  "draft",
                  "scheduled",
                  "in_progress",
                  "ended",
                  "completed"
                ],
                "example": "completed"
              },
              "summary_notes": {
                "type": "string",
                "description": "AI-generated summary notes from the meeting. Only populated on the single-meeting GET; PRO+ callers receive the full summary while FREE-tier callers receive a truncated preview (first 200 characters) followed by an upgrade note. Omitted in list/search/upcoming views.",
                "example": "Post-Meeting Summarization ..."
              },
              "title": {
                "type": "string",
                "description": "Title of the meeting",
                "example": "Weekly Team Sync"
              },
              "updated_at": {
                "type": "string",
                "description": "Timestamp when the meeting was last updated",
                "example": "2023-01-01T00:00:00Z"
              },
              "workspace_id": {
                "type": "string",
                "description": "ID of the workspace this meeting belongs to",
                "example": "123e4567-e89b-12d3-a456-426614174002"
              }
            }
          }
        },
        "400": {
          "description": "Invalid meeting ID",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Insufficient scope",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Meeting not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "getMeeting",
        "readOnly": true,
        "destructive": false,
        "idempotent": true,
        "description": "Get meeting by ID. Use this when the user wants full details of a specific meeting; summary notes require a paid plan."
      },
      "agent_notes": "Fetches a single meeting the caller's workspace owns, keyed by the `{id}`\nreturned from v1CreateMeeting. Use this to read back a meeting's current\n`status` after creating or updating it. Two fields are conditional: `summary_notes`\nis present whenever the meeting has an AI summary — PRO+ callers receive the\nfull text while FREE-tier callers receive a truncated preview (the first 200\ncharacters followed by an upgrade note); it is null only when no summary\nexists yet (not an error), and a non-empty `redirect_to_meeting_id` means this\nmeeting was merged into another — follow that id for the canonical record.\nReturns 404 if the id is unknown or belongs to another workspace.\n\n\u003c!-- GET /v1/meetings/{id} --\u003e\n\u003c!-- Get meeting by ID --\u003e"
    },
    "v1GetMeetingContext": {
      "id": "v1GetMeetingContext",
      "method": "GET",
      "path": "/v1/meetings/{id}/context/{context_id}",
      "summary": "Get meeting context",
      "description": "Retrieves metadata for a specific meeting context document.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting ID",
            "type": "string"
          },
          {
            "name": "context_id",
            "in": "path",
            "required": true,
            "description": "Context ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "context_type": {
                "type": "string"
              },
              "created_at": {
                "type": "string"
              },
              "created_by_user_id": {
                "type": "string"
              },
              "file_status": {
                "type": "string"
              },
              "id": {
                "type": "string"
              },
              "meeting_id": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              },
              "platform_name": {
                "type": "string"
              },
              "source_format": {
                "type": "string"
              },
              "title": {
                "type": "string"
              },
              "updated_at": {
                "type": "string"
              },
              "workspace_id": {
                "type": "string"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Context not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "getMeetingContext",
        "readOnly": true,
        "destructive": false,
        "idempotent": true,
        "description": "Get meeting context. Use this when the user wants metadata for a specific meeting document."
      },
      "agent_notes": "Fetches the metadata (title, source format, type, timestamps) for a single\nmeeting context document, keyed by the meeting `{id}` and the `{context_id}`\nfrom v1ListMeetingContext; requires the `meetings:read` scope. This returns\nmetadata only — to retrieve the actual file bytes use\nv1DownloadMeetingContextContent. Returns 404 if either id is unknown or the\ndocument belongs to another workspace's meeting.\n\n\u003c!-- GET /v1/meetings/{id}/context/{context_id} --\u003e\n\u003c!-- Get meeting context --\u003e"
    },
    "v1GetOAuthJwks": {
      "id": "v1GetOAuthJwks",
      "method": "GET",
      "path": "/v1/oauth/.well-known/jwks.json",
      "summary": "First-Party JWKS",
      "description": "Returns the JSON Web Key Set for first-party token verification.",
      "auth": {
        "surface": "public"
      },
      "idempotency": {
        "supported": false
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "keys": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "alg": {
                      "type": "string"
                    },
                    "crv": {
                      "type": "string"
                    },
                    "e": {
                      "type": "string"
                    },
                    "kid": {
                      "type": "string"
                    },
                    "kty": {
                      "type": "string"
                    },
                    "n": {
                      "type": "string"
                    },
                    "use": {
                      "type": "string"
                    },
                    "x": {
                      "type": "string"
                    },
                    "y": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "500": {
          "description": "Internal Server Error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "error": {
                "type": "string"
              },
              "error_description": {
                "type": "string"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "getOAuthJwks",
        "readOnly": true,
        "destructive": false,
        "idempotent": true,
        "description": "Get JWKS. Use this when the user wants the JSON Web Key Set for verifying tokens.",
        "skip": true
      },
      "agent_notes": "Public endpoint (no bearer token) that returns the JSON Web Key Set (JWKS) used\nto verify first-party access tokens. Fetch it when you need to validate a token\nsignature offline. The keys rotate, so cache the result but honor standard HTTP\ncaching and refetch on an unknown `kid` rather than pinning a single key\nforever. This is discovery metadata, not a secret — it is safe to fetch without\nauthentication.\n\n\u003c!-- GET /v1/oauth/.well-known/jwks.json --\u003e\n\u003c!-- First-Party JWKS --\u003e"
    },
    "v1GetOAuthOpenidConfiguration": {
      "id": "v1GetOAuthOpenidConfiguration",
      "method": "GET",
      "path": "/v1/oauth/.well-known/openid-configuration",
      "summary": "First-Party OIDC Discovery",
      "description": "Returns the first-party OpenID Connect discovery document (RFC 8414, hyphenated spelling).",
      "auth": {
        "surface": "public"
      },
      "idempotency": {
        "supported": false
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "authorization_endpoint": {
                "type": "string"
              },
              "code_challenge_methods_supported": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "grant_types_supported": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "id_token_signing_alg_values_supported": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "issuer": {
                "type": "string"
              },
              "jwks_uri": {
                "type": "string"
              },
              "response_types_supported": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "revocation_endpoint": {
                "type": "string"
              },
              "scopes_supported": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "subject_types_supported": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "token_endpoint": {
                "type": "string"
              },
              "token_endpoint_auth_methods_supported": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "getOAuthOpenidConfiguration",
        "readOnly": true,
        "destructive": false,
        "idempotent": true,
        "description": "Get OIDC discovery document. Use this when the user wants the first-party OpenID Connect configuration.",
        "skip": true
      },
      "agent_notes": "Public endpoint (no bearer token) that returns the first-party OpenID Connect\ndiscovery document (RFC 8414). It advertises the authorization, token, JWKS,\nand related endpoint URLs plus supported scopes and grant types, so a client\ncan bootstrap the OAuth flow without hard-coding paths. Fetch it once at\nstartup and read the endpoint URLs from it rather than assuming them. This is\ndiscovery metadata, not a secret — safe to fetch unauthenticated.\n\n\u003c!-- GET /v1/oauth/.well-known/openid-configuration --\u003e\n\u003c!-- First-Party OIDC Discovery --\u003e"
    },
    "v1GetWorkspace": {
      "id": "v1GetWorkspace",
      "method": "GET",
      "path": "/v1/workspace",
      "summary": "Get workspace settings",
      "description": "Returns the workspace record (name, plan, owner, timestamps) for the Principal's workspace.",
      "auth": {
        "surface": "admin",
        "scopes": [
          "workspace:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "responses": {
        "200": {
          "description": "Workspace settings",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Workspace settings returned by the /v1 API",
            "properties": {
              "created_at": {
                "type": "string",
                "example": "2024-01-01T00:00:00Z"
              },
              "id": {
                "type": "string",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "name": {
                "type": "string",
                "example": "Acme Corp"
              },
              "owner_id": {
                "type": "string",
                "example": "123e4567-e89b-12d3-a456-426614174001"
              },
              "plan_type": {
                "type": "string",
                "example": "PRO"
              },
              "updated_at": {
                "type": "string",
                "example": "2024-06-15T12:30:00Z"
              }
            }
          }
        },
        "401": {
          "description": "Unauthorized",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "error": {
                "type": "string"
              }
            }
          }
        },
        "404": {
          "description": "Workspace not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "error": {
                "type": "string"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "error": {
                "type": "string"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "getWorkspace",
        "readOnly": true,
        "destructive": false,
        "idempotent": true,
        "description": "Get workspace settings. Use this when the user wants to view workspace name, plan, owner, and timestamps."
      },
      "agent_notes": "Returns the caller's workspace record (name, plan, owner, timestamps).\nRequires the `workspace:read` scope AND an admin or owner role — a member with\na lesser role is rejected, so this is not a general \"who am I\" call for\nordinary users. Use it to read back the current `plan` (some features are plan\ngated) or to confirm settings after v1UpdateWorkspace. Returns 404 if the\nPrincipal has no resolvable workspace.\n\n\u003c!-- GET /v1/workspace --\u003e\n\u003c!-- Get workspace settings --\u003e"
    },
    "v1ListActionItems": {
      "id": "v1ListActionItems",
      "method": "GET",
      "path": "/v1/action-items",
      "summary": "List action items",
      "description": "Retrieves action items assigned to the authenticated user within their workspace",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "action-items:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum items per page (1-100)",
            "type": "integer"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Number of items to skip",
            "type": "integer"
          },
          {
            "name": "meeting_id",
            "in": "query",
            "required": false,
            "description": "Filter by meeting ID",
            "type": "string"
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "description": "Filter by status",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "description": "Array of items for the current page",
                "items": {
                  "type": "object",
                  "properties": {
                    "agenda_item_id": {
                      "type": "string",
                      "example": "019abc12-def3-7000-8000-000000000003"
                    },
                    "assigned_to_user_id": {
                      "type": "string",
                      "example": "019abc12-def3-7000-8000-000000000004"
                    },
                    "completed_at": {
                      "type": "string",
                      "example": "2026-01-15T10:00:00Z"
                    },
                    "created_at": {
                      "type": "string",
                      "example": "2026-01-01T00:00:00Z"
                    },
                    "description": {
                      "type": "string",
                      "example": "Send proposal by Friday"
                    },
                    "due_date": {
                      "type": "string",
                      "example": "2026-01-15"
                    },
                    "id": {
                      "type": "string",
                      "example": "019abc12-def3-7000-8000-000000000001"
                    },
                    "is_completed": {
                      "type": "boolean",
                      "example": false
                    },
                    "meeting_id": {
                      "type": "string",
                      "example": "019abc12-def3-7000-8000-000000000002"
                    },
                    "status": {
                      "type": "string",
                      "example": "accepted"
                    },
                    "title": {
                      "type": "string",
                      "example": "Follow up with client"
                    },
                    "updated_at": {
                      "type": "string",
                      "example": "2026-01-01T00:00:00Z"
                    }
                  }
                }
              },
              "limit": {
                "type": "integer",
                "description": "Maximum number of items per page",
                "example": 50
              },
              "offset": {
                "type": "integer",
                "description": "Number of items skipped from the beginning",
                "example": 0
              },
              "total": {
                "type": "integer",
                "description": "Total number of items across all pages",
                "example": 100
              }
            }
          }
        },
        "400": {
          "description": "Invalid query parameters",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Insufficient scope",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "listActionItems",
        "readOnly": true,
        "destructive": false,
        "idempotent": true,
        "description": "List action items. Use this when the user wants to view follow-up actions assigned to them."
      },
      "agent_notes": "Lists action items assigned to the authenticated user within their workspace;\nrequires the `meetings:read` scope. This is a per-user assignment view, not a\nworkspace-wide dump — items assigned to other members are not returned.\nUse `meeting_id` to restrict results to one meeting and `status` to restrict\nresults to a lifecycle state; the filters can be combined.\nPaginate with `limit` and `offset` query params (limit is clamped to 1–100);\nthe response envelope carries the filtered `total` so you can detect when to\nstop rather than fetching everything at once. Use this to discover action-item\nids before calling v1UpdateActionItem or v1DeleteActionItem.\n\n\u003c!-- GET /v1/action-items --\u003e\n\u003c!-- List action items --\u003e"
    },
    "v1ListAgendaItems": {
      "id": "v1ListAgendaItems",
      "method": "GET",
      "path": "/v1/agenda-items",
      "summary": "List agenda items",
      "description": "Retrieves agenda items accessible to the authenticated user within their workspace",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum items per page (1-100)",
            "type": "integer"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Number of items to skip",
            "type": "integer"
          },
          {
            "name": "meeting_id",
            "in": "query",
            "required": false,
            "description": "Filter by meeting ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "description": "Array of items for the current page",
                "items": {
                  "type": "object",
                  "properties": {
                    "created_at": {
                      "type": "string",
                      "example": "2026-01-01T00:00:00Z"
                    },
                    "deferred": {
                      "type": "boolean",
                      "example": false
                    },
                    "id": {
                      "type": "string",
                      "example": "019abc12-def3-7000-8000-000000000001"
                    },
                    "item_type": {
                      "type": "string",
                      "example": "DISCUSSION"
                    },
                    "meeting_id": {
                      "type": "string",
                      "example": "019abc12-def3-7000-8000-000000000002"
                    },
                    "status": {
                      "type": "string",
                      "example": "PENDING"
                    },
                    "time_allocation_minutes": {
                      "type": "number",
                      "example": 15
                    },
                    "title": {
                      "type": "string",
                      "example": "Q3 roadmap review"
                    },
                    "updated_at": {
                      "type": "string",
                      "example": "2026-01-01T00:00:00Z"
                    }
                  }
                }
              },
              "limit": {
                "type": "integer",
                "description": "Maximum number of items per page",
                "example": 50
              },
              "offset": {
                "type": "integer",
                "description": "Number of items skipped from the beginning",
                "example": 0
              },
              "total": {
                "type": "integer",
                "description": "Total number of items across all pages",
                "example": 100
              }
            }
          }
        },
        "400": {
          "description": "Invalid query parameters",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Insufficient scope",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "listAgendaItems",
        "readOnly": true,
        "destructive": false,
        "idempotent": true,
        "description": "List agenda items. Use this when the user wants to view the agenda items for a meeting."
      },
      "agent_notes": "Lists agenda items accessible to the authenticated user within their\nworkspace; requires the `meetings:read` scope. Use `meeting_id` to restrict\nresults to one meeting while preserving meeting participation and\nrestricted-to-leads access rules. Paginate with `limit` and `offset` query\nparams (limit is clamped to 1–100); the response envelope carries the\nfiltered `total` so you can page deterministically. Use this to read the\ncurrent ordering (`sequence`) before inserting a new item with\nv1CreateAgendaItem or reordering with v1UpdateAgendaItem, and to discover\nagenda-item ids for update/delete calls.\n\n\u003c!-- GET /v1/agenda-items --\u003e\n\u003c!-- List agenda items --\u003e"
    },
    "v1ListCalendarEvents": {
      "id": "v1ListCalendarEvents",
      "method": "GET",
      "path": "/v1/calendar/events",
      "summary": "List calendar events",
      "description": "Retrieve a paginated list of calendar events for the authenticated user within a specified time range",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "calendar:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "start_date",
            "in": "query",
            "required": true,
            "description": "Start time in RFC3339 format",
            "type": "string"
          },
          {
            "name": "end_date",
            "in": "query",
            "required": true,
            "description": "End time in RFC3339 format",
            "type": "string"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Number of results per page (default 25, max 100)",
            "type": "integer"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Pagination offset (default 0)",
            "type": "integer"
          },
          {
            "name": "direction",
            "in": "query",
            "required": false,
            "description": "Sort direction: asc or desc (default: asc)",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "description": "Array of calendar events for the current page",
                "items": {
                  "type": "object",
                  "properties": {
                    "attendees": {
                      "type": "array",
                      "description": "List of attendees for the calendar event",
                      "items": {
                        "type": "object",
                        "properties": {
                          "email": {
                            "type": "string",
                            "description": "Email address of the attendee",
                            "example": "john.doe@example.com"
                          },
                          "name": {
                            "type": "string",
                            "description": "Display name of the attendee",
                            "example": "John Doe"
                          },
                          "status": {
                            "type": "string",
                            "description": "RSVP status (accepted, declined, tentative, needs_action)",
                            "example": "accepted"
                          },
                          "type": {
                            "type": "string",
                            "description": "Attendee type (required, optional, resource)",
                            "example": "required"
                          }
                        }
                      }
                    },
                    "description": {
                      "type": "string",
                      "description": "Description or body of the calendar event",
                      "example": "Discuss project updates"
                    },
                    "end_time": {
                      "type": "string",
                      "description": "End time of the event in RFC3339 format",
                      "example": "2023-01-01T11:00:00Z"
                    },
                    "id": {
                      "type": "string",
                      "description": "Unique identifier for the calendar event",
                      "example": "123e4567-e89b-12d3-a456-426614174006"
                    },
                    "linked_meetings": {
                      "type": "array",
                      "description": "IDs of all linked Contio meetings, sorted by creation date (oldest first)",
                      "example": [
                        "[\"123e4567-e89b-12d3-a456-426614174000\"]"
                      ],
                      "items": {
                        "type": "string"
                      }
                    },
                    "location": {
                      "type": "string",
                      "description": "Location of the event (physical or virtual)",
                      "example": "Conference Room A"
                    },
                    "organizer": {
                      "type": "object",
                      "description": "Organizer of the calendar event",
                      "properties": {
                        "email": {
                          "type": "string",
                          "description": "Email address of the attendee",
                          "example": "john.doe@example.com"
                        },
                        "name": {
                          "type": "string",
                          "description": "Display name of the attendee",
                          "example": "John Doe"
                        },
                        "status": {
                          "type": "string",
                          "description": "RSVP status (accepted, declined, tentative, needs_action)",
                          "example": "accepted"
                        },
                        "type": {
                          "type": "string",
                          "description": "Attendee type (required, optional, resource)",
                          "example": "required"
                        }
                      }
                    },
                    "start_time": {
                      "type": "string",
                      "description": "Start time of the event in RFC3339 format",
                      "example": "2023-01-01T10:00:00Z"
                    },
                    "title": {
                      "type": "string",
                      "description": "Title of the calendar event",
                      "example": "Weekly Team Sync"
                    }
                  }
                }
              },
              "limit": {
                "type": "integer",
                "description": "Maximum number of items per page",
                "example": 25
              },
              "offset": {
                "type": "integer",
                "description": "Number of items skipped from the beginning",
                "example": 0
              },
              "total": {
                "type": "integer",
                "description": "Total number of items across all pages",
                "example": 100
              }
            }
          }
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "listCalendarEvents",
        "readOnly": true,
        "destructive": false,
        "idempotent": true,
        "description": "List calendar events. Use this when the user wants to view calendar events in a specified time range."
      },
      "agent_notes": "Lists the authenticated user's calendar events within a time window; requires\nthe `meetings:read` scope. Both `start_date` and `end_date` query params are\nrequired (ISO-8601) and bound the window — omitting either returns 400.\nPaginate with `limit` and `offset` (limit clamped to 1–100) and use\n`direction` to control ordering. Each event's `id` is what you pass to\nv1GetCalendarEvent. This reflects the user's connected calendar, so an empty\nresult usually means no events in range rather than an error.\n\n\u003c!-- GET /v1/calendar/events --\u003e\n\u003c!-- List calendar events --\u003e"
    },
    "v1ListMeetingContacts": {
      "id": "v1ListMeetingContacts",
      "method": "GET",
      "path": "/v1/meetings/{id}/contacts",
      "summary": "List meeting contacts",
      "description": "Returns workspace contacts (active members and prior guest participants) matching the supplied query. Contacts are scoped to the meeting's workspace and are intended for use when inviting participants.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting ID",
            "type": "string"
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Search query matched against name or email",
            "type": "string"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of items per page (1-100, default 20)",
            "type": "integer"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Number of items to skip (default 0)",
            "type": "integer"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "description": "Array of items for the current page",
                "items": {
                  "type": "object",
                  "properties": {
                    "email": {
                      "type": "string",
                      "example": "jane@acme.com"
                    },
                    "name": {
                      "type": "string",
                      "example": "Jane Doe"
                    }
                  }
                }
              },
              "limit": {
                "type": "integer",
                "description": "Maximum number of items per page",
                "example": 50
              },
              "offset": {
                "type": "integer",
                "description": "Number of items skipped from the beginning",
                "example": 0
              },
              "total": {
                "type": "integer",
                "description": "Total number of items across all pages",
                "example": 100
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Insufficient scope",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Meeting not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "listMeetingContacts",
        "readOnly": true,
        "destructive": false,
        "idempotent": false,
        "description": "Search workspace contacts for meeting invitations."
      },
      "agent_notes": "Searches the workspace contacts associated with the meeting's workspace. Pass\nthe meeting `id` from v1CreateMeeting/v1GetMeeting as the path parameter and\nan optional `q` query for name/email substring matching. Results are intended\nas suggestions when the user wants to invite participants to a meeting; the\nreturned `email` can be supplied to v1AddMeetingParticipants as `guest_email`.\nDoes not expose whether a contact corresponds to a registered user account.\n\n\u003c!-- GET /v1/meetings/{id}/contacts --\u003e\n\u003c!-- List meeting contacts --\u003e"
    },
    "v1ListMeetingContext": {
      "id": "v1ListMeetingContext",
      "method": "GET",
      "path": "/v1/meetings/{id}/context",
      "summary": "List meeting contexts",
      "description": "Lists meeting contexts for a meeting with pagination. Returns all context documents regardless of source (partner or user-uploaded).",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting ID",
            "type": "string"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of items to return (1-100)",
            "type": "integer"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Offset for pagination",
            "type": "integer"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "context_type": {
                      "type": "string"
                    },
                    "created_at": {
                      "type": "string"
                    },
                    "created_by_user_id": {
                      "type": "string"
                    },
                    "file_status": {
                      "type": "string"
                    },
                    "id": {
                      "type": "string"
                    },
                    "meeting_id": {
                      "type": "string"
                    },
                    "model_id": {
                      "type": "string"
                    },
                    "platform_name": {
                      "type": "string"
                    },
                    "source_format": {
                      "type": "string"
                    },
                    "title": {
                      "type": "string"
                    },
                    "updated_at": {
                      "type": "string"
                    },
                    "workspace_id": {
                      "type": "string"
                    }
                  }
                }
              },
              "limit": {
                "type": "integer"
              },
              "offset": {
                "type": "integer"
              },
              "total": {
                "type": "integer"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Meeting not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "listMeetingContext",
        "readOnly": true,
        "destructive": false,
        "idempotent": true,
        "description": "List meeting contexts. Use this when the user wants to see documents attached to a meeting."
      },
      "agent_notes": "Lists the context documents attached to a meeting (`{id}`) with pagination;\nrequires the `meetings:read` scope. Returns every context document for the\nmeeting regardless of how it was added (user-uploaded or ingested from an\nintegration), so use it as the discovery call before reading metadata with\nv1GetMeetingContext or fetching bytes with v1DownloadMeetingContextContent.\nPaginate with `limit` and `offset` (limit clamped to 1–100) and read `total`\nfrom the envelope. Returns 404 if the meeting id is unknown or belongs to\nanother workspace. Each item's `id` is the `context_id` used by the per-context\nendpoints.\n\n\u003c!-- GET /v1/meetings/{id}/context --\u003e\n\u003c!-- List meeting contexts --\u003e"
    },
    "v1ListMeetingParticipants": {
      "id": "v1ListMeetingParticipants",
      "method": "GET",
      "path": "/v1/meetings/{id}/participants",
      "summary": "List meeting participants",
      "description": "Retrieves participants for a specific meeting accessible to the authenticated user. Returns paginated results.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting ID",
            "type": "string"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of items per page (1-100, default 20)",
            "type": "integer"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Number of items to skip (default 0)",
            "type": "integer"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "description": "Array of items for the current page",
                "items": {
                  "type": "object",
                  "properties": {
                    "created_at": {
                      "type": "string",
                      "example": "2023-01-01T00:00:00Z"
                    },
                    "email": {
                      "type": "string",
                      "example": "john.doe@example.com"
                    },
                    "id": {
                      "type": "string",
                      "example": "123e4567-e89b-12d3-a456-426614174004"
                    },
                    "is_attended": {
                      "type": "boolean",
                      "example": true
                    },
                    "meeting_id": {
                      "type": "string",
                      "example": "123e4567-e89b-12d3-a456-426614174000"
                    },
                    "name": {
                      "type": "string",
                      "example": "John Doe"
                    },
                    "role": {
                      "type": "string",
                      "example": "EDITOR"
                    },
                    "updated_at": {
                      "type": "string",
                      "example": "2023-01-01T00:00:00Z"
                    },
                    "user_id": {
                      "type": "string",
                      "example": "123e4567-e89b-12d3-a456-426614174003"
                    }
                  }
                }
              },
              "limit": {
                "type": "integer",
                "description": "Maximum number of items per page",
                "example": 50
              },
              "offset": {
                "type": "integer",
                "description": "Number of items skipped from the beginning",
                "example": 0
              },
              "total": {
                "type": "integer",
                "description": "Total number of items across all pages",
                "example": 100
              }
            }
          }
        },
        "400": {
          "description": "Invalid request parameters",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Insufficient scope",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Meeting not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "listMeetingParticipants",
        "readOnly": true,
        "destructive": false,
        "idempotent": true,
        "description": "List meeting participants. Use this when the user wants to see who is in a meeting."
      },
      "agent_notes": "Lists the participants of a specific meeting the caller can access, keyed by\nthe `{id}` from v1CreateMeeting/v1ListMeetings; requires the `meetings:read`\nscope. Returns paginated results — use `limit` and `offset` (limit clamped to\n1–100) and read `total` from the envelope to page deterministically. Each item\ncarries the participant's user id, which is the value you pass to\nv1RemoveMeetingParticipant. Returns 404 if the meeting id is unknown or belongs\nto another workspace. Call this before removing a participant to confirm the\nexact user id rather than guessing.\n\n\u003c!-- GET /v1/meetings/{id}/participants --\u003e\n\u003c!-- List meeting participants --\u003e"
    },
    "v1ListMeetingTemplates": {
      "id": "v1ListMeetingTemplates",
      "method": "GET",
      "path": "/v1/meeting-templates",
      "summary": "List meeting templates",
      "description": "Retrieves meeting templates accessible to the authenticated user (system, vertical, workspace, and user-owned templates). Returns paginated results. Use the returned id as the template_id when creating a meeting.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum items per page (1-100)",
            "type": "integer"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Number of items to skip",
            "type": "integer"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "description": "Array of items for the current page",
                "items": {
                  "type": "object",
                  "properties": {
                    "created_at": {
                      "type": "string",
                      "example": "2026-01-01T00:00:00Z"
                    },
                    "description": {
                      "type": "string",
                      "example": "Standard agenda for weekly team syncs"
                    },
                    "id": {
                      "type": "string",
                      "example": "019abc12-def3-7000-8000-000000000001"
                    },
                    "is_active": {
                      "type": "boolean",
                      "example": true
                    },
                    "name": {
                      "type": "string",
                      "example": "Weekly Team Sync"
                    },
                    "ownership_type": {
                      "type": "string",
                      "enum": [
                        "SYSTEM",
                        "VERTICAL",
                        "WORKSPACE",
                        "USER",
                        "PARTNER"
                      ],
                      "example": "WORKSPACE"
                    },
                    "updated_at": {
                      "type": "string",
                      "example": "2026-01-01T00:00:00Z"
                    }
                  }
                }
              },
              "limit": {
                "type": "integer",
                "description": "Maximum number of items per page",
                "example": 20
              },
              "offset": {
                "type": "integer",
                "description": "Number of items skipped from the beginning",
                "example": 0
              },
              "total": {
                "type": "integer",
                "description": "Total number of items across all pages",
                "example": 100
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Insufficient scope",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "listMeetingTemplates",
        "readOnly": true,
        "destructive": false,
        "idempotent": true,
        "description": "List meeting templates. Use this when the user wants to see available templates; use the returned id when creating a meeting."
      },
      "agent_notes": "Lists the meeting templates the caller can use, spanning system, vertical,\nworkspace, and personal (user-owned) templates. This is the discovery call for\nthe `template_id` accepted by v1CreateMeeting — templates are otherwise not\naddressable via /v1, so call this first when you want to create a meeting from\na template but don't already have its id. Reads are ungated (no paid-tier\npaywall); the `meetings:read` scope is sufficient. Paginate with `limit`\n(1-100, default 20) and `offset`; the response envelope carries `total` so you\ncan tell when to stop. Each item exposes `id`, `name`, `description`,\n`ownership_type`, and `is_active` — pass `id` straight through as\nv1CreateMeeting's `template_id`.\n\n\u003c!-- GET /v1/meeting-templates --\u003e\n\u003c!-- List meeting templates --\u003e"
    },
    "v1ListMeetings": {
      "id": "v1ListMeetings",
      "method": "GET",
      "path": "/v1/meetings",
      "summary": "List meetings",
      "description": "Retrieves meetings accessible to the authenticated user within their workspace. Returns paginated results.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum items per page (1-100, default 20)",
            "type": "integer"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Number of items to skip (default 0)",
            "type": "integer"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "description": "Array of items for the current page",
                "items": {
                  "type": "object",
                  "properties": {
                    "calendar_event_id": {
                      "type": "string",
                      "description": "ID of the linked calendar event, if any",
                      "example": "123e4567-e89b-12d3-a456-426614174006"
                    },
                    "created_at": {
                      "type": "string",
                      "description": "Timestamp when the meeting was created",
                      "example": "2023-01-01T00:00:00Z"
                    },
                    "created_by_user_id": {
                      "type": "string",
                      "description": "ID of the user who created the meeting",
                      "example": "123e4567-e89b-12d3-a456-426614174003"
                    },
                    "end_time": {
                      "type": "string",
                      "description": "Scheduled end time in RFC3339 format",
                      "example": "2023-01-01T11:00:00-07:00"
                    },
                    "id": {
                      "type": "string",
                      "description": "Unique identifier for the meeting",
                      "example": "123e4567-e89b-12d3-a456-426614174000"
                    },
                    "owned_by_user_id": {
                      "type": "string",
                      "description": "ID of the user who owns the meeting",
                      "example": "123e4567-e89b-12d3-a456-426614174003"
                    },
                    "redirect_to_meeting_id": {
                      "type": "string",
                      "description": "ID of the meeting to redirect to if this meeting was merged",
                      "example": "123e4567-e89b-12d3-a456-426614174007"
                    },
                    "start_time": {
                      "type": "string",
                      "description": "Scheduled start time in RFC3339 format",
                      "example": "2023-01-01T10:00:00-07:00"
                    },
                    "status": {
                      "type": "string",
                      "description": "Current status of the meeting",
                      "enum": [
                        "draft",
                        "scheduled",
                        "in_progress",
                        "ended",
                        "completed"
                      ],
                      "example": "completed"
                    },
                    "summary_notes": {
                      "type": "string",
                      "description": "AI-generated summary notes from the meeting. Only populated on the single-meeting GET; PRO+ callers receive the full summary while FREE-tier callers receive a truncated preview (first 200 characters) followed by an upgrade note. Omitted in list/search/upcoming views.",
                      "example": "Post-Meeting Summarization ..."
                    },
                    "title": {
                      "type": "string",
                      "description": "Title of the meeting",
                      "example": "Weekly Team Sync"
                    },
                    "updated_at": {
                      "type": "string",
                      "description": "Timestamp when the meeting was last updated",
                      "example": "2023-01-01T00:00:00Z"
                    },
                    "workspace_id": {
                      "type": "string",
                      "description": "ID of the workspace this meeting belongs to",
                      "example": "123e4567-e89b-12d3-a456-426614174002"
                    }
                  }
                }
              },
              "limit": {
                "type": "integer",
                "description": "Maximum number of items per page",
                "example": 20
              },
              "offset": {
                "type": "integer",
                "description": "Number of items skipped from the beginning",
                "example": 0
              },
              "total": {
                "type": "integer",
                "description": "Total number of items across all pages",
                "example": 100
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Insufficient scope",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "listMeetings",
        "readOnly": true,
        "destructive": false,
        "idempotent": true,
        "description": "List meetings. Use this when the user wants to browse or paginate their meetings; prefer searchMeetings when they mention keyword, date, participant, or status."
      },
      "agent_notes": "Lists meetings in the caller's workspace, newest first. Paginate with `limit`\nand `offset` query params rather than fetching everything at once; the response\nenvelope carries `total` so you can detect when to stop. Each item is a summary\nview — use v1GetMeeting for the full record of a specific meeting. List items\nnever carry `summary_notes`; that field is only returned by the single-meeting\nread (v1GetMeeting), and even there only on paid tiers. This is the natural\ndiscovery call before acting on a meeting whose id you don't already have.\n\n\u003c!-- GET /v1/meetings --\u003e\n\u003c!-- List meetings --\u003e"
    },
    "v1ListUpcomingMeetings": {
      "id": "v1ListUpcomingMeetings",
      "method": "GET",
      "path": "/v1/meetings/upcoming",
      "summary": "List upcoming meetings",
      "description": "Retrieves the authenticated caller's upcoming meetings, soonest first. Returns paginated results.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum items per page (1-100, default 20)",
            "type": "integer"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Number of items to skip (default 0)",
            "type": "integer"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "description": "Array of items for the current page",
                "items": {
                  "type": "object",
                  "properties": {
                    "calendar_event_id": {
                      "type": "string",
                      "description": "ID of the linked calendar event, if any",
                      "example": "123e4567-e89b-12d3-a456-426614174006"
                    },
                    "created_at": {
                      "type": "string",
                      "description": "Timestamp when the meeting was created",
                      "example": "2023-01-01T00:00:00Z"
                    },
                    "created_by_user_id": {
                      "type": "string",
                      "description": "ID of the user who created the meeting",
                      "example": "123e4567-e89b-12d3-a456-426614174003"
                    },
                    "end_time": {
                      "type": "string",
                      "description": "Scheduled end time in RFC3339 format",
                      "example": "2023-01-01T11:00:00-07:00"
                    },
                    "id": {
                      "type": "string",
                      "description": "Unique identifier for the meeting",
                      "example": "123e4567-e89b-12d3-a456-426614174000"
                    },
                    "owned_by_user_id": {
                      "type": "string",
                      "description": "ID of the user who owns the meeting",
                      "example": "123e4567-e89b-12d3-a456-426614174003"
                    },
                    "redirect_to_meeting_id": {
                      "type": "string",
                      "description": "ID of the meeting to redirect to if this meeting was merged",
                      "example": "123e4567-e89b-12d3-a456-426614174007"
                    },
                    "start_time": {
                      "type": "string",
                      "description": "Scheduled start time in RFC3339 format",
                      "example": "2023-01-01T10:00:00-07:00"
                    },
                    "status": {
                      "type": "string",
                      "description": "Current status of the meeting",
                      "enum": [
                        "draft",
                        "scheduled",
                        "in_progress",
                        "ended",
                        "completed"
                      ],
                      "example": "completed"
                    },
                    "summary_notes": {
                      "type": "string",
                      "description": "AI-generated summary notes from the meeting. Only populated on the single-meeting GET; PRO+ callers receive the full summary while FREE-tier callers receive a truncated preview (first 200 characters) followed by an upgrade note. Omitted in list/search/upcoming views.",
                      "example": "Post-Meeting Summarization ..."
                    },
                    "title": {
                      "type": "string",
                      "description": "Title of the meeting",
                      "example": "Weekly Team Sync"
                    },
                    "updated_at": {
                      "type": "string",
                      "description": "Timestamp when the meeting was last updated",
                      "example": "2023-01-01T00:00:00Z"
                    },
                    "workspace_id": {
                      "type": "string",
                      "description": "ID of the workspace this meeting belongs to",
                      "example": "123e4567-e89b-12d3-a456-426614174002"
                    }
                  }
                }
              },
              "limit": {
                "type": "integer",
                "description": "Maximum number of items per page",
                "example": 20
              },
              "offset": {
                "type": "integer",
                "description": "Number of items skipped from the beginning",
                "example": 0
              },
              "total": {
                "type": "integer",
                "description": "Total number of items across all pages",
                "example": 100
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Insufficient scope",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "listUpcomingMeetings",
        "readOnly": true,
        "destructive": false,
        "idempotent": true,
        "description": "List upcoming meetings. Use this when the user wants to see their soonest future meetings."
      },
      "agent_notes": "Lists the caller's upcoming meetings, soonest first — i.e. scheduled meetings\nwhose start time is still in the future. This is the direct answer to \"what\nmeetings do I have coming up\"; use it instead of v1ListMeetings or\nv1SearchMeetings when the user asks about their upcoming schedule. Paginate\nwith `limit`/`offset`; the response envelope carries `total`. Each item is a\nsummary — call v1GetMeeting with an item's `id` for the full record. List\nitems never carry `summary_notes`; that field is only returned by the\nsingle-meeting read (v1GetMeeting), and even there only on paid tiers.\n\n\u003c!-- GET /v1/meetings/upcoming --\u003e\n\u003c!-- List upcoming meetings --\u003e"
    },
    "v1ListUserTokens": {
      "id": "v1ListUserTokens",
      "method": "GET",
      "path": "/v1/user/tokens",
      "summary": "List user access tokens",
      "description": "Returns a paginated list of the caller's non-revoked PATs (masked prefix, scopes, timestamps).",
      "auth": {
        "surface": "user-oauth",
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Limit",
            "type": "integer"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Offset",
            "type": "integer"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "created_at": {
                      "type": "string"
                    },
                    "expires_at": {
                      "type": "string"
                    },
                    "id": {
                      "type": "string"
                    },
                    "last_used_at": {
                      "type": "string"
                    },
                    "name": {
                      "type": "string"
                    },
                    "prefix": {
                      "type": "string"
                    },
                    "scopes": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                }
              },
              "limit": {
                "type": "integer"
              },
              "offset": {
                "type": "integer"
              },
              "total": {
                "type": "integer"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "listUserTokens",
        "readOnly": true,
        "destructive": false,
        "idempotent": true,
        "description": "List user access tokens. Use this when the user wants to view their non-revoked personal access tokens."
      },
      "agent_notes": "Lists the caller's own non-revoked personal access tokens; any authenticated\nuser may call it for their own tokens (no special scope or role required).\nEach entry exposes only a masked prefix plus scopes and timestamps — the full\nsecret token value is never returned, so this cannot recover a lost token.\nRevoked tokens are excluded. Paginate with `limit` and `offset` (limit clamped\nto 1–100). Each token's `id` is the value you pass to v1DeleteUserToken — it is\nNOT the secret token string.\n\n\u003c!-- GET /v1/user/tokens --\u003e\n\u003c!-- List user access tokens --\u003e"
    },
    "v1ListWorkspaceApiKeys": {
      "id": "v1ListWorkspaceApiKeys",
      "method": "GET",
      "path": "/v1/workspace/api-keys",
      "summary": "List workspace API keys",
      "description": "Returns a paginated list of the workspace's non-revoked API keys (masked prefix, scopes, timestamps).",
      "auth": {
        "surface": "admin",
        "scopes": [
          "workspace:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Limit",
            "type": "integer"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Offset",
            "type": "integer"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "created_at": {
                      "type": "string"
                    },
                    "expires_at": {
                      "type": "string"
                    },
                    "id": {
                      "type": "string"
                    },
                    "last_used_at": {
                      "type": "string"
                    },
                    "name": {
                      "type": "string"
                    },
                    "prefix": {
                      "type": "string"
                    },
                    "scopes": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                }
              },
              "limit": {
                "type": "integer"
              },
              "offset": {
                "type": "integer"
              },
              "total": {
                "type": "integer"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "402": {
          "description": "Plan upgrade required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Insufficient role",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "listWorkspaceApiKeys",
        "readOnly": true,
        "destructive": false,
        "idempotent": true,
        "description": "List workspace API keys. Use this when the user wants to view the workspace's non-revoked API keys."
      },
      "agent_notes": "Lists the workspace's non-revoked API keys; requires the `workspace:write`\nscope AND an admin or owner role. Each entry exposes only a masked prefix plus\nscopes and timestamps — the full secret key value is never returned by this or\nany read endpoint, so do not expect to recover a lost key here. Revoked keys\nare excluded. A 402 indicates the feature is gated on the current plan.\nPaginate with `limit` and `offset` (limit clamped to 1–100). Each key's `id` is\nwhat you pass to v1DeleteWorkspaceApiKey.\n\n\u003c!-- GET /v1/workspace/api-keys --\u003e\n\u003c!-- List workspace API keys --\u003e"
    },
    "v1ListWorkspaceMembers": {
      "id": "v1ListWorkspaceMembers",
      "method": "GET",
      "path": "/v1/workspace/members",
      "summary": "List workspace members",
      "description": "Returns a paginated list of members (active users and pending invitations) for the Principal's workspace.",
      "auth": {
        "surface": "admin",
        "scopes": [
          "workspace:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 25, clamped [1,100])",
            "type": "integer"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Pagination offset (default 0)",
            "type": "integer"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "Paginated member list",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Paginated list of workspace members",
            "properties": {
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "description": "Workspace member returned by the /v1 API",
                  "properties": {
                    "deactivated_at": {
                      "type": "string"
                    },
                    "email": {
                      "type": "string",
                      "example": "jane@acme.com"
                    },
                    "id": {
                      "type": "string",
                      "example": "123e4567-e89b-12d3-a456-426614174002"
                    },
                    "is_deactivated": {
                      "type": "boolean",
                      "example": false
                    },
                    "is_pending": {
                      "type": "boolean",
                      "example": false
                    },
                    "name": {
                      "type": "string",
                      "example": "Jane Doe"
                    },
                    "role": {
                      "type": "string",
                      "example": "WORKSPACE_ADMIN"
                    }
                  }
                }
              },
              "limit": {
                "type": "integer",
                "example": 25
              },
              "offset": {
                "type": "integer",
                "example": 0
              },
              "total": {
                "type": "integer",
                "example": 42
              }
            }
          }
        },
        "401": {
          "description": "Unauthorized",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "error": {
                "type": "string"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "error": {
                "type": "string"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "listWorkspaceMembers",
        "readOnly": true,
        "destructive": false,
        "idempotent": true,
        "description": "List workspace members. Use this when the user wants to see active members and pending invitations."
      },
      "agent_notes": "Lists the caller's workspace members; requires the `workspace:read` scope AND\nan admin or owner role. The result includes both active users and pending\ninvitations, so an entry may represent someone who has not yet accepted — check\neach member's state before assuming they are active. Paginate with `limit` and\n`offset` (limit clamped to 1–100) and read `total` from the envelope. Each\nmember carries the user id you pass to v1UpdateWorkspaceMemberRole or\nv1RemoveWorkspaceMember.\n\n\u003c!-- GET /v1/workspace/members --\u003e\n\u003c!-- List workspace members --\u003e"
    },
    "v1ListWorkspaceWebhooks": {
      "id": "v1ListWorkspaceWebhooks",
      "method": "GET",
      "path": "/v1/workspace/webhooks",
      "summary": "List workspace webhook endpoints",
      "description": "Returns a paginated list of the workspace's non-deleted webhook endpoints.",
      "auth": {
        "surface": "admin",
        "scopes": [
          "workspace:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Limit",
            "type": "integer"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Offset",
            "type": "integer"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "consecutive_failure_count": {
                      "type": "integer"
                    },
                    "created_at": {
                      "type": "string"
                    },
                    "id": {
                      "type": "string"
                    },
                    "last_success_at": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string"
                    },
                    "subscribed_events": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "updated_at": {
                      "type": "string"
                    },
                    "url": {
                      "type": "string"
                    },
                    "verified_at": {
                      "type": "string"
                    },
                    "workspace_id": {
                      "type": "string"
                    }
                  }
                }
              },
              "limit": {
                "type": "integer"
              },
              "offset": {
                "type": "integer"
              },
              "total": {
                "type": "integer"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Insufficient scope or role",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "listWorkspaceWebhooks",
        "readOnly": true,
        "destructive": false,
        "idempotent": true,
        "description": "List workspace webhooks. Use this when the user wants to view the workspace's registered webhook endpoints."
      },
      "agent_notes": "Lists the workspace's webhook endpoints; requires the `workspace:write` scope\nAND an admin or owner role. Deleted endpoints are excluded. Each entry carries\na `status` — an endpoint that has repeatedly failed delivery may be\nauto-disabled, in which case v1ReEnableWorkspaceWebhook is used to bring it\nback. Paginate with `limit` and `offset` (limit clamped to 1–100). Each\nendpoint's `id` is what you pass to v1DeleteWorkspaceWebhook and\nv1ReEnableWorkspaceWebhook.\n\n\u003c!-- GET /v1/workspace/webhooks --\u003e\n\u003c!-- List workspace webhook endpoints --\u003e"
    },
    "v1ReEnableWorkspaceWebhook": {
      "id": "v1ReEnableWorkspaceWebhook",
      "method": "POST",
      "path": "/v1/workspace/webhooks/{id}/re-enable",
      "summary": "Re-enable a disabled webhook endpoint",
      "description": "Clears auto-disable state: sets status back to verified and resets failure count.",
      "auth": {
        "surface": "admin",
        "scopes": [
          "workspace:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": true
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Webhook endpoint ID",
            "type": "string"
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Optional client-generated idempotency key (max 255 printable ASCII). Repeat requests with the same key replay the original 2xx response.",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "consecutive_failure_count": {
                "type": "integer"
              },
              "created_at": {
                "type": "string"
              },
              "id": {
                "type": "string"
              },
              "last_success_at": {
                "type": "string"
              },
              "status": {
                "type": "string"
              },
              "subscribed_events": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "updated_at": {
                "type": "string"
              },
              "url": {
                "type": "string"
              },
              "verified_at": {
                "type": "string"
              },
              "workspace_id": {
                "type": "string"
              }
            }
          }
        },
        "400": {
          "description": "Invalid webhook endpoint ID or endpoint is not disabled",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Insufficient scope or role",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Webhook endpoint not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "409": {
          "description": "An identical request is currently being processed (Idempotency-Key conflict)",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "422": {
          "description": "Idempotency-Key has already been used with a different request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "reEnableWorkspaceWebhook",
        "readOnly": false,
        "destructive": false,
        "idempotent": true,
        "description": "Re-enable workspace webhook. Use this when the user wants to restore a disabled webhook endpoint."
      },
      "agent_notes": "Re-enables a webhook endpoint that was auto-disabled after repeated delivery\nfailures, keyed by the `{id}` from v1ListWorkspaceWebhooks; requires the\n`workspace:write` scope AND an admin or owner role. It clears the auto-disable\nstate: status returns to verified and the failure counter is reset, so\ndeliveries resume. Fix the underlying endpoint (reachability, response codes)\nbefore re-enabling, or it will simply auto-disable again. Returns 200 on\nsuccess. The endpoint MUST currently be in the disabled state: re-enabling an\nendpoint that is not disabled returns 400 (`endpoint_not_disabled`). Supports\nan optional `Idempotency-Key` header: supply a client-generated printable-ASCII\nkey (max 255 chars) and the API replays the original `2xx` response for\nidentical repeats, returning `Idempotent-Replayed: true` on replays. Without a\nkey, a blind retry after the endpoint has already been re-enabled can return\n400, so check the endpoint's status via v1ListWorkspaceWebhooks first or use a\nkey.\n\n\u003c!-- POST /v1/workspace/webhooks/{id}/re-enable --\u003e\n\u003c!-- Re-enable a disabled webhook endpoint --\u003e"
    },
    "v1RemoveMeetingParticipant": {
      "id": "v1RemoveMeetingParticipant",
      "method": "DELETE",
      "path": "/v1/meetings/{id}/participants/{userId}",
      "summary": "Remove meeting participant by user ID",
      "description": "Removes the participant identified by user ID from a meeting owned by the authenticated user's workspace.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting ID",
            "type": "string"
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "description": "User ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "204": {
          "description": "Participant removed",
          "has_schema": false
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Insufficient scope or permissions",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Meeting or participant not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "removeMeetingParticipant",
        "readOnly": false,
        "destructive": true,
        "idempotent": true,
        "description": "Remove meeting participant. Use this when the user wants to remove someone from a meeting."
      },
      "agent_notes": "Removes a participant, identified by their user id (`{userId}`), from a meeting\nowned by the caller's workspace (`{id}`); requires the `meetings:write` scope.\nThe `{userId}` is the participant user id from v1ListMeetingParticipants, NOT a\nparticipant-row id.\nReturns 204 No Content on success. Removing someone who is not on the meeting,\nor an unknown meeting, returns 404. The operation is effectively idempotent (a\nrepeat removal 404s), so retries after a network error are safe.\n\n\u003c!-- DELETE /v1/meetings/{id}/participants/{userId} --\u003e\n\u003c!-- Remove meeting participant by user ID --\u003e",
      "flags": [
        "missing_idempotency_key"
      ]
    },
    "v1RemoveWorkspaceMember": {
      "id": "v1RemoveWorkspaceMember",
      "method": "DELETE",
      "path": "/v1/workspace/members/{userID}",
      "summary": "Remove workspace member",
      "description": "Soft-deletes a member from the workspace. Cannot remove the workspace owner or yourself.",
      "auth": {
        "surface": "admin",
        "scopes": [
          "workspace:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "userID",
            "in": "path",
            "required": true,
            "description": "User ID of the member to remove",
            "type": "string"
          }
        ]
      },
      "responses": {
        "204": {
          "description": "Member removed",
          "has_schema": false
        },
        "400": {
          "description": "Invalid request (e.g. cannot remove self)",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "error": {
                "type": "string"
              }
            }
          }
        },
        "401": {
          "description": "Unauthorized",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "error": {
                "type": "string"
              }
            }
          }
        },
        "403": {
          "description": "Forbidden (cannot remove workspace owner)",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "error": {
                "type": "string"
              }
            }
          }
        },
        "404": {
          "description": "Member not found in workspace",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "error": {
                "type": "string"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "error": {
                "type": "string"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "removeWorkspaceMember",
        "readOnly": false,
        "destructive": true,
        "idempotent": true,
        "description": "Remove workspace member. Use this when the user wants to remove a member from the workspace."
      },
      "agent_notes": "Soft-deletes a member from the caller's workspace, keyed by the `{userID}` from\nv1ListWorkspaceMembers; requires the `workspace:write` scope AND an admin or\nowner role. Two guard rules apply: removing yourself returns 400\n(`invalid_request`) and removing the workspace owner returns 403 (`forbidden`);\nneither succeeds, so this is not a way to leave a workspace. Treat the 403 as an\nauthorization guard, not a malformed request. Returns 204 No Content on success.\nAn unknown\nuser id returns 404. The removal is a soft delete and is effectively idempotent\n(a repeat removal 404s), so retries after a network error are safe.\n\n\u003c!-- DELETE /v1/workspace/members/{userID} --\u003e\n\u003c!-- Remove workspace member --\u003e",
      "flags": [
        "missing_idempotency_key"
      ]
    },
    "v1RevokeOAuthToken": {
      "id": "v1RevokeOAuthToken",
      "method": "POST",
      "path": "/v1/oauth/revoke",
      "summary": "First-Party OAuth Token Revocation",
      "description": "Revokes a first-party access or refresh token (and its chain). Follows RFC 7009.",
      "auth": {
        "surface": "user-oauth",
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "token",
            "in": "formData",
            "required": true,
            "description": "Token to revoke",
            "type": "string"
          },
          {
            "name": "token_type_hint",
            "in": "formData",
            "required": false,
            "description": "access_token or refresh_token",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "Token revoked (always 200 per RFC 7009)",
          "has_schema": false
        },
        "400": {
          "description": "Bad Request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "error": {
                "type": "string"
              },
              "error_description": {
                "type": "string"
              }
            }
          }
        },
        "401": {
          "description": "Unauthorized",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "error": {
                "type": "string"
              },
              "error_description": {
                "type": "string"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "revokeOAuthToken",
        "readOnly": false,
        "destructive": true,
        "idempotent": true,
        "description": "Revoke OAuth token. Use this when the user wants to invalidate an access or refresh token."
      },
      "agent_notes": "Revokes a first-party OAuth token (RFC 7009). Revoking a refresh token also\ninvalidates its entire rotation chain, so this is destructive: the client will\nneed to re-run v1ExchangeOAuthToken to obtain new credentials afterward. Per the\nspec it always returns 200 — even for an unknown or already-revoked token — so\ndo not treat 200 as proof the specific token existed. Pass `token_type_hint`\nwhen known to speed lookup. Treat the token you submit as a secret: never log it\nor echo it into tool arguments. Because the operation is idempotent (repeat\nrevocations are safe no-ops), retries are fine.\n\n\u003c!-- POST /v1/oauth/revoke --\u003e\n\u003c!-- First-Party OAuth Token Revocation --\u003e",
      "flags": [
        "missing_idempotency_key"
      ]
    },
    "v1RotateWorkspaceWebhookSecret": {
      "id": "v1RotateWorkspaceWebhookSecret",
      "method": "POST",
      "path": "/v1/workspace/webhooks/{id}/rotate-secret",
      "summary": "Rotate webhook endpoint signing secret",
      "description": "Generates a new signing secret and returns it exactly once — the previous secret is invalidated immediately and the new one is not retrievable later, so store it right away. This operation is destructive and non-idempotent. Requires PRO+ plan.",
      "auth": {
        "surface": "admin",
        "scopes": [
          "workspace:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Webhook endpoint ID",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "signing_secret": {
                "type": "string"
              },
              "webhook": {
                "type": "object",
                "properties": {
                  "consecutive_failure_count": {
                    "type": "integer"
                  },
                  "created_at": {
                    "type": "string"
                  },
                  "id": {
                    "type": "string"
                  },
                  "last_success_at": {
                    "type": "string"
                  },
                  "status": {
                    "type": "string"
                  },
                  "subscribed_events": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "updated_at": {
                    "type": "string"
                  },
                  "url": {
                    "type": "string"
                  },
                  "verified_at": {
                    "type": "string"
                  },
                  "workspace_id": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "400": {
          "description": "Invalid webhook endpoint ID",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "402": {
          "description": "Plan upgrade required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "current_plan": {
                "type": "string"
              },
              "feature": {
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "required_plan": {
                "type": "string"
              }
            }
          }
        },
        "403": {
          "description": "Insufficient scope or role",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Webhook endpoint not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "rotateWorkspaceWebhookSecret",
        "readOnly": false,
        "destructive": true,
        "idempotent": false,
        "description": "Rotate webhook signing secret. Use this when the user wants to reset a webhook endpoint's secret; store the new secret immediately."
      },
      "agent_notes": "Generates a NEW signing secret for the webhook endpoint identified by `{id}`\nand returns it EXACTLY ONCE in the 200 body — store it immediately, it is not\nretrievable later. This is destructive: the previous secret is invalidated\nright away, so any receiver still verifying signatures with the old secret\nwill start rejecting deliveries until you deploy the new one. Requires a PRO+\nplan (FREE gets 402, and the plan gate short-circuits before the endpoint\nlookup — a FREE caller sees 402 even for an unknown id). An unknown or\nother-workspace `{id}` returns 404 (ownership is cloaked to prevent\ndisclosure). Requires workspace:write scope and an ADMIN/OWNER role. Not\nidempotent — each call mints a different secret.\n\n\u003c!-- POST /v1/workspace/webhooks/{id}/rotate-secret --\u003e\n\u003c!-- Rotate a workspace webhook endpoint signing secret --\u003e",
      "flags": [
        "missing_idempotency_key"
      ]
    },
    "v1SearchMeetings": {
      "id": "v1SearchMeetings",
      "method": "GET",
      "path": "/v1/meetings/search",
      "summary": "Search meetings",
      "description": "Searches meetings the authenticated caller participates in using a curated set of filters. Results are scoped to the caller's workspace and de-duplicated: meetings sharing the same calendar_event_id and start time are collapsed into one row, preferring the meeting owned by the caller, then created by the caller, then the most recently updated, and finally the meeting ID as a deterministic tie-breaker. Returns paginated results.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Free-text query matched (case-insensitive substring) against the meeting title and email alias",
            "type": "string"
          },
          {
            "name": "start_time_from",
            "in": "query",
            "required": false,
            "description": "Inclusive lower bound on start time (ISO 8601 with timezone)",
            "type": "string"
          },
          {
            "name": "start_time_to",
            "in": "query",
            "required": false,
            "description": "Inclusive upper bound on start time (ISO 8601 with timezone)",
            "type": "string"
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "description": "Filter by meeting status",
            "type": "string"
          },
          {
            "name": "title_contains",
            "in": "query",
            "required": false,
            "description": "Case-insensitive substring match against the meeting title",
            "type": "string"
          },
          {
            "name": "participant_emails",
            "in": "query",
            "required": false,
            "description": "Comma-separated participant email addresses to filter by",
            "type": "string"
          },
          {
            "name": "has_action_items",
            "in": "query",
            "required": false,
            "description": "Restrict to meetings that do (true) or do not (false) have action items",
            "type": "boolean"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum items per page (1-100, default 20)",
            "type": "integer"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Number of items to skip (default 0)",
            "type": "integer"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "items": {
                "type": "array",
                "description": "Array of items for the current page",
                "items": {
                  "type": "object",
                  "properties": {
                    "calendar_event_id": {
                      "type": "string",
                      "description": "ID of the linked calendar event, if any",
                      "example": "123e4567-e89b-12d3-a456-426614174006"
                    },
                    "created_at": {
                      "type": "string",
                      "description": "Timestamp when the meeting was created",
                      "example": "2023-01-01T00:00:00Z"
                    },
                    "created_by_user_id": {
                      "type": "string",
                      "description": "ID of the user who created the meeting",
                      "example": "123e4567-e89b-12d3-a456-426614174003"
                    },
                    "end_time": {
                      "type": "string",
                      "description": "Scheduled end time in RFC3339 format",
                      "example": "2023-01-01T11:00:00-07:00"
                    },
                    "id": {
                      "type": "string",
                      "description": "Unique identifier for the meeting",
                      "example": "123e4567-e89b-12d3-a456-426614174000"
                    },
                    "owned_by_user_id": {
                      "type": "string",
                      "description": "ID of the user who owns the meeting",
                      "example": "123e4567-e89b-12d3-a456-426614174003"
                    },
                    "redirect_to_meeting_id": {
                      "type": "string",
                      "description": "ID of the meeting to redirect to if this meeting was merged",
                      "example": "123e4567-e89b-12d3-a456-426614174007"
                    },
                    "start_time": {
                      "type": "string",
                      "description": "Scheduled start time in RFC3339 format",
                      "example": "2023-01-01T10:00:00-07:00"
                    },
                    "status": {
                      "type": "string",
                      "description": "Current status of the meeting",
                      "enum": [
                        "draft",
                        "scheduled",
                        "in_progress",
                        "ended",
                        "completed"
                      ],
                      "example": "completed"
                    },
                    "summary_notes": {
                      "type": "string",
                      "description": "AI-generated summary notes from the meeting. Only populated on the single-meeting GET; PRO+ callers receive the full summary while FREE-tier callers receive a truncated preview (first 200 characters) followed by an upgrade note. Omitted in list/search/upcoming views.",
                      "example": "Post-Meeting Summarization ..."
                    },
                    "title": {
                      "type": "string",
                      "description": "Title of the meeting",
                      "example": "Weekly Team Sync"
                    },
                    "updated_at": {
                      "type": "string",
                      "description": "Timestamp when the meeting was last updated",
                      "example": "2023-01-01T00:00:00Z"
                    },
                    "workspace_id": {
                      "type": "string",
                      "description": "ID of the workspace this meeting belongs to",
                      "example": "123e4567-e89b-12d3-a456-426614174002"
                    }
                  }
                }
              },
              "limit": {
                "type": "integer",
                "description": "Maximum number of items per page",
                "example": 20
              },
              "offset": {
                "type": "integer",
                "description": "Number of items skipped from the beginning",
                "example": 0
              },
              "total": {
                "type": "integer",
                "description": "Total number of items across all pages",
                "example": 100
              }
            }
          }
        },
        "400": {
          "description": "Invalid search parameters",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Insufficient scope",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "searchMeetings",
        "readOnly": true,
        "destructive": false,
        "idempotent": true,
        "description": "Search meetings by keyword/title/topic/date/participant/status. Use this when the user wants to find meetings matching specific filters."
      },
      "agent_notes": "Searches meetings the caller participates in using a curated set of filters:\n`q` (case-insensitive substring over the meeting title and email alias — not\ntranscript or recap content), a start-time window (`start_time_from` /\n`start_time_to`, ISO 8601 with a required timezone), `status` (only\n`scheduled` or `completed`), `title_contains`, `participant_emails` (comma\nseparated), and `has_action_items`. All filters are optional and combine with\nAND. Visibility matches v1ListMeetings (meetings the caller participates in),\nso you never pass a workspace id. Paginate with `limit`/`offset`; the\nenvelope's `total` tells you when to stop. Prefer this over v1ListMeetings when\nyou already know something about the meeting (a keyword, a date, a participant)\nand want to narrow down rather than page through everything. Search results\nnever carry `summary_notes`; that field is only returned by the single-meeting\nread (v1GetMeeting), and even there only on paid tiers.\n\n\u003c!-- GET /v1/meetings/search --\u003e\n\u003c!-- Search meetings --\u003e"
    },
    "v1StreamUserEvents": {
      "id": "v1StreamUserEvents",
      "method": "GET",
      "path": "/v1/user/events",
      "summary": "Stream workspace events (SSE)",
      "description": "Opens a Server-Sent Events stream of the caller's workspace events\n(meetings, participants, action items, agenda items, meeting context,\ncalendar events). Supply the Last-Event-ID header to resume a dropped\nconnection without gaps. The stream may be opened with any of the\nfollowing read scopes: meetings:read, action-items:read, calendar:read,\nor workspace:read. The @Security annotation lists one valid scope;\nthe runtime middleware enforces the any-of requirement.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:read"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "Last-Event-ID",
            "in": "header",
            "required": false,
            "description": "Stream ID of the last event the client received; replays events after it",
            "type": "string"
          }
        ]
      },
      "responses": {
        "200": {
          "description": "SSE stream of workspace events",
          "has_schema": true,
          "schema": {
            "type": "string"
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "429": {
          "description": "Connection cap exceeded",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "streamUserEvents",
        "readOnly": true,
        "destructive": false,
        "idempotent": true,
        "description": "Stream workspace events via SSE. Use this when the user wants a real-time feed of workspace/meeting events.",
        "skip": true
      },
      "agent_notes": "Opens a long-lived Server-Sent Events (SSE) stream of the caller's workspace\nevents — meetings, participants, action items, agenda items, meeting context,\nand calendar events; requires the `meetings:read` scope. This is the real-time\nalternative to polling the individual list endpoints. Consume it as a\n`text/event-stream`, not a single JSON body. To resume after a dropped\nconnection without missing events, send the `Last-Event-ID` header set to the\nid of the last event you processed; missed events are replayed before live\ndelivery resumes. Concurrent connections are capped per user and per workspace;\nexceeding a cap returns 429 with a Retry-After hint, so back off rather than\nreconnecting immediately.\n\n\u003c!-- GET /v1/user/events --\u003e\n\u003c!-- Stream workspace events (SSE) --\u003e"
    },
    "v1UpdateActionItem": {
      "id": "v1UpdateActionItem",
      "method": "PATCH",
      "path": "/v1/action-items/{id}",
      "summary": "Update action item",
      "description": "Partially updates an action item the authenticated user can access",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "action-items:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Action Item ID",
            "type": "string"
          },
          {
            "name": "action_item",
            "in": "body",
            "required": true,
            "description": "Action item update data",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "description": {
              "type": "string",
              "example": "Updated description"
            },
            "due_date": {
              "type": "string",
              "example": "2026-01-15"
            },
            "is_completed": {
              "type": "boolean",
              "example": true
            },
            "status": {
              "type": "string",
              "enum": [
                "needs_review",
                "accepted",
                "in_progress",
                "blocked",
                "completed",
                "cancelled"
              ],
              "example": "accepted"
            },
            "title": {
              "type": "string",
              "example": "Follow up with client"
            }
          }
        }
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "agenda_item_id": {
                "type": "string",
                "example": "019abc12-def3-7000-8000-000000000003"
              },
              "assigned_to_user_id": {
                "type": "string",
                "example": "019abc12-def3-7000-8000-000000000004"
              },
              "completed_at": {
                "type": "string",
                "example": "2026-01-15T10:00:00Z"
              },
              "created_at": {
                "type": "string",
                "example": "2026-01-01T00:00:00Z"
              },
              "description": {
                "type": "string",
                "example": "Send proposal by Friday"
              },
              "due_date": {
                "type": "string",
                "example": "2026-01-15"
              },
              "id": {
                "type": "string",
                "example": "019abc12-def3-7000-8000-000000000001"
              },
              "is_completed": {
                "type": "boolean",
                "example": false
              },
              "meeting_id": {
                "type": "string",
                "example": "019abc12-def3-7000-8000-000000000002"
              },
              "status": {
                "type": "string",
                "example": "accepted"
              },
              "title": {
                "type": "string",
                "example": "Follow up with client"
              },
              "updated_at": {
                "type": "string",
                "example": "2026-01-01T00:00:00Z"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request body",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Insufficient scope",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Action item not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "updateActionItem",
        "readOnly": false,
        "destructive": false,
        "idempotent": false,
        "description": "Update action item. Use this when the user wants to change a follow-up action's status or details."
      },
      "agent_notes": "Partial update (PATCH) of an action item — send only the fields you want to\nchange; omitted fields are left untouched. `status` drives a state machine, so\nset it explicitly to move an item forward rather than inferring from\n`is_completed`. This endpoint does NOT honor `Idempotency-Key` (see the\n`missing_idempotency_key` flag): a blind retry after a network error can apply\nthe same change twice, so re-read with v1GetMeeting/list before retrying if you\nare unsure the first call landed. Returns 404 for an unknown id or one outside\nthe caller's workspace.\n\n\u003c!-- PATCH /v1/action-items/{id} --\u003e\n\u003c!-- Update action item --\u003e",
      "flags": [
        "missing_idempotency_key"
      ]
    },
    "v1UpdateAgendaItem": {
      "id": "v1UpdateAgendaItem",
      "method": "PATCH",
      "path": "/v1/agenda-items/{id}",
      "summary": "Update an agenda item",
      "description": "Updates fields on an agenda item in the authenticated user's workspace. Only provided fields are changed.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Agenda item ID",
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "description": "Agenda item update parameters",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "description": {
              "type": "string",
              "example": "Review the roadmap"
            },
            "item_type": {
              "type": "string",
              "example": "DISCUSSION"
            },
            "presenters": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "restricted_to_leads": {
              "type": "boolean",
              "example": false
            },
            "sequence": {
              "type": "string",
              "example": "a0"
            },
            "status": {
              "type": "string",
              "example": "ACTIVE"
            },
            "time_allocation_minutes": {
              "type": "number",
              "example": 15
            },
            "title": {
              "type": "string",
              "example": "Q3 roadmap review"
            }
          }
        }
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "created_at": {
                "type": "string",
                "example": "2026-01-01T00:00:00Z"
              },
              "deferred": {
                "type": "boolean",
                "example": false
              },
              "id": {
                "type": "string",
                "example": "019abc12-def3-7000-8000-000000000001"
              },
              "item_type": {
                "type": "string",
                "example": "DISCUSSION"
              },
              "meeting_id": {
                "type": "string",
                "example": "019abc12-def3-7000-8000-000000000002"
              },
              "status": {
                "type": "string",
                "example": "PENDING"
              },
              "time_allocation_minutes": {
                "type": "number",
                "example": 15
              },
              "title": {
                "type": "string",
                "example": "Q3 roadmap review"
              },
              "updated_at": {
                "type": "string",
                "example": "2026-01-01T00:00:00Z"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Insufficient scope",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Agenda item not found or not accessible",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "updateAgendaItem",
        "readOnly": false,
        "destructive": false,
        "idempotent": false,
        "description": "Update agenda item. Use this when the user wants to modify an agenda item in a meeting."
      },
      "agent_notes": "Partial update (PATCH) of an agenda item in the caller's workspace — send only\nthe fields you want to change; omitted fields are left untouched. Requires the\n`meetings:write` scope and the `{id}` from v1ListAgendaItems. Returns 404 for\nan unknown id or one\noutside the caller's workspace. This endpoint does NOT honor `Idempotency-Key`\n(see the `missing_idempotency_key` flag): if you are unsure a call landed after\na network error, re-read with v1ListAgendaItems before retrying rather than\nreapplying blindly.\n\n\u003c!-- PATCH /v1/agenda-items/{id} --\u003e\n\u003c!-- Update an agenda item --\u003e",
      "flags": [
        "missing_idempotency_key"
      ]
    },
    "v1UpdateMeeting": {
      "id": "v1UpdateMeeting",
      "method": "PATCH",
      "path": "/v1/meetings/{id}",
      "summary": "Update a meeting",
      "description": "Partially updates a meeting within the authenticated user's workspace. Only the fields present in the request body are modified; sending start_time or end_time as null clears them (untimed / open-ended).",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting ID",
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "description": "Meeting update parameters",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "detail_level": {
              "type": "string",
              "enum": [
                "BULLET_POINTS",
                "STANDARD",
                "VERBATIM"
              ],
              "example": "STANDARD"
            },
            "end_time": {
              "type": "string",
              "example": "2023-01-01T11:00:00Z"
            },
            "start_time": {
              "type": "string",
              "example": "2023-01-01T10:00:00Z"
            },
            "template_id": {
              "type": "string",
              "example": "123e4567-e89b-12d3-a456-426614174004"
            },
            "title": {
              "type": "string",
              "example": "Renamed Team Sync"
            }
          }
        }
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "calendar_event_id": {
                "type": "string",
                "description": "ID of the linked calendar event, if any",
                "example": "123e4567-e89b-12d3-a456-426614174006"
              },
              "created_at": {
                "type": "string",
                "description": "Timestamp when the meeting was created",
                "example": "2023-01-01T00:00:00Z"
              },
              "created_by_user_id": {
                "type": "string",
                "description": "ID of the user who created the meeting",
                "example": "123e4567-e89b-12d3-a456-426614174003"
              },
              "end_time": {
                "type": "string",
                "description": "Scheduled end time in RFC3339 format",
                "example": "2023-01-01T11:00:00-07:00"
              },
              "id": {
                "type": "string",
                "description": "Unique identifier for the meeting",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "owned_by_user_id": {
                "type": "string",
                "description": "ID of the user who owns the meeting",
                "example": "123e4567-e89b-12d3-a456-426614174003"
              },
              "redirect_to_meeting_id": {
                "type": "string",
                "description": "ID of the meeting to redirect to if this meeting was merged",
                "example": "123e4567-e89b-12d3-a456-426614174007"
              },
              "start_time": {
                "type": "string",
                "description": "Scheduled start time in RFC3339 format",
                "example": "2023-01-01T10:00:00-07:00"
              },
              "status": {
                "type": "string",
                "description": "Current status of the meeting",
                "enum": [
                  "draft",
                  "scheduled",
                  "in_progress",
                  "ended",
                  "completed"
                ],
                "example": "completed"
              },
              "summary_notes": {
                "type": "string",
                "description": "AI-generated summary notes from the meeting. Only populated on the single-meeting GET; PRO+ callers receive the full summary while FREE-tier callers receive a truncated preview (first 200 characters) followed by an upgrade note. Omitted in list/search/upcoming views.",
                "example": "Post-Meeting Summarization ..."
              },
              "title": {
                "type": "string",
                "description": "Title of the meeting",
                "example": "Weekly Team Sync"
              },
              "updated_at": {
                "type": "string",
                "description": "Timestamp when the meeting was last updated",
                "example": "2023-01-01T00:00:00Z"
              },
              "workspace_id": {
                "type": "string",
                "description": "ID of the workspace this meeting belongs to",
                "example": "123e4567-e89b-12d3-a456-426614174002"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "402": {
          "description": "Plan upgrade required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Insufficient scope",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Meeting or template not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "updateMeeting",
        "readOnly": false,
        "destructive": false,
        "idempotent": true,
        "description": "Update a meeting. Use this when the user wants to modify an existing meeting's fields."
      },
      "agent_notes": "Partial update (PATCH) of a meeting the caller's workspace owns, keyed by the\n`{id}` from v1CreateMeeting — send only the fields you want to change; omitted\nfields are left untouched. Use this to rename (`title`) or reschedule\n(`start_time`/`end_time`, ISO-8601 with timezone) instead of delete-and-recreate.\nSetting `start_time` to null makes the meeting untimed; setting `end_time` to\nnull makes it open-ended. `end_time` must be after the effective start time, and\nyou cannot set `end_time` on a meeting that has no start time — including when the\nsame request clears `start_time` (null), which is rejected with 400. The body\nmust contain at least one updatable field; an empty object is rejected with 400.\nIt is idempotent-per-field: replaying the same body converges to the same state,\nso a retry after a network error is safe. The 200 body returns the full updated\nmeeting but omits `summary_notes`; fetch it separately with v1GetMeeting (where\nit is populated for PRO+ callers). Returns 404 for an unknown id or one\noutside the caller's workspace, 403 when the caller lacks edit access to the\nmeeting, and 402 when a referenced `template_id` requires a plan upgrade.\n\n\u003c!-- PATCH /v1/meetings/{id} --\u003e\n\u003c!-- Update a meeting --\u003e",
      "flags": [
        "missing_idempotency_key"
      ]
    },
    "v1UpdateMeetingParticipantRole": {
      "id": "v1UpdateMeetingParticipantRole",
      "method": "PATCH",
      "path": "/v1/meetings/{id}/participants/{userId}/role",
      "summary": "Update meeting participant role by user ID",
      "description": "Updates the role (EDITOR or VIEWER) of the participant identified by user ID in a meeting owned by the authenticated user's workspace.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting ID",
            "type": "string"
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "description": "User ID",
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "description": "Role update",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "role": {
              "type": "string",
              "enum": [
                "EDITOR",
                "VIEWER"
              ],
              "example": "EDITOR"
            }
          },
          "required": [
            "role"
          ]
        }
      },
      "responses": {
        "200": {
          "description": "OK",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "created_at": {
                "type": "string",
                "example": "2023-01-01T00:00:00Z"
              },
              "email": {
                "type": "string",
                "example": "john.doe@example.com"
              },
              "id": {
                "type": "string",
                "example": "123e4567-e89b-12d3-a456-426614174004"
              },
              "is_attended": {
                "type": "boolean",
                "example": true
              },
              "meeting_id": {
                "type": "string",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "name": {
                "type": "string",
                "example": "John Doe"
              },
              "role": {
                "type": "string",
                "example": "EDITOR"
              },
              "updated_at": {
                "type": "string",
                "example": "2023-01-01T00:00:00Z"
              },
              "user_id": {
                "type": "string",
                "example": "123e4567-e89b-12d3-a456-426614174003"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Insufficient scope or permissions",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Meeting or participant not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "updateMeetingParticipantRole",
        "readOnly": false,
        "destructive": false,
        "idempotent": true,
        "description": "Update meeting participant role. Use this when the user wants to change a participant's role in a meeting."
      },
      "agent_notes": "Changes an existing participant's role to EDITOR or VIEWER on a meeting the\ncaller's workspace owns. Both the `{id}` (meeting id from v1CreateMeeting) and\n`{userId}` (the target participant's user id) path parameters are required, and\nthe participant must already be on the meeting — this endpoint only updates the\nrole, it does not add participants (use v1AddMeetingParticipants for that). The\nbody `role` is required and must be exactly `EDITOR` or `VIEWER`. The operation\nis idempotent in the sense that the final role is fully determined by the last\nsuccessful call, so retries converge on the requested role; note it always\nperforms the write (it does not short-circuit when the role is unchanged), so a\nredundant call still touches the participant record and may re-sync the doc.\n\n\u003c!-- PATCH /v1/meetings/{id}/participants/{userId}/role --\u003e\n\u003c!-- Update meeting participant role by user ID --\u003e",
      "flags": [
        "missing_idempotency_key"
      ]
    },
    "v1UpdateWorkspace": {
      "id": "v1UpdateWorkspace",
      "method": "PATCH",
      "path": "/v1/workspace",
      "summary": "Update workspace settings",
      "description": "Updates workspace settings (name, company size, primary industry, external participant removal). Only provided fields are changed.",
      "auth": {
        "surface": "admin",
        "scopes": [
          "workspace:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "description": "Workspace update parameters",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "company_size": {
              "type": "string",
              "example": "11-50"
            },
            "name": {
              "type": "string",
              "example": "Acme Corp"
            },
            "primary_industry_id": {
              "type": "string",
              "example": "industry-1"
            },
            "remove_external_participants_from_meetings": {
              "type": "boolean",
              "example": true
            }
          }
        }
      },
      "responses": {
        "200": {
          "description": "Updated workspace settings",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Workspace settings returned by the /v1 API",
            "properties": {
              "created_at": {
                "type": "string",
                "example": "2024-01-01T00:00:00Z"
              },
              "id": {
                "type": "string",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "name": {
                "type": "string",
                "example": "Acme Corp"
              },
              "owner_id": {
                "type": "string",
                "example": "123e4567-e89b-12d3-a456-426614174001"
              },
              "plan_type": {
                "type": "string",
                "example": "PRO"
              },
              "updated_at": {
                "type": "string",
                "example": "2024-06-15T12:30:00Z"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "error": {
                "type": "string"
              }
            }
          }
        },
        "401": {
          "description": "Unauthorized",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "error": {
                "type": "string"
              }
            }
          }
        },
        "403": {
          "description": "Forbidden",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "error": {
                "type": "string"
              }
            }
          }
        },
        "404": {
          "description": "Workspace not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "error": {
                "type": "string"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "error": {
                "type": "string"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "updateWorkspace",
        "readOnly": false,
        "destructive": false,
        "idempotent": false,
        "description": "Update workspace settings. Use this when the user wants to change workspace name, company size, or industry."
      },
      "agent_notes": "Partial update (PATCH) of workspace settings — send only the fields you want to\nchange (`name`, `company_size`, `primary_industry_id`,\n`remove_external_participants_from_meetings`); omitted fields are left\nuntouched. Requires the `workspace:write` scope AND an admin or owner role; a\nlesser role gets 403. Note `remove_external_participants_from_meetings` is a\npolicy toggle that affects future meetings, so flipping it has workspace-wide\nside effects — set it deliberately. Returns the updated workspace on 200. This\nendpoint does NOT honor `Idempotency-Key` (see the `missing_idempotency_key`\nflag); re-read with v1GetWorkspace before retrying if a call's outcome is\nuncertain.\n\n\u003c!-- PATCH /v1/workspace --\u003e\n\u003c!-- Update workspace settings --\u003e",
      "flags": [
        "missing_idempotency_key"
      ]
    },
    "v1UpdateWorkspaceMemberRole": {
      "id": "v1UpdateWorkspaceMemberRole",
      "method": "PATCH",
      "path": "/v1/workspace/members/{userID}",
      "summary": "Update member role",
      "description": "Changes the workspace role of the specified member. The requesting user must be an admin or owner. Cannot change the owner's role.",
      "auth": {
        "surface": "admin",
        "scopes": [
          "workspace:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "userID",
            "in": "path",
            "required": true,
            "description": "User ID of the member",
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "description": "Role update parameters",
            "has_schema": true
          }
        ],
        "body_schema": {
          "type": "object",
          "properties": {
            "role": {
              "type": "string",
              "example": "WORKSPACE_ADMIN"
            }
          },
          "required": [
            "role"
          ]
        }
      },
      "responses": {
        "204": {
          "description": "Role updated successfully",
          "has_schema": false
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "error": {
                "type": "string"
              }
            }
          }
        },
        "401": {
          "description": "Unauthorized",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "error": {
                "type": "string"
              }
            }
          }
        },
        "403": {
          "description": "Forbidden",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "error": {
                "type": "string"
              }
            }
          }
        },
        "404": {
          "description": "Member not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "error": {
                "type": "string"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "error": {
                "type": "string"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "updateWorkspaceMemberRole",
        "readOnly": false,
        "destructive": false,
        "idempotent": false,
        "description": "Update workspace member role. Use this when the user wants to change a member's workspace role."
      },
      "agent_notes": "Changes a member's workspace role, keyed by the `{userID}` from\nv1ListWorkspaceMembers; requires the `workspace:write` scope AND an admin or\nowner role. The body's `role` field is required. You cannot change the owner's\nrole (returns 403/400), so ownership is not transferable through this endpoint.\nReturns 204 No Content on success — there is no body to parse, so re-read with\nv1ListWorkspaceMembers if you need to confirm the new role. An unknown user id\nreturns 404. This endpoint does NOT honor `Idempotency-Key` (see the\n`missing_idempotency_key` flag), though re-issuing the same target role is\nfunctionally harmless.\n\n\u003c!-- PATCH /v1/workspace/members/{userID} --\u003e\n\u003c!-- Update member role --\u003e",
      "flags": [
        "missing_idempotency_key"
      ]
    },
    "v1UploadMeetingContext": {
      "id": "v1UploadMeetingContext",
      "method": "POST",
      "path": "/v1/meetings/{id}/context",
      "summary": "Upload meeting context",
      "description": "Uploads a new meeting context document to a meeting. Accepts multipart form data with a file and metadata fields. Body size capped at 4.5MB; returns 413 if exceeded.",
      "auth": {
        "surface": "user-oauth",
        "scopes": [
          "meetings:write"
        ],
        "headers": [
          "Authorization"
        ]
      },
      "idempotency": {
        "supported": false
      },
      "request": {
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Meeting ID",
            "type": "string"
          },
          {
            "name": "file",
            "in": "formData",
            "required": true,
            "description": "Context document file",
            "type": "file"
          },
          {
            "name": "title",
            "in": "formData",
            "required": false,
            "description": "Document title",
            "type": "string"
          },
          {
            "name": "context_type",
            "in": "formData",
            "required": false,
            "description": "MIME type of the document",
            "type": "string"
          },
          {
            "name": "source_format",
            "in": "formData",
            "required": true,
            "description": "Source format (json, csv, tsv, xml, html, yaml, markdown, plain_text)",
            "type": "string"
          }
        ]
      },
      "responses": {
        "201": {
          "description": "Created",
          "has_schema": true,
          "schema": {
            "type": "object",
            "properties": {
              "context_type": {
                "type": "string"
              },
              "created_at": {
                "type": "string"
              },
              "created_by_user_id": {
                "type": "string"
              },
              "file_status": {
                "type": "string"
              },
              "id": {
                "type": "string"
              },
              "meeting_id": {
                "type": "string"
              },
              "model_id": {
                "type": "string"
              },
              "platform_name": {
                "type": "string"
              },
              "source_format": {
                "type": "string"
              },
              "title": {
                "type": "string"
              },
              "updated_at": {
                "type": "string"
              },
              "workspace_id": {
                "type": "string"
              }
            }
          }
        },
        "400": {
          "description": "Invalid request",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "401": {
          "description": "Authentication required",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "403": {
          "description": "Insufficient scope",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "404": {
          "description": "Meeting not found",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "413": {
          "description": "Request entity too large",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        },
        "500": {
          "description": "Internal server error",
          "has_schema": true,
          "schema": {
            "type": "object",
            "description": "Standard error response format used across Contio's versioned public API endpoints. This shape is shared by the Partner API and the first-party /v1 User/Workspace API for consistency. DEPRECATION NOTICE (v2.0): The 'message' field will be removed in the next major release. Clients should migrate to using the 'error' field instead.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique identifier for the error type, useful for programmatic error handling",
                "example": "invalid_request"
              },
              "error": {
                "type": "string",
                "description": "User-friendly description of what went wrong",
                "example": "Invalid request"
              },
              "message": {
                "type": "string",
                "description": "Deprecated: Use 'error' field instead. Will be removed in v2.0",
                "example": "Invalid request"
              },
              "request_id": {
                "type": "string",
                "description": "Request identifier to correlate errors with logs",
                "example": "abc123xyz"
              }
            }
          }
        }
      },
      "mcp": {
        "tool_name": "uploadMeetingContext",
        "readOnly": false,
        "destructive": false,
        "idempotent": false,
        "description": "Upload meeting context. Use this when the user wants to attach a file or document to a meeting."
      },
      "agent_notes": "Uploads a context document to a meeting (`{id}`) as multipart form data;\nrequires the `meetings:write` scope. Required form fields are `file` and\n`source_format`; `title` and `context_type` are optional. `source_format`\nidentifies the file's format (e.g. `markdown`, `plain_text`, `json`) — an\nunsupported value returns 400. Content must be valid UTF-8 and the body is\ncapped at 4.5MB; exceeding the cap returns 413. There is also a per-meeting\ndocument cap, so very high-volume uploads can start failing with a 400 once the\nlimit is reached. The 201 body returns the created context including its `id`\nfor follow-up reads/downloads. This endpoint does NOT honor `Idempotency-Key`\n(see the `missing_idempotency_key` flag), so avoid blind retries that could\nupload the same document twice.\n\n\u003c!-- POST /v1/meetings/{id}/context --\u003e\n\u003c!-- Upload meeting context --\u003e",
      "flags": [
        "missing_idempotency_key"
      ]
    }
  }
}
