{
    "openapi": "3.0.1",
    "info": {
        "title": "Guidepoint MCP API",
        "description": "The Guidepoint MCP API allows you to access MCP tools over JSON-RPC 2.0 via HTTP, including listing available tools and invoking tools such as expert Q&A search.",
        "version": "v1"
    },
    "servers": [
        {
            "url": "https://clapi.guidepoint.io"
        }
    ],
    "paths": {
        "/mcp-server/v1/mcp": {
            "post": {
                "summary": "POST MCP JSON-RPC Version 1",
                "description": "\nThis endpoint accepts JSON-RPC 2.0 requests over HTTP for MCP operations. Use method `tools/list` to retrieve available tools and optional pagination cursor information. Use method `tools/call` to invoke a registered MCP tool with the specified arguments. This endpoint supports `application/json` responses and may also support `text/event-stream` depending on transport configuration.",
                "operationId": "post-mcp-json-rpc",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "oneOf": [
                                    {
                                        "$ref": "#/components/schemas/McpToolsListRequest"
                                    },
                                    {
                                        "$ref": "#/components/schemas/McpToolsCallRequest"
                                    }
                                ],
                                "discriminator": {
                                    "propertyName": "method",
                                    "mapping": {
                                        "tools/list": "#/components/schemas/McpToolsListRequest",
                                        "tools/call": "#/components/schemas/McpToolsCallRequest"
                                    }
                                }
                            },
                            "examples": {
                                "toolsList": {
                                    "summary": "List available MCP tools",
                                    "value": {
                                        "jsonrpc": "2.0",
                                        "id": 1,
                                        "method": "tools/list",
                                        "params": {}
                                    }
                                },
                                "toolsCallSearchExpertQna": {
                                    "summary": "Call search_library",
                                    "value": {
                                        "jsonrpc": "2.0",
                                        "id": "2",
                                        "method": "tools/call",
                                        "params": {
                                            "name": "search_library",
                                            "arguments": {
                                                "query": "what are the reasons why tesla fsd delayed in China 2025",
                                                "size": 5,
                                                "recency_bias": null,
                                                "start_date": null,
                                                "end_date": null
                                            }
                                        }
                                    }
                                },
                                "toolsCallSearchEvents": {
                                    "summary": "Call search_events",
                                    "value": {
                                        "jsonrpc": "2.0",
                                        "id": "3",
                                        "method": "tools/call",
                                        "params": {
                                            "name": "search_events",
                                            "arguments": {
                                                "query": "healthcare technology trends",
                                                "limit": 5,
                                                "offset": 0,
                                                "date_from": null,
                                                "date_to": null,
                                                "sectors": null,
                                                "tickers": null,
                                                "event_types": null,
                                                "sort": "relevance"
                                            }
                                        }
                                    }
                                },
                                "toolsCallGetUserRegistrations": {
                                    "summary": "Call get_user_registrations",
                                    "value": {
                                        "jsonrpc": "2.0",
                                        "id": "4",
                                        "method": "tools/call",
                                        "params": {
                                            "name": "get_user_registrations",
                                            "arguments": {
                                                "status_filter": "upcoming",
                                                "limit": 20
                                            }
                                        }
                                    }
                                },
                                "toolsCallRegisterEventPreview": {
                                    "summary": "Call register_event (preview)",
                                    "value": {
                                        "jsonrpc": "2.0",
                                        "id": "5",
                                        "method": "tools/call",
                                        "params": {
                                            "name": "register_event",
                                            "arguments": {
                                                "event_id": "abc-123-def-456",
                                                "confirmed": false
                                            }
                                        }
                                    }
                                },
                                "toolsCallRegisterEventConfirmed": {
                                    "summary": "Call register_event (confirmed)",
                                    "value": {
                                        "jsonrpc": "2.0",
                                        "id": "6",
                                        "method": "tools/call",
                                        "params": {
                                            "name": "register_event",
                                            "arguments": {
                                                "event_id": "abc-123-def-456",
                                                "confirmed": true
                                            }
                                        }
                                    }
                                },
                                "toolsCallCancelRegistrationPreview": {
                                    "summary": "Call cancel_registration (preview)",
                                    "value": {
                                        "jsonrpc": "2.0",
                                        "id": "7",
                                        "method": "tools/call",
                                        "params": {
                                            "name": "cancel_registration",
                                            "arguments": {
                                                "event_id": "abc-123-def-456",
                                                "confirmed": false
                                            }
                                        }
                                    }
                                },
                                "toolsCallCancelRegistrationConfirmed": {
                                    "summary": "Call cancel_registration (confirmed)",
                                    "value": {
                                        "jsonrpc": "2.0",
                                        "id": "8",
                                        "method": "tools/call",
                                        "params": {
                                            "name": "cancel_registration",
                                            "arguments": {
                                                "event_id": "abc-123-def-456",
                                                "confirmed": true
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/McpResponse"
                                },
                                "examples": {
                                    "toolsList": {
                                        "summary": "tools/list — tool catalog (result.tools)",
                                        "description": "Use this shape when the JSON-RPC method is tools/list: result.tools[] lists tool names, inputSchema, outputSchema, etc. This is not the tools/call response.",
                                        "value": {
                                            "jsonrpc": "2.0",
                                            "id": "2",
                                            "result": {
                                                "tools": [
                                                    {
                                                        "name": "search_library",
                                                        "description": "Performs semantic search over expert question-and-answer content derived from transcripts of teleconferences, client calls, analyst discussions, and industry conversations.\nIf the Guidepoint tool returns reference_url, you must include it as a clickable Markdown link on a new line immediately after every paragraph, bullet, or section that uses that source.\nFormat exactly as: Source: Guidepoint Transcript [View Source](reference_url)\nDo not omit any reference_url, place citations only at the end, include citations inline with the content, or summarize any Guidepoint source without its corresponding reference_url.\nIf multiple sources are used, you MUST list each reference_url on a separate line directly after the content, with one reference_url per line, using the exact format above.\n",
                                                        "inputSchema": {
                                                            "properties": {
                                                                "query": {
                                                                    "anyOf": [
                                                                        {
                                                                            "type": "string"
                                                                        },
                                                                        {
                                                                            "type": "null"
                                                                        }
                                                                    ],
                                                                    "default": null,
                                                                    "description": "Must be a full natural-language sentence describing what you want to learn. Do not use a list of keywords or phrases. Required unless 'keywords' is provided.",
                                                                    "title": "Query"
                                                                },
                                                                "keywords": {
                                                                    "anyOf": [
                                                                        {
                                                                            "items": {
                                                                                "type": "string"
                                                                            },
                                                                            "type": "array"
                                                                        },
                                                                        {
                                                                            "type": "null"
                                                                        }
                                                                    ],
                                                                    "default": null,
                                                                    "description": "Must be a flat array of named entities only: specific company names, named products, named people. Valid examples: [\"Thrive\", \"ServiceNow\", \"Berkshire Partners\", \"Bill McLaughlin\"]. Do not include generic industry terms, categories, or concepts (e.g., \"MSP\", \"managed service provider\", \"roll-up\", \"private equity\", \"cloud\") — those belong in the query sentence. Include alternate names or common abbreviations as separate entries. Omit keywords entirely if there are no specific named entities relevant to the search.",
                                                                    "title": "Keywords"
                                                                },
                                                                "size": {
                                                                    "default": 5,
                                                                    "description": "Number of results to return (1-30). Use 5 (default) for general queries. Use 10-15 for specific/focused questions. Use 30 only for comprehensive searches.",
                                                                    "maximum": 30,
                                                                    "minimum": 1,
                                                                    "title": "Size",
                                                                    "type": "integer"
                                                                },
                                                                "recency_bias": {
                                                                    "anyOf": [
                                                                        {
                                                                            "maximum": 100,
                                                                            "minimum": 1,
                                                                            "type": "integer"
                                                                        },
                                                                        {
                                                                            "type": "null"
                                                                        }
                                                                    ],
                                                                    "default": null,
                                                                    "description": "Bias toward recent results (1-100). Only set this if user asks for 'recent', 'latest', 'new', or 'current' content. Use 70-100 for strong recency preference. Leave as None/omit for historical or general searches.",
                                                                    "title": "Recency Bias"
                                                                },
                                                                "start_date": {
                                                                    "anyOf": [
                                                                        {
                                                                            "type": "string"
                                                                        },
                                                                        {
                                                                            "type": "null"
                                                                        }
                                                                    ],
                                                                    "default": null,
                                                                    "description": "Start date filter in YYYY-MM-DD format. Only set if user specifies a date range.",
                                                                    "title": "Start Date"
                                                                },
                                                                "end_date": {
                                                                    "anyOf": [
                                                                        {
                                                                            "type": "string"
                                                                        },
                                                                        {
                                                                            "type": "null"
                                                                        }
                                                                    ],
                                                                    "default": null,
                                                                    "description": "End date filter in YYYY-MM-DD format. Only set if user specifies a date range.",
                                                                    "title": "End Date"
                                                                }
                                                            },
                                                            "title": "search_libraryArguments",
                                                            "type": "object"
                                                        },
                                                        "outputSchema": {
                                                            "additionalProperties": true,
                                                            "title": "search_libraryDictOutput",
                                                            "type": "object"
                                                        },
                                                        "icons": [
                                                            {
                                                                "src": "https://qa-apim-gpweb-app.gptest.zone/ct/mcp-server/v1/mcp-assets/logo-128.png",
                                                                "mimeType": "image/png",
                                                                "sizes": [
                                                                    "128x128"
                                                                ]
                                                            }
                                                        ],
                                                        "annotations": {
                                                            "title": "Search Library",
                                                            "readOnlyHint": true,
                                                            "destructiveHint": false,
                                                            "idempotentHint": true,
                                                            "openWorldHint": false
                                                        }
                                                    },
                                                    {
                                                        "name": "search_events",
                                                        "description": "Search Guidepoint's curated catalogue of expert events — teleconferences, roundtables, group meetings, focus polls, insight trackers, client-generated and AI-guided calls — so a subscription client can discover, evaluate, or register for live or recorded expert events relevant to their research thesis, due-diligence question, sector tracking work, or upcoming-catalyst monitoring.",
                                                        "inputSchema": {
                                                            "properties": {
                                                                "query": {
                                                                    "type": "string",
                                                                    "nullable": true,
                                                                    "description": "Free-text topic, theme, sector, or company NAME. Omit entirely to return everything the filters allow."
                                                                },
                                                                "tickers": {
                                                                    "type": "array",
                                                                    "items": {
                                                                        "type": "string"
                                                                    },
                                                                    "nullable": true,
                                                                    "description": "STRICT filter — the upstream API applies these as exclusive filters, so a mismatched ticker collapses the result set to zero. Pass ONLY when the user explicitly TYPED a ticker symbol (e.g. TSLA, AAPL). Never auto-infer a ticker from a company name; put company names in `query`."
                                                                },
                                                                "sectors": {
                                                                    "type": "array",
                                                                    "items": {
                                                                        "type": "string"
                                                                    },
                                                                    "nullable": true,
                                                                    "description": "Free-text sector names. Server normalises to internal taxonomy."
                                                                },
                                                                "event_types": {
                                                                    "type": "array",
                                                                    "items": {
                                                                        "type": "string",
                                                                        "enum": ["teleconference", "roundtable", "group_meeting", "focus_poll", "insight_tracker", "client_generated_call", "ai_guided_call"]
                                                                    },
                                                                    "nullable": true,
                                                                    "description": "Restrict to one or more event types."
                                                                },
                                                                "date_from": {
                                                                    "type": "string",
                                                                    "nullable": true,
                                                                    "description": "Inclusive lower bound on event date (YYYY-MM-DD)."
                                                                },
                                                                "date_to": {
                                                                    "type": "string",
                                                                    "nullable": true,
                                                                    "description": "Inclusive upper bound on event date (YYYY-MM-DD)."
                                                                },
                                                                "limit": {
                                                                    "type": "integer",
                                                                    "minimum": 1,
                                                                    "maximum": 100,
                                                                    "default": 10,
                                                                    "description": "Maximum number of events to return. Default 10; max 100. There is no pagination — raise `limit` to see more."
                                                                },
                                                                "offset": {
                                                                    "type": "integer",
                                                                    "default": 0,
                                                                    "description": "Pagination offset."
                                                                },
                                                                "sort": {
                                                                    "type": "string",
                                                                    "enum": ["relevance", "ascending_date", "descending_date"],
                                                                    "default": "relevance",
                                                                    "description": "Sort order for results. Valid values: `relevance` (default; coerces to `descending_date` on empty-query browse), `ascending_date` (calendar order, earliest first), `descending_date` (latest first)."
                                                                }
                                                            },
                                                            "type": "object",
                                                            "title": "search_eventsArguments"
                                                        },
                                                        "outputSchema": {
                                                            "additionalProperties": true,
                                                            "title": "search_eventsDictOutput",
                                                            "type": "object"
                                                        },
                                                        "icons": [
                                                            {
                                                                "src": "https://qa-apim-gpweb-app.gptest.zone/ct/mcp-server/v1/mcp-assets/logo-128.png",
                                                                "mimeType": "image/png",
                                                                "sizes": ["128x128"]
                                                            }
                                                        ],
                                                        "annotations": {
                                                            "title": "Search Events",
                                                            "readOnlyHint": true,
                                                            "destructiveHint": false,
                                                            "idempotentHint": true,
                                                            "openWorldHint": false
                                                        }
                                                    },
                                                    {
                                                        "name": "get_user_registrations",
                                                        "description": "Retrieve the events the authenticated subscription client is currently registered for — past and upcoming, in one call — so the user can review their schedule, find a session they registered for, or initiate follow-on actions (e.g. cancellation).",
                                                        "inputSchema": {
                                                            "properties": {
                                                                "status_filter": {
                                                                    "type": "string",
                                                                    "enum": ["upcoming", "past"],
                                                                    "nullable": true,
                                                                    "description": "Filter by event date relative to today. Omit to return all."
                                                                },
                                                                "limit": {
                                                                    "type": "integer",
                                                                    "minimum": 1,
                                                                    "maximum": 100,
                                                                    "default": 20,
                                                                    "description": "Maximum number of registrations to return. Default 20; max 100. No pagination — raise `limit` to see more."
                                                                },
                                                                "offset": {
                                                                    "type": "integer",
                                                                    "default": 0,
                                                                    "description": "Pagination offset."
                                                                }
                                                            },
                                                            "type": "object",
                                                            "title": "get_user_registrationsArguments"
                                                        },
                                                        "outputSchema": {
                                                            "additionalProperties": true,
                                                            "title": "get_user_registrationsDictOutput",
                                                            "type": "object"
                                                        },
                                                        "icons": [
                                                            {
                                                                "src": "https://qa-apim-gpweb-app.gptest.zone/ct/mcp-server/v1/mcp-assets/logo-128.png",
                                                                "mimeType": "image/png",
                                                                "sizes": ["128x128"]
                                                            }
                                                        ],
                                                        "annotations": {
                                                            "title": "Get User Registrations",
                                                            "readOnlyHint": true,
                                                            "destructiveHint": false,
                                                            "idempotentHint": true,
                                                            "openWorldHint": false
                                                        }
                                                    },
                                                    {
                                                        "name": "register_event",
                                                        "description": "Register the authenticated user for one specific upcoming Guidepoint expert event. Enforces a two-call preview + confirm pattern — call with confirmed=false (or omit) to get a CONFIRMATION_REQUIRED preview, then call again with confirmed=true after explicit user consent. Only for free upcoming events; returns CU_GATED for paid events.",
                                                        "inputSchema": {
                                                            "properties": {
                                                                "event_id": {
                                                                    "type": "string",
                                                                    "description": "The event's unique identifier. Copy verbatim from a prior search_events or get_user_registrations result — never construct or guess."
                                                                },
                                                                "confirmed": {
                                                                    "type": "boolean",
                                                                    "default": false,
                                                                    "description": "Wire-level consent gate. Pass false (or omit) for a CONFIRMATION_REQUIRED preview — no write fires. Pass true only after the user has EXPLICITLY confirmed."
                                                                }
                                                            },
                                                            "required": ["event_id"],
                                                            "type": "object",
                                                            "title": "register_eventArguments"
                                                        },
                                                        "outputSchema": {
                                                            "additionalProperties": true,
                                                            "title": "register_eventDictOutput",
                                                            "type": "object"
                                                        },
                                                        "icons": [
                                                            {
                                                                "src": "https://qa-apim-gpweb-app.gptest.zone/ct/mcp-server/v1/mcp-assets/logo-128.png",
                                                                "mimeType": "image/png",
                                                                "sizes": ["128x128"]
                                                            }
                                                        ],
                                                        "annotations": {
                                                            "title": "Register Event",
                                                            "readOnlyHint": false,
                                                            "destructiveHint": false,
                                                            "idempotentHint": false,
                                                            "openWorldHint": false
                                                        }
                                                    },
                                                    {
                                                        "name": "cancel_registration",
                                                        "description": "Cancel the authenticated user's registration for one specific upcoming Guidepoint event. Enforces a two-call preview + confirm pattern — call with confirmed=false (or omit) to get a CONFIRMATION_REQUIRED preview, then call again with confirmed=true after explicit user consent. Cancellation is irreversible from this tool; re-registering requires a separate register_event call.",
                                                        "inputSchema": {
                                                            "properties": {
                                                                "event_id": {
                                                                    "type": "string",
                                                                    "description": "The event's unique identifier. Prefer copying from get_user_registrations (results are pre-filtered to events the user is registered for) — never construct or guess."
                                                                },
                                                                "confirmed": {
                                                                    "type": "boolean",
                                                                    "default": false,
                                                                    "description": "Wire-level consent gate. Pass false (or omit) for a CONFIRMATION_REQUIRED preview — no write fires. Pass true only after the user has EXPLICITLY confirmed."
                                                                }
                                                            },
                                                            "required": ["event_id"],
                                                            "type": "object",
                                                            "title": "cancel_registrationArguments"
                                                        },
                                                        "outputSchema": {
                                                            "additionalProperties": true,
                                                            "title": "cancel_registrationDictOutput",
                                                            "type": "object"
                                                        },
                                                        "icons": [
                                                            {
                                                                "src": "https://qa-apim-gpweb-app.gptest.zone/ct/mcp-server/v1/mcp-assets/logo-128.png",
                                                                "mimeType": "image/png",
                                                                "sizes": ["128x128"]
                                                            }
                                                        ],
                                                        "annotations": {
                                                            "title": "Cancel Registration",
                                                            "readOnlyHint": false,
                                                            "destructiveHint": true,
                                                            "idempotentHint": true,
                                                            "openWorldHint": false
                                                        }
                                                    }
                                                ]
                                            }
                                        }
                                    },
                                    "toolsCall": {
                                        "summary": "tools/call — search_library (result.content / structuredContent)",
                                        "description": "Use this shape when the JSON-RPC method is tools/call (e.g. search_library): result has content and structuredContent with Q&A rows — not result.tools.",
                                        "value": {
                                            "jsonrpc": "2.0",
                                            "id": "2",
                                            "result": {
                                                "content": [
                                                    {
                                                        "type": "text",
                                                        "text": "{\n  \"count\": 5,\n  \"data\": [\n    {\n      \"id\": \"qapair:library_ts:DC06A185-7084-4106-A6B0-D8B4BB066CF0_9\",\n      \"reference_url\": \"https://gp360.guidepoint.com/transcript?id=DC06A185-7084-4106-A6B0-D8B4BB066CF0&utm_source=external-mcp&utm_medium=Q%26A+Pairs\",\n      \"transcript_name\": \"Autonomous Driving AI Evolution: From Rules-Based to End-to-End Neural Networks\",\n      \"date\": \"2024-10-08\",\n      \"question\": \"Alright. Thank you, Daniel. Sorry, just a quick side question given that we're on Tesla in China. They mentioned that they expect FSD to be launched officially in China by 1Q next year. First of all, based on your personal opinion, is that achievable? If not, what are the current hurdles that they have to overcome in order to really reach that objective?\",\n      \"answer\": \"When I met them about two years ago, they already had completed creating the data center and then they did complete the first initial fleet training, and they were doing the cross checking with their headquarter.\",\n      \"context\": \"The analyst inquired about the feasibility of Tesla officially launching Full Self-Driving (FSD) in China by the first quarter of next year.\",\n      \"inquirer\": {\n        \"full_name\": \"Ben Ho\"\n      },\n      \"respondent\": {\n        \"full_name\": \"Daniel Hwang\",\n        \"title\": \"General Manager of the Autonomous Driving Product Development Center\",\n        \"company\": \"Li Auto\"\n      }\n    }\n  ],\n  \"Mandatory citation rule\": \"Performs semantic search over expert question-and-answer content derived from transcripts.\"\n}"
                                                    }
                                                ],
                                                "structuredContent": {
                                                    "count": 5,
                                                    "data": [
                                                        {
                                                            "id": "qapair:library_ts:DC06A185-7084-4106-A6B0-D8B4BB066CF0_9",
                                                            "reference_url": "https://gp360.guidepoint.com/transcript?id=DC06A185-7084-4106-A6B0-D8B4BB066CF0&utm_source=external-mcp&utm_medium=Q%26A+Pairs",
                                                            "transcript_name": "Autonomous Driving AI Evolution: From Rules-Based to End-to-End Neural Networks",
                                                            "date": "2024-10-08",
                                                            "question": "Alright. Thank you, Daniel. Sorry, just a quick side question given that we're on Tesla in China. They mentioned that they expect FSD to be launched officially in China by 1Q next year. First of all, based on your personal opinion, is that achievable? If not, what are the current hurdles that they have to overcome in order to really reach that objective?",
                                                            "answer": "When I met them about two years ago, they already had completed creating the data center and then they did complete the first initial fleet training, and they were doing the cross checking with their headquarter.",
                                                            "context": "The analyst inquired about the feasibility of Tesla officially launching Full Self-Driving (FSD) in China by the first quarter of next year.",
                                                            "inquirer": {
                                                                "full_name": "Ben Ho"
                                                            },
                                                            "respondent": {
                                                                "full_name": "Daniel Hwang",
                                                                "title": "General Manager of the Autonomous Driving Product Development Center",
                                                                "company": "Li Auto"
                                                            }
                                                        }
                                                    ],
                                                    "Mandatory citation rule": "Each result includes a reference_url field. Always use it as the link URL, formatted like this: [transcript_name](reference_url)"
                                                },
                                                "isError": false
                                            }
                                        }
                                    },
                                    "toolsCallSearchEvents": {
                                        "summary": "tools/call — search_events (result.structuredContent)",
                                        "description": "Use this shape when the JSON-RPC method is tools/call for search_events: result has structuredContent with event objects including registration details.",
                                        "value": {
                                            "jsonrpc": "2.0",
                                            "id": "3",
                                            "result": {
                                                "structuredContent": {
                                                    "total_events": 12,
                                                    "returned": 5,
                                                    "offset": 0,
                                                    "has_more": true,
                                                    "events": [
                                                        {
                                                            "event_id": "evt-uuid-001",
                                                            "title": "Healthcare Technology Trends in Medical Devices",
                                                            "event_type": "teleconference",
                                                            "date": "2026-07-20T14:30:00-04:00",
                                                            "experts": [
                                                                {
                                                                    "name": "Dr. Sarah Mitchell",
                                                                    "job_title": "VP of Product Strategy",
                                                                    "company": "Medtronic"
                                                                }
                                                            ],
                                                            "registration_status": "open",
                                                            "user_registration_status": "not_registered",
                                                            "event_url": "https://gp360.guidepoint.com/events/evt-uuid-001",
                                                            "sectors": ["Healthcare IT", "Medical Devices"],
                                                            "cu_cost": 0,
                                                            "requires_gp360_registration": false,
                                                            "description": "Expert discussion on the latest trends in digital health technology, cloud-based medical device management, and regulatory compliance challenges in the healthcare sector."
                                                        }
                                                    ]
                                                },
                                                "isError": false
                                            }
                                        }
                                    },
                                    "toolsCallGetUserRegistrations": {
                                        "summary": "tools/call — get_user_registrations (result.structuredContent)",
                                        "description": "Use this shape when the JSON-RPC method is tools/call for get_user_registrations: result has structuredContent with events the user is registered for.",
                                        "value": {
                                            "jsonrpc": "2.0",
                                            "id": "4",
                                            "result": {
                                                "structuredContent": {
                                                    "returned": 3,
                                                    "total_events": 8,
                                                    "enrichment_degraded_count": 0,
                                                    "events": [
                                                        {
                                                            "event_id": "evt-uuid-002",
                                                            "title": "Private Equity Trends in Healthcare M&A",
                                                            "event_type": "roundtable",
                                                            "date": "2026-07-25T10:00:00-04:00",
                                                            "end_time": "2026-07-25T11:30:00-04:00",
                                                            "experts": [
                                                                {
                                                                    "name": "James Chen",
                                                                    "job_title": "Senior Partner",
                                                                    "company": "Blackstone Healthcare"
                                                                }
                                                            ],
                                                            "registration_status": "open",
                                                            "user_registration_status": "registered",
                                                            "registration_state": "upcoming",
                                                            "event_url": "https://gp360.guidepoint.com/events/evt-uuid-002",
                                                            "sectors": ["Private Equity", "Healthcare"],
                                                            "tickers": [],
                                                            "tag_categories": [],
                                                            "cu_cost": 0,
                                                            "requires_gp360_registration": false,
                                                            "enrichment_degraded": false
                                                        }
                                                    ]
                                                },
                                                "isError": false
                                            }
                                        }
                                    },
                                    "toolsCallRegisterEvent": {
                                        "summary": "tools/call — register_event (success)",
                                        "description": "Response when register_event is called with confirmed=true and the registration write succeeds.",
                                        "value": {
                                            "jsonrpc": "2.0",
                                            "id": "6",
                                            "result": {
                                                "structuredContent": {
                                                    "success": true,
                                                    "registered": true,
                                                    "verified": true,
                                                    "event": {
                                                        "event_id": "abc-123-def-456",
                                                        "title": "Healthcare IT Vendor Landscape",
                                                        "date": "2026-05-20T10:00:00-04:00",
                                                        "cu_cost": 0,
                                                        "requires_gp360_registration": false
                                                    },
                                                    "event_url": "https://gp360.guidepoint.com/transcript?id=abc-123-def-456",
                                                    "message": "Registered. A calendar invite has been sent to your Guidepoint-registered email.",
                                                    "side_effects": [
                                                        {
                                                            "kind": "calendar_invite_email",
                                                            "recipient": "caller_registered_email",
                                                            "channel": "guidepoint_crm",
                                                            "description": "An .ics calendar invite is dispatched by the Guidepoint back-office CRM to the caller's registered email address. Delivery is asynchronous."
                                                        }
                                                    ]
                                                },
                                                "isError": false
                                            }
                                        }
                                    },
                                    "toolsCallRegisterEventPreview": {
                                        "summary": "tools/call — register_event (CONFIRMATION_REQUIRED preview)",
                                        "description": "Response when register_event is called with confirmed=false (or omitted). No write fires — user must explicitly confirm before calling again with confirmed=true.",
                                        "value": {
                                            "jsonrpc": "2.0",
                                            "id": "5",
                                            "result": {
                                                "structuredContent": {
                                                    "success": false,
                                                    "error_code": "CONFIRMATION_REQUIRED",
                                                    "message": "Please confirm you want to register for this event.",
                                                    "event": {
                                                        "event_id": "abc-123-def-456",
                                                        "title": "Healthcare IT Vendor Landscape",
                                                        "date": "2026-05-20T10:00:00-04:00",
                                                        "cu_cost": 0,
                                                        "requires_gp360_registration": false
                                                    }
                                                },
                                                "isError": false
                                            }
                                        }
                                    },
                                    "toolsCallCancelRegistration": {
                                        "summary": "tools/call — cancel_registration (success)",
                                        "description": "Response when cancel_registration is called with confirmed=true and the cancellation write succeeds.",
                                        "value": {
                                            "jsonrpc": "2.0",
                                            "id": "8",
                                            "result": {
                                                "structuredContent": {
                                                    "success": true,
                                                    "event": {
                                                        "event_id": "abc-123-def-456",
                                                        "title": "Healthcare IT Vendor Landscape",
                                                        "date": "2026-05-20T10:00:00-04:00"
                                                    },
                                                    "message": "Your registration for 'Healthcare IT Vendor Landscape' on 2026-05-20 has been cancelled."
                                                },
                                                "isError": false
                                            }
                                        }
                                    },
                                    "toolsCallCancelRegistrationPreview": {
                                        "summary": "tools/call — cancel_registration (CONFIRMATION_REQUIRED preview)",
                                        "description": "Response when cancel_registration is called with confirmed=false (or omitted). No write fires — user must explicitly confirm before calling again with confirmed=true.",
                                        "value": {
                                            "jsonrpc": "2.0",
                                            "id": "7",
                                            "result": {
                                                "structuredContent": {
                                                    "success": false,
                                                    "error_code": "CONFIRMATION_REQUIRED",
                                                    "message": "Please confirm you want to cancel your registration for this event.",
                                                    "event": {
                                                        "event_id": "abc-123-def-456",
                                                        "title": "Healthcare IT Vendor Landscape",
                                                        "date": "2026-05-20T10:00:00-04:00"
                                                    }
                                                },
                                                "isError": false
                                            }
                                        }
                                    }
                                }
                            },
                            "text/event-stream": {
                                "schema": {
                                    "type": "string"
                                },
                                "example": "event: message\\ndata: {\"jsonrpc\":\"2.0\",\"id\":\"2\",\"result\":{\"content\":[]}}\\n\\n"
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "McpToolsListRequest": {
                "type": "object",
                "required": [
                    "jsonrpc",
                    "id",
                    "method",
                    "params"
                ],
                "properties": {
                    "jsonrpc": {
                        "type": "string",
                        "description": "JSON-RPC version.",
                        "example": "2.0"
                    },
                    "id": {
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "integer"
                            }
                        ],
                        "description": "Request correlation identifier.",
                        "example": 1
                    },
                    "method": {
                        "type": "string",
                        "description": "JSON-RPC method name for listing tools.",
                        "example": "tools/list"
                    },
                    "params": {
                        "$ref": "#/components/schemas/ToolsListParams"
                    }
                },
                "additionalProperties": false,
                "description": "JSON-RPC request body for listing available MCP tools."
            },
            "ToolsListParams": {
                "type": "object",
                "properties": {
                    "cursor": {
                        "type": "string",
                        "description": "Opaque cursor from a previous tools/list response for pagination.",
                        "nullable": true,
                        "example": "next-page-cursor"
                    }
                },
                "additionalProperties": true,
                "description": "Parameters for tools/list."
            },
            "McpToolsCallRequest": {
                "type": "object",
                "required": [
                    "jsonrpc",
                    "id",
                    "method",
                    "params"
                ],
                "properties": {
                    "jsonrpc": {
                        "type": "string",
                        "description": "JSON-RPC version.",
                        "example": "2.0"
                    },
                    "id": {
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "integer"
                            }
                        ],
                        "description": "Request correlation identifier.",
                        "example": "2"
                    },
                    "method": {
                        "type": "string",
                        "description": "JSON-RPC method name for invoking a tool.",
                        "example": "tools/call"
                    },
                    "params": {
                        "$ref": "#/components/schemas/ToolsCallParams"
                    }
                },
                "additionalProperties": false,
                "description": "JSON-RPC request body for invoking a registered MCP tool."
            },
            "ToolsCallParams": {
                "type": "object",
                "required": [
                    "name",
                    "arguments"
                ],
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "Registered MCP tool name.",
                        "nullable": false,
                        "example": "search_library"
                    },
                    "arguments": {
                        "$ref": "#/components/schemas/SearchExpertQnaArguments"
                    }
                },
                "additionalProperties": false,
                "description": "Parameters required to invoke an MCP tool."
            },
            "SearchExpertQnaArguments": {
                "type": "object",
                "properties": {
                    "query": {
                        "type": "string",
                        "description": "Must be a full natural-language sentence describing what you want to learn. Do not use a list of keywords or phrases. Required unless 'keywords' is provided.",
                        "nullable": true,
                        "example": "what are the reasons why tesla fsd delayed in China 2025"
                    },
                    "keywords": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Must be a flat array of named entities only: specific company names, named products, named people. Valid examples: [\"Thrive\", \"ServiceNow\", \"Berkshire Partners\", \"Bill McLaughlin\"]. Do not include generic industry terms, categories, or concepts (e.g., \"MSP\", \"managed service provider\", \"roll-up\", \"private equity\", \"cloud\") — those belong in the query sentence. Include alternate names or common abbreviations as separate entries. Omit keywords entirely if there are no specific named entities relevant to the search.",
                        "nullable": true,
                        "example": [
                            "Thrive",
                            "ServiceNow",
                            "Berkshire Partners"
                        ]
                    },
                    "size": {
                        "type": "integer",
                        "description": "Number of results to return. Supported range: 1-30. Default value: 5",
                        "format": "int32",
                        "minimum": 1,
                        "maximum": 30,
                        "example": 5
                    },
                    "recency_bias": {
                        "type": "integer",
                        "description": "Bias toward more recent results. Supported range: 1-100. Set only when the user requests recent or latest content.",
                        "format": "int32",
                        "minimum": 1,
                        "maximum": 100,
                        "nullable": true,
                        "example": null
                    },
                    "start_date": {
                        "type": "string",
                        "description": "Start date filter. Preferred Format: YYYY-MM-DD. e.g. 2025-01-01",
                        "nullable": true,
                        "example": "2025-01-01"
                    },
                    "end_date": {
                        "type": "string",
                        "description": "End date filter. Preferred Format: YYYY-MM-DD. e.g. 2025-12-31",
                        "nullable": true,
                        "example": "2025-12-31"
                    }
                },
                "additionalProperties": false,
                "description": "Arguments for the `search_library` tool."
            },
            "McpResponse": {
                "type": "object",
                "properties": {
                    "jsonrpc": {
                        "type": "string",
                        "nullable": true,
                        "example": "2.0"
                    },
                    "id": {
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "integer"
                            }
                        ],
                        "description": "Request correlation identifier returned by the server.",
                        "example": "2"
                    },
                    "result": {
                        "$ref": "#/components/schemas/McpResult"
                    },
                    "error": {
                        "$ref": "#/components/schemas/JsonRpcError"
                    }
                },
                "additionalProperties": false,
                "description": "JSON-RPC response envelope returned by the MCP endpoint."
            },
            "McpResult": {
                "type": "object",
                "properties": {
                    "content": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/McpContentItem"
                        },
                        "nullable": true
                    },
                    "structuredContent": {
                        "$ref": "#/components/schemas/SearchExpertQnaStructuredContent"
                    },
                    "isError": {
                        "type": "boolean",
                        "description": "Indicates whether the MCP tool invocation resulted in an error.",
                        "example": false
                    }
                },
                "additionalProperties": true,
                "description": "Successful JSON-RPC result payload returned by the MCP server."
            },
            "McpContentItem": {
                "type": "object",
                "properties": {
                    "type": {
                        "type": "string",
                        "nullable": true,
                        "example": "text"
                    },
                    "text": {
                        "type": "string",
                        "description": "Serialized text payload returned by the MCP tool.",
                        "nullable": true
                    }
                },
                "additionalProperties": false,
                "description": "A content item returned by the MCP tool."
            },
            "SearchExpertQnaStructuredContent": {
                "type": "object",
                "properties": {
                    "count": {
                        "type": "integer",
                        "description": "Number of transcripts returned in the response.",
                        "format": "int32",
                        "example": 5
                    },
                    "data": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/SearchExpertQnaResultItem"
                        },
                        "nullable": true
                    },
                    "Mandatory citation rule": {
                        "type": "string",
                        "nullable": true,
                        "description": "Citation formatting: Each result includes a reference_url field. Always use it as the link URL, formatted like this: [transcript_name](reference_url)"
                    }
                },
                "additionalProperties": true,
                "description": "Structured expert Q&A search payload returned by `search_library`."
            },
            "SearchExpertQnaResultItem": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Unique transcript ID.",
                        "nullable": true,
                        "example": "qapair:library_ts:DC06A185-7084-4106-A6B0-D8B4BB066CF0_9"
                    },
                    "reference_url": {
                        "type": "string",
                        "description": "Direct URL to the Guidepoint transcript source.",
                        "nullable": true,
                        "example": "https://gp360.guidepoint.com/transcript?id=DC06A185-7084-4106-A6B0-D8B4BB066CF0&utm_source=external-mcp&utm_medium=Q%26A+Pairs"
                    },
                    "transcript_name": {
                        "type": "string",
                        "description": "Title of the transcript associated with the result.",
                        "nullable": true,
                        "example": "Autonomous Driving AI Evolution: From Rules-Based to End-to-End Neural Networks"
                    },
                    "date": {
                        "type": "string",
                        "description": "Date of the transcript. Format: YYYY-MM-DD.",
                        "nullable": true,
                        "example": "2024-10-08"
                    },
                    "question": {
                        "type": "string",
                        "description": "Question extracted from the transcript.",
                        "nullable": true
                    },
                    "answer": {
                        "type": "string",
                        "description": "Answer extracted from the transcript.",
                        "nullable": true
                    },
                    "context": {
                        "type": "string",
                        "description": "Contextual summary for the Q&A pair.",
                        "nullable": true
                    },
                    "inquirer": {
                        "$ref": "#/components/schemas/Inquirer"
                    },
                    "respondent": {
                        "$ref": "#/components/schemas/Respondent"
                    }
                },
                "additionalProperties": false,
                "description": "An expert Q&A search result item containing question-answer pairs from forum transcripts."
            },
            "Inquirer": {
                "type": "object",
                "properties": {
                    "full_name": {
                        "type": "string",
                        "description": "Name of the inquirer who asked the question.",
                        "nullable": true,
                        "example": "Ben Ho"
                    }
                },
                "additionalProperties": false,
                "description": "Inquirer information — the person who asked the question in the transcript."
            },
            "Respondent": {
                "type": "object",
                "properties": {
                    "full_name": {
                        "type": "string",
                        "description": "Name of the respondent/expert who answered the question.",
                        "nullable": true,
                        "example": "Daniel Hwang"
                    },
                    "title": {
                        "type": "string",
                        "description": "Current title of the respondent/expert.",
                        "nullable": true,
                        "example": "General Manager of the Autonomous Driving Product Development Center"
                    },
                    "company": {
                        "type": "string",
                        "description": "Current employer of the respondent/expert.",
                        "nullable": true,
                        "example": "Li Auto"
                    }
                },
                "additionalProperties": false,
                "description": "Respondent information — the expert who provided the answer in the transcript."
            },
            "RegisterEventArguments": {
                "type": "object",
                "required": ["event_id"],
                "properties": {
                    "event_id": {
                        "type": "string",
                        "description": "The event's unique identifier. Pattern ^[A-Za-z0-9\\-_]+$, 1-64 chars. Copy verbatim from a prior search_events or get_user_registrations result — never construct or guess.",
                        "example": "abc-123-def-456"
                    },
                    "confirmed": {
                        "type": "boolean",
                        "default": false,
                        "description": "Wire-level consent gate. Omit or pass false for a CONFIRMATION_REQUIRED preview (no write fires). Pass true only after the user has EXPLICITLY confirmed registration.",
                        "example": true
                    }
                },
                "additionalProperties": false,
                "description": "Arguments for the register_event tool."
            },
            "RegisterEventStructuredContent": {
                "type": "object",
                "properties": {
                    "success": {
                        "type": "boolean",
                        "description": "True when the registration write succeeded or when returning a CONFIRMATION_REQUIRED preview.",
                        "example": true
                    },
                    "registered": {
                        "type": "boolean",
                        "nullable": true,
                        "description": "True when the upstream registration write was fired and acknowledged.",
                        "example": true
                    },
                    "verified": {
                        "type": "boolean",
                        "nullable": true,
                        "description": "True when the post-write /forum/full check confirmed isRegistered: true within the sidecar's check window. False means the write likely persisted but the read-side hadn't caught up yet — not a hard failure.",
                        "example": true
                    },
                    "error_code": {
                        "type": "string",
                        "nullable": true,
                        "enum": ["CONFIRMATION_REQUIRED", "EVENT_LOOKUP_FAILED", "ALREADY_REGISTERED", "EVENT_EXPIRED", "CU_GATED", "REGISTRATION_REJECTED", "UPSTREAM_HTTP_ERROR"],
                        "description": "Error code when success=false. CONFIRMATION_REQUIRED is a normal preview state, not a failure.",
                        "example": "CONFIRMATION_REQUIRED"
                    },
                    "event": {
                        "type": "object",
                        "nullable": true,
                        "description": "Event summary block returned on both preview and success responses.",
                        "properties": {
                            "event_id": { "type": "string", "example": "abc-123-def-456" },
                            "title": { "type": "string", "example": "Healthcare IT Vendor Landscape" },
                            "date": { "type": "string", "example": "2026-05-20T10:00:00-04:00" },
                            "cu_cost": { "type": "number", "example": 0 },
                            "requires_gp360_registration": { "type": "boolean", "example": false }
                        },
                        "additionalProperties": false
                    },
                    "event_url": {
                        "type": "string",
                        "nullable": true,
                        "description": "Deep-link to the event page on GP360.",
                        "example": "https://gp360.guidepoint.com/transcript?id=abc-123-def-456"
                    },
                    "message": {
                        "type": "string",
                        "description": "User-safe message describing the outcome. Restate in one short sentence — do NOT paste verbatim.",
                        "example": "Registered. A calendar invite has been sent to your Guidepoint-registered email."
                    },
                    "side_effects": {
                        "type": "array",
                        "nullable": true,
                        "description": "Asynchronous out-of-band actions triggered by the registration write.",
                        "items": {
                            "type": "object",
                            "properties": {
                                "kind": { "type": "string", "example": "calendar_invite_email" },
                                "recipient": { "type": "string", "example": "caller_registered_email" },
                                "channel": { "type": "string", "example": "guidepoint_crm" },
                                "description": { "type": "string" }
                            },
                            "additionalProperties": false
                        }
                    }
                },
                "additionalProperties": false,
                "description": "Structured response from the register_event tool."
            },
            "CancelRegistrationArguments": {
                "type": "object",
                "required": ["event_id"],
                "properties": {
                    "event_id": {
                        "type": "string",
                        "description": "The event's unique identifier. Prefer copying from get_user_registrations (results are pre-filtered to events the user is registered for). Pattern ^[A-Za-z0-9\\-_]+$, 1-64 chars. Never construct or guess.",
                        "example": "abc-123-def-456"
                    },
                    "confirmed": {
                        "type": "boolean",
                        "default": false,
                        "description": "Wire-level consent gate. Omit or pass false for a CONFIRMATION_REQUIRED preview (no write fires). Pass true only after the user has EXPLICITLY confirmed cancellation.",
                        "example": true
                    }
                },
                "additionalProperties": false,
                "description": "Arguments for the cancel_registration tool."
            },
            "CancelRegistrationStructuredContent": {
                "type": "object",
                "properties": {
                    "success": {
                        "type": "boolean",
                        "description": "True when the cancellation write succeeded.",
                        "example": true
                    },
                    "error_code": {
                        "type": "string",
                        "nullable": true,
                        "enum": ["CONFIRMATION_REQUIRED", "NOT_REGISTERED", "EVENT_EXPIRED", "CANCELLATION_WINDOW_EXPIRED", "UPSTREAM_HTTP_ERROR", "INSIGHT_API_REQUEST_REJECTED"],
                        "description": "Error code when success=false. CONFIRMATION_REQUIRED is a normal preview state. CANCELLATION_WINDOW_EXPIRED means the event is within the 24-hour lock-out window — direct user to contact Guidepoint.",
                        "example": null
                    },
                    "event": {
                        "type": "object",
                        "nullable": true,
                        "description": "Event summary block returned on both preview and success responses.",
                        "properties": {
                            "event_id": { "type": "string", "example": "abc-123-def-456" },
                            "title": { "type": "string", "example": "Healthcare IT Vendor Landscape" },
                            "date": { "type": "string", "example": "2026-05-20T10:00:00-04:00" }
                        },
                        "additionalProperties": false
                    },
                    "message": {
                        "type": "string",
                        "description": "User-safe message describing the outcome. Restate in one short sentence — do NOT paste verbatim.",
                        "example": "Your registration for 'Healthcare IT Vendor Landscape' on 2026-05-20 has been cancelled."
                    }
                },
                "additionalProperties": false,
                "description": "Structured response from the cancel_registration tool."
            },
            "JsonRpcError": {
                "type": "object",
                "properties": {
                    "code": {
                        "type": "integer",
                        "format": "int32",
                        "nullable": true,
                        "example": -32602
                    },
                    "message": {
                        "type": "string",
                        "nullable": true,
                        "example": "Invalid params"
                    },
                    "data": {
                        "type": "object",
                        "nullable": true
                    }
                },
                "additionalProperties": true,
                "description": "Standard JSON-RPC error object."
            },
            "EventExpert": {
                "type": "object",
                "required": ["name", "job_title"],
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "Expert name or 'Anonymous' when undisclosed.",
                        "example": "Dr. Sarah Mitchell"
                    },
                    "job_title": {
                        "type": "string",
                        "description": "Expert's job title (may be empty string).",
                        "example": "VP of Product Strategy"
                    },
                    "company": {
                        "type": "string",
                        "description": "Expert's company (omitted entirely when undisclosed, not null).",
                        "example": "Medtronic"
                    }
                },
                "additionalProperties": false,
                "description": "Expert information for an event."
            },
            "SearchEventsStructuredContent": {
                "type": "object",
                "required": ["total_events", "returned", "events"],
                "properties": {
                    "returned": {
                        "type": "integer",
                        "description": "Count of items in the events array.",
                        "example": 5
                    },
                    "total_events": {
                        "type": "integer",
                        "description": "Unfiltered upstream match count.",
                        "example": 12
                    },
                    "total_events_is_approximate": {
                        "type": "boolean",
                        "nullable": true,
                        "description": "Soft signal — true when the true count exceeds the sidecar's fetch cap and the total_events figure is approximate.",
                        "example": true
                    },
                    "unrecognized_sectors": {
                        "type": "array",
                        "items": { "type": "string" },
                        "nullable": true,
                        "description": "Soft signal — list of caller-supplied sector names that were not found in the canonical taxonomy. Still forwarded to upstream verbatim.",
                        "example": []
                    },
                    "events": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/SearchEventsEvent"
                        },
                        "description": "Array of event objects."
                    }
                },
                "additionalProperties": false,
                "description": "Structured response from search_events tool containing event objects."
            },
            "SearchEventsEvent": {
                "type": "object",
                "required": ["event_id", "title", "event_type", "date", "experts", "registration_status", "user_registration_status", "event_url", "sectors", "cu_cost", "requires_gp360_registration"],
                "properties": {
                    "event_id": {
                        "type": "string",
                        "description": "Stable Guidepoint event identifier (opaque UUID).",
                        "example": "evt-uuid-001"
                    },
                    "title": {
                        "type": "string",
                        "description": "Event title as shown in GP360.",
                        "example": "Healthcare Technology Trends in Medical Devices"
                    },
                    "event_type": {
                        "type": "string",
                        "enum": ["teleconference", "roundtable", "group_meeting", "focus_poll", "insight_tracker", "client_generated_call", "ai_guided_call"],
                        "description": "Type of event.",
                        "example": "teleconference"
                    },
                    "date": {
                        "type": "string",
                        "description": "Event start time in ISO 8601 with timezone offset (user's local timezone).",
                        "example": "2026-07-20T14:30:00-04:00"
                    },
                    "end_time": {
                        "type": "string",
                        "nullable": true,
                        "description": "Event end time in ISO 8601 with timezone offset.",
                        "example": "2026-07-20T15:30:00-04:00"
                    },
                    "experts": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/EventExpert"
                        },
                        "description": "Array of expert objects."
                    },
                    "registration_status": {
                        "type": "string",
                        "enum": ["open", "closed"],
                        "description": "INTERNAL SIGNAL — do NOT display to user. 'open' for future dates, 'closed' for past (roundtables/group meetings always 'open').",
                        "example": "open"
                    },
                    "user_registration_status": {
                        "type": "string",
                        "enum": ["registered", "waitlisted", "not_registered"],
                        "description": "User's registration status for this event.",
                        "example": "not_registered"
                    },
                    "event_url": {
                        "type": "string",
                        "description": "Deep-link to the event page on GP360.",
                        "example": "https://gp360.guidepoint.com/events/evt-uuid-001"
                    },
                    "sectors": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Canonical sector names (may be empty).",
                        "example": ["Healthcare IT", "Medical Devices"]
                    },
                    "tickers": {
                        "type": "array",
                        "items": { "type": "string" },
                        "description": "Stock ticker symbols associated with the event (may be empty).",
                        "example": []
                    },
                    "tag_categories": {
                        "type": "array",
                        "items": { "type": "object", "additionalProperties": true },
                        "description": "Tag category objects associated with the event (may be empty).",
                        "example": []
                    },
                    "cu_cost": {
                        "type": "number",
                        "description": "Credit-unit cost. When > 0, surface to user. When == 0, do not mention cost.",
                        "example": 0
                    },
                    "requires_gp360_registration": {
                        "type": "boolean",
                        "description": "True if event requires paid registration in GP360 (cu_cost > 0).",
                        "example": false
                    },
                    "description": {
                        "type": "string",
                        "nullable": true,
                        "description": "AI post-event summary for past events; agenda-based brief for upcoming events when the moderator has published an agenda. May be null when upstream provides no source.",
                        "example": "Expert discussion on the latest trends in digital health technology, cloud-based medical device management, and regulatory compliance challenges."
                    }
                },
                "additionalProperties": false,
                "description": "Event object returned by search_events."
            },
            "GetUserRegistrationsStructuredContent": {
                "type": "object",
                "required": ["total_events", "returned", "events"],
                "properties": {
                    "returned": {
                        "type": "integer",
                        "description": "Count of items in the events array.",
                        "example": 3
                    },
                    "total_events": {
                        "type": "integer",
                        "description": "Merged count across the sidecar's upstream fan-out — accurate at the time of the call.",
                        "example": 8
                    },
                    "enrichment_degraded_count": {
                        "type": "integer",
                        "nullable": true,
                        "description": "Soft signal — number of items that could not be fully enriched from upstream. Individual events with enrichment failures carry enrichment_degraded: true with a minimal payload (event_id + registration_state).",
                        "example": 0
                    },
                    "events": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/GetUserRegistrationsEvent"
                        },
                        "description": "Array of registered event objects, sorted by Activity Time descending."
                    }
                },
                "additionalProperties": false,
                "description": "Structured response from get_user_registrations tool containing events the user is registered for."
            },
            "GetUserRegistrationsEvent": {
                "type": "object",
                "required": ["event_id", "title", "event_type", "date", "experts", "registration_status", "user_registration_status", "event_url", "sectors", "cu_cost", "requires_gp360_registration"],
                "properties": {
                    "event_id": {
                        "type": "string",
                        "description": "Stable Guidepoint event identifier (pass to cancel_registration).",
                        "example": "evt-uuid-002"
                    },
                    "title": {
                        "type": "string",
                        "description": "Event title.",
                        "example": "Private Equity Trends in Healthcare M&A"
                    },
                    "event_type": {
                        "type": "string",
                        "enum": ["teleconference", "roundtable", "group_meeting", "focus_poll", "insight_tracker", "client_generated_call", "ai_guided_call"],
                        "description": "Type of event (server-normalised).",
                        "example": "roundtable"
                    },
                    "date": {
                        "type": "string",
                        "description": "Event start time in ISO 8601 with timezone offset (user's local timezone, resolved per call).",
                        "example": "2026-07-25T10:00:00-04:00"
                    },
                    "experts": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/EventExpert"
                        },
                        "description": "Array of expert objects (same shape as search_events)."
                    },
                    "registration_status": {
                        "type": "string",
                        "enum": ["open", "closed"],
                        "description": "INTERNAL SIGNAL — do NOT display to user. Use only to decide whether to offer cancel_registration.",
                        "example": "open"
                    },
                    "user_registration_status": {
                        "type": "string",
                        "enum": ["registered"],
                        "description": "Guaranteed 'registered' for every event returned by this tool.",
                        "example": "registered"
                    },
                    "registration_state": {
                        "type": "string",
                        "enum": ["upcoming", "pending_compliance"],
                        "description": "Derived server-side from the upstream action field. 'upcoming' = confirmed registration on the caller's calendar. 'pending_compliance' = PreOrder submitted, awaiting Guidepoint compliance approval.",
                        "example": "upcoming"
                    },
                    "enrichment_degraded": {
                        "type": "boolean",
                        "nullable": true,
                        "description": "True when the upstream /forum/full fetch failed for this event. Payload is minimal (event_id + registration_state only) when this flag is set.",
                        "example": false
                    },
                    "event_url": {
                        "type": "string",
                        "description": "Deep-link to GP360 event page.",
                        "example": "https://gp360.guidepoint.com/events/evt-uuid-002"
                    },
                    "sectors": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Canonical sector names (may be empty).",
                        "example": ["Private Equity", "Healthcare"]
                    },
                    "cu_cost": {
                        "type": "number",
                        "description": "Credit-unit cost of the registration. When > 0, surface to user. When == 0, do not mention cost.",
                        "example": 0
                    },
                    "requires_gp360_registration": {
                        "type": "boolean",
                        "description": "True if registration required paid sign-up in GP360 (cu_cost > 0).",
                        "example": false
                    },
                    "description": {
                        "type": "string",
                        "nullable": true,
                        "description": "AI post-event summary for past events; agenda summary composed from forumAgendaItems when the moderator has published an agenda (past or upcoming). May be null when upstream provides no source.",
                        "example": null
                    }
                },
                "additionalProperties": false,
                "description": "Event object returned by get_user_registrations (same shape as search_events, extended with registration_state and enrichment_degraded)."
            }
        },
        "securitySchemes": {      
            "bearerAuth": {
                "type": "http",
                "scheme": "bearer",
                "bearerFormat": "JWT"
            }
        }
    },
    "security": [
        {
            "apiKeyHeader": []
        },
        {
            "apiKeyQuery": []
        },
        {
            "bearerAuth": []
        },
        {
            "ocpApimSubscriptionKey": []
        }
    ]
}