{"openapi":"3.1.0","info":{"title":"Gigacatalyst public HTTP API","version":"1.0.0","description":"Versioned HTTP discovery for Gigacatalyst bootstrap and health. The MCP protocol endpoint is documented separately and is not a REST endpoint. Existing v1 operations remain compatible; breaking changes require a new major path. Deprecated operations receive a documented migration window before removal."},"servers":[{"url":"https://mcp.gigacatalyst.com"}],"externalDocs":{"url":"https://mcp.gigacatalyst.com/docs"},"components":{"securitySchemes":{"ProductBearer":{"type":"http","scheme":"bearer","description":"Product-issued MCP credential. Preview credentials are limited to campaign drafting, bounded candidate previews, campaign reads, and signup handoffs until the user connects a workspace."}},"schemas":{"Problem":{"type":"object","additionalProperties":false,"required":["type","title","status","code","detail"],"properties":{"type":{"type":"string","format":"uri-reference"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"code":{"type":"string"},"detail":{"type":"string"}}}}},"paths":{"/api/v1/health":{"get":{"operationId":"getHealth","summary":"Check gateway liveness","responses":{"200":{"description":"Gateway is live","content":{"application/json":{"schema":{"type":"object","required":["ok","service"],"properties":{"ok":{"type":"boolean","const":true},"service":{"type":"string","const":"gigacatalyst-mcp"}}}}}},"429":{"description":"Rate limit reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/v1/bootstrap":{"post":{"operationId":"createBootstrap","summary":"Create a private MCP preview connection from an approved Gigacatalyst origin","description":"Used by Gigacatalyst's product setup flow. Generic integrations should start at the provisioning URL instead of calling this endpoint directly.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"productPack":{"type":"string","const":"gtm","default":"gtm"},"contextHints":{"type":"object","additionalProperties":true,"default":{}},"attribution":{"type":"object","additionalProperties":false,"properties":{"utmSource":{"type":"string"},"utmMedium":{"type":"string"},"utmCampaign":{"type":"string"},"utmContent":{"type":"string"},"utmTerm":{"type":"string"},"fbclid":{"type":"string"},"fbc":{"type":"string"},"fbp":{"type":"string"},"posthogDistinctId":{"type":"string"},"posthogSessionId":{"type":"string"}},"default":{}}}}}}},"responses":{"201":{"description":"Private MCP connection created","content":{"application/json":{"schema":{"type":"object","required":["ok","journeyId","expiresAt","connection","prompt"],"properties":{"ok":{"type":"boolean","const":true},"journeyId":{"type":"string"},"expiresAt":{"type":"string","format":"date-time"},"connection":{"type":"object","required":["url","bearerToken"],"properties":{"url":{"type":"string","format":"uri","const":"https://mcp.gigacatalyst.com/mcp"},"bearerToken":{"type":"string","writeOnly":true,"description":"Private bearer returned once. Never log or expose it."}}},"prompt":{"type":"string"}}}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Origin not allowed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request exceeds 16 KiB","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Bootstrap rate limit reached","headers":{"Retry-After":{"schema":{"type":"integer"}},"RateLimit-Policy":{"schema":{"type":"string"}},"RateLimit":{"schema":{"type":"string"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Bootstrap service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}}}}