POST endpoint with a JSON body matching the MCP tool schema.
OpenAPI schema: GET https://backend.postsiva.com/openapi/chatgpt-actions.json
Requirements
- Pro plan with
gpt_app_enabled - Connected social accounts in the target workspace
- Either ChatGPT OAuth (Connect to Postsiva) or a workspace API key
GPT Actions omit
web_search_duckduckgo and clear_workspace_chat_history. Everything else matches the MCP tool catalog.Authentication
Two supported methods:| Method | When to use | Header |
|---|---|---|
| OAuth (recommended) | End users in ChatGPT | Authorization: Bearer <JWT from Connect to Postsiva> |
| API key | Internal/testing Custom GPTs | X-API-Key: psk_live_YOUR_KEY or Authorization: Bearer psk_live_YOUR_KEY |
- User clicks Connect to Postsiva in ChatGPT
- Signs in at
https://backend.postsiva.com/auth/oauth/login - Selects a workspace
- ChatGPT receives a Bearer JWT scoped to that workspace
GET /.well-known/oauth-protected-resource
Call a tool
POST /unified/gpt-actions/{tool_name}
Replace {tool_name} with the exact MCP tool name (snake_case).
Base URL
Example — list accounts
Example — idea to content
Example — publish
Available tools
| Tool | Description |
|---|---|
get_accounts | List connected platforms or one profile |
get_queued_posts | Scheduled posts and drafts |
get_user_posts | Recent posts per platform |
get_unified_analytics | Stored cross-platform analytics |
get_comments | Comments on recent posts |
reply_to_comment | Reply to a comment |
manage_platform_connection | OAuth connect URL or disconnect |
idea_to_content | Topic → per-platform copy |
content_to_image | Copy → generated images |
media_to_content | Image/video URL → captions |
analyze_media | Describe image or video URL |
publish | Publish, draft, or schedule |
disconnect_gpt_connector | Revoke ChatGPT OAuth session |
Tool bodies match MCP arguments exactly. Import the OpenAPI schema for full JSON Schema per operation.
OpenAPI schema
GET /openapi/chatgpt-actions.json
Public, no auth required. Import this URL when creating a Custom GPT:
- OpenAPI 3.1.0
- One
POSTpath per tool under/unified/gpt-actions/{operationId} - Request body schemas from Pydantic tool inputs
BearerAuthsecurity scheme (OAuth JWT orpsk_live_key)x-openai-action-timeout: 120(seconds)
Disconnect ChatGPT connector
POST /unified/gpt-actions/disconnect_gpt_connector
Revokes the ChatGPT OAuth Bearer token so the next Action call returns 401 until the user reconnects.
- Does not unlink social platforms (use
manage_platform_connectionwithaction=disconnectfor that) - No-op success when authenticated with an API key (nothing to revoke)
{} (empty JSON object)
REST vs MCP vs GPT Actions
| Feature | MCP | GPT Actions |
|---|---|---|
| Transport | Streamable HTTP MCP | OpenAPI REST |
| Web search | Yes (web_search_duckduckgo) | No |
| Clear chat history | No | No |
| Auth | API key only | OAuth or API key |
| Timeout | Client-defined | 120s (OpenAPI hint) |
Errors
| Status | Meaning |
|---|---|
401 | Missing auth or revoked OAuth — user must reconnect in ChatGPT |
402 / plan message | gpt_app_enabled not on current plan |
422 | Invalid JSON body or schema validation failure |
200 with success: false | Tool-level error inside JSON payload |
Setup guide
See ChatGPT Custom GPT setup for step-by-step Custom GPT configuration, OAuth URLs, and privacy instructions.Next
ChatGPT setup
Custom GPT walkthrough
MCP tools
Full tool reference
Plans
Pro plan requirements