{
  "openapi": "3.1.0",
  "info": {
    "title": "SocialClaw MCP Server",
    "version": "1.0.0",
    "description": "The SocialClaw MCP server gives Claude, ChatGPT, Cursor, and any Model Context Protocol client direct access to real social publishing: connected accounts, hosted media, validation-first scheduling, and delivery inspection — 34 workspace-scoped tools in total.\n\n## Hosted endpoint\n\nThe server runs hosted at `https://getsocialclaw.com/mcp` over streamable HTTP (JSON-RPC 2.0). Send your workspace API key as `Authorization: Bearer sc_live_your_key`. Tool discovery (`initialize`, `tools/list`) is open; tool calls require the key.\n\nClients with no header field — the claude.ai connector dialog — append the key to the URL instead. Treat that URL like a password and rotate the key if it leaks:\n\n```text\nhttps://getsocialclaw.com/mcp?apiKey=sc_live_your_key\n```\n\n## Client setup\n\n**Claude on claude.ai (web and desktop), no code.** Open **Settings → Connectors → Add custom connector**, name it SocialClaw, paste the URL above (with your key) as the remote MCP server URL, and leave the OAuth Client ID and Client Secret fields empty.\n\n**Claude Code, hosted:**\n\n```bash\nclaude mcp add --transport http socialclaw https://getsocialclaw.com/mcp \\\n  --header \"Authorization: Bearer sc_live_your_key\"\n```\n\n**Claude Code, local stdio** (the socialclaw npm package ships the same server — Node.js 20+):\n\n```bash\nclaude mcp add socialclaw \\\n  --env SOCIALCLAW_API_KEY=sc_live_your_key \\\n  -- npx -y socialclaw mcp\n```\n\n**Claude Desktop, Cursor, and other JSON-configured clients:**\n\n```json\n{\n  \"mcpServers\": {\n    \"socialclaw\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"socialclaw\", \"mcp\"],\n      \"env\": {\n        \"SOCIALCLAW_API_KEY\": \"sc_live_your_key\"\n      }\n    }\n  }\n}\n```\n\nAlready logged in with the CLI (`socialclaw login`)? The stdio server reuses the saved credentials and the config needs no env block.\n\n## How agents should sequence the tools\n\n1. `list_accounts` → `account_capabilities` — discover what is connected and what each account allows.\n2. `list_assets` to reuse an already-uploaded file, or `upload_asset` for a new one — the returned URL goes in `media_link`.\n3. `validate_schedule` → `apply_schedule` — never apply what has not validated.\n4. `run_status` — confirm posts actually published; `post_attempts` when one fails.\n\n## About this reference\n\nEach tool below is documented as its JSON-RPC `tools/call` request against `POST /mcp`. The tool list, descriptions, and input schemas are generated from the live server registry — this reference is exactly what the server exposes."
  },
  "servers": [
    {
      "url": "https://getsocialclaw.com",
      "description": "SocialClaw hosted MCP server"
    }
  ],
  "externalDocs": {
    "description": "About the SocialClaw MCP server.",
    "url": "https://getsocialclaw.com/mcp"
  },
  "tags": [
    {
      "name": "Discover"
    },
    {
      "name": "Connect"
    },
    {
      "name": "Media"
    },
    {
      "name": "Schedule"
    },
    {
      "name": "Inspect"
    },
    {
      "name": "Recover"
    },
    {
      "name": "Instagram engagement"
    }
  ],
  "security": [
    {
      "BearerAuth": []
    },
    {
      "ApiKeyQuery": []
    }
  ],
  "components": {
    "securitySchemes": {
      "BearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "SocialClaw workspace API key"
      },
      "ApiKeyQuery": {
        "type": "apiKey",
        "in": "query",
        "name": "apiKey",
        "description": "For clients that cannot send headers (claude.ai connector dialog)."
      }
    }
  },
  "paths": {
    "/mcp#list_accounts": {
      "post": {
        "operationId": "tool_list_accounts",
        "tags": [
          "Discover"
        ],
        "summary": "list_accounts",
        "description": "List connected social accounts in the SocialClaw workspace. Optionally filter by provider (x, facebook, instagram_business, instagram, threads, linkedin, linkedin_page, pinterest, tiktok, telegram, discord, youtube, reddit, wordpress).",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "id",
                  "method",
                  "params"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Client-chosen request id."
                  },
                  "method": {
                    "const": "tools/call"
                  },
                  "params": {
                    "type": "object",
                    "required": [
                      "name",
                      "arguments"
                    ],
                    "properties": {
                      "name": {
                        "const": "list_accounts"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "provider": {
                            "type": "string",
                            "description": "Optional provider filter."
                          }
                        },
                        "description": "Arguments for list_accounts."
                      }
                    }
                  }
                }
              },
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/call",
                "params": {
                  "name": "list_accounts",
                  "arguments": {
                    "provider": "linkedin"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response with the tool result as MCP content blocks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "JSON-RPC 2.0 response. Tool output is returned as MCP content blocks.",
                  "properties": {
                    "jsonrpc": {
                      "const": "2.0"
                    },
                    "id": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Mirrors the request id."
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "array",
                          "description": "MCP content blocks; tool output is JSON serialized into a text block.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "const": "text"
                              },
                              "text": {
                                "type": "string",
                                "description": "JSON-encoded tool result."
                              }
                            }
                          }
                        },
                        "isError": {
                          "type": "boolean",
                          "description": "True when the tool call failed."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp#account_capabilities": {
      "post": {
        "operationId": "tool_account_capabilities",
        "tags": [
          "Discover"
        ],
        "summary": "account_capabilities",
        "description": "Get publish capabilities and provider rules for connected accounts: what media is allowed, text limits, and whether publishing is currently possible. Pass accountId for one account, or provider to filter, or neither for all.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "id",
                  "method",
                  "params"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Client-chosen request id."
                  },
                  "method": {
                    "const": "tools/call"
                  },
                  "params": {
                    "type": "object",
                    "required": [
                      "name",
                      "arguments"
                    ],
                    "properties": {
                      "name": {
                        "const": "account_capabilities"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "accountId": {
                            "type": "string",
                            "description": "Optional account id."
                          },
                          "provider": {
                            "type": "string",
                            "description": "Optional provider filter."
                          }
                        },
                        "description": "Arguments for account_capabilities."
                      }
                    }
                  }
                }
              },
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/call",
                "params": {
                  "name": "account_capabilities",
                  "arguments": {
                    "accountId": "acct_123",
                    "provider": "linkedin"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response with the tool result as MCP content blocks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "JSON-RPC 2.0 response. Tool output is returned as MCP content blocks.",
                  "properties": {
                    "jsonrpc": {
                      "const": "2.0"
                    },
                    "id": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Mirrors the request id."
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "array",
                          "description": "MCP content blocks; tool output is JSON serialized into a text block.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "const": "text"
                              },
                              "text": {
                                "type": "string",
                                "description": "JSON-encoded tool result."
                              }
                            }
                          }
                        },
                        "isError": {
                          "type": "boolean",
                          "description": "True when the tool call failed."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp#connect_account": {
      "post": {
        "operationId": "tool_connect_account",
        "tags": [
          "Connect"
        ],
        "summary": "connect_account",
        "description": "Start connecting one of the user's own social accounts to their SocialClaw workspace. For most providers this returns an authorizeUrl; give it to the user so they sign in with the provider themselves (SocialClaw never sees their password). Telegram and Discord have no sign-in page: Telegram takes the bot token and chat id of a bot the user created and made admin of their channel, and Discord takes a webhook URL the user created for their channel. Only pass values the user gave you for this purpose.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "id",
                  "method",
                  "params"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Client-chosen request id."
                  },
                  "method": {
                    "const": "tools/call"
                  },
                  "params": {
                    "type": "object",
                    "required": [
                      "name",
                      "arguments"
                    ],
                    "properties": {
                      "name": {
                        "const": "connect_account"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "provider": {
                            "type": "string",
                            "description": "Provider to connect."
                          },
                          "botToken": {
                            "type": "string",
                            "description": "Telegram only: token of the user's own bot, from @BotFather."
                          },
                          "chatId": {
                            "type": "string",
                            "description": "Telegram chat target, e.g. @yourchannel (telegram only)."
                          },
                          "webhookUrl": {
                            "type": "string",
                            "description": "Discord only: webhook URL the user created in their channel settings."
                          }
                        },
                        "required": [
                          "provider"
                        ],
                        "description": "Arguments for connect_account."
                      }
                    }
                  }
                }
              },
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/call",
                "params": {
                  "name": "connect_account",
                  "arguments": {
                    "provider": "linkedin"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response with the tool result as MCP content blocks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "JSON-RPC 2.0 response. Tool output is returned as MCP content blocks.",
                  "properties": {
                    "jsonrpc": {
                      "const": "2.0"
                    },
                    "id": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Mirrors the request id."
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "array",
                          "description": "MCP content blocks; tool output is JSON serialized into a text block.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "const": "text"
                              },
                              "text": {
                                "type": "string",
                                "description": "JSON-encoded tool result."
                              }
                            }
                          }
                        },
                        "isError": {
                          "type": "boolean",
                          "description": "True when the tool call failed."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp#upload_asset": {
      "post": {
        "operationId": "tool_upload_asset",
        "tags": [
          "Media"
        ],
        "summary": "upload_asset",
        "description": "Add an image or video to the user's SocialClaw media library so it can be attached to a post. Pass exactly one of: file (a file the user attached in this chat), sourceUrl (a direct public http(s) link to the image or video file, not a web page), or contentBase64 (small files only). Files up to 1 GB are supported through file or sourceUrl. The result is the asset: when status is ready, use its publicUrl as media_link in validate_schedule/apply_schedule. Large videos may come back with status uploading; then call get_asset with the asset id until status is ready (or failed) before scheduling.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "id",
                  "method",
                  "params"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Client-chosen request id."
                  },
                  "method": {
                    "const": "tools/call"
                  },
                  "params": {
                    "type": "object",
                    "required": [
                      "name",
                      "arguments"
                    ],
                    "properties": {
                      "name": {
                        "const": "upload_asset"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "file": {
                            "type": "object",
                            "description": "A file the user attached in the conversation.",
                            "properties": {
                              "download_url": {
                                "type": "string",
                                "description": "Temporary download URL of the attached file."
                              },
                              "file_id": {
                                "type": "string",
                                "description": "Id of the attached file."
                              },
                              "mime_type": {
                                "type": "string",
                                "description": "Mime type of the attached file, if known."
                              },
                              "file_name": {
                                "type": "string",
                                "description": "Original name of the attached file, if known."
                              }
                            },
                            "required": [
                              "download_url",
                              "file_id"
                            ]
                          },
                          "sourceUrl": {
                            "type": "string",
                            "description": "Direct public http(s) URL of the image or video file."
                          },
                          "filename": {
                            "type": "string",
                            "description": "Optional filename including extension, e.g. launch.png. Inferred from the file or URL when omitted."
                          },
                          "contentBase64": {
                            "type": "string",
                            "description": "Base64-encoded file content. Small files only; prefer file or sourceUrl."
                          }
                        },
                        "description": "Arguments for upload_asset."
                      }
                    }
                  }
                }
              },
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/call",
                "params": {
                  "name": "upload_asset",
                  "arguments": {
                    "file": "...",
                    "sourceUrl": "https://example.com/launch.png"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response with the tool result as MCP content blocks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "JSON-RPC 2.0 response. Tool output is returned as MCP content blocks.",
                  "properties": {
                    "jsonrpc": {
                      "const": "2.0"
                    },
                    "id": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Mirrors the request id."
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "array",
                          "description": "MCP content blocks; tool output is JSON serialized into a text block.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "const": "text"
                              },
                              "text": {
                                "type": "string",
                                "description": "JSON-encoded tool result."
                              }
                            }
                          }
                        },
                        "isError": {
                          "type": "boolean",
                          "description": "True when the tool call failed."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp#get_asset": {
      "post": {
        "operationId": "tool_get_asset",
        "tags": [
          "Tools"
        ],
        "summary": "get_asset",
        "description": "Get one media asset from the user's SocialClaw library by id, including its status (uploading, ready, or failed), import progress, and publicUrl. Use it after upload_asset returns status uploading, until the asset is ready.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "id",
                  "method",
                  "params"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Client-chosen request id."
                  },
                  "method": {
                    "const": "tools/call"
                  },
                  "params": {
                    "type": "object",
                    "required": [
                      "name",
                      "arguments"
                    ],
                    "properties": {
                      "name": {
                        "const": "get_asset"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "assetId": {
                            "type": "string",
                            "description": "Asset id returned by upload_asset or list_assets."
                          }
                        },
                        "required": [
                          "assetId"
                        ],
                        "description": "Arguments for get_asset."
                      }
                    }
                  }
                }
              },
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/call",
                "params": {
                  "name": "get_asset",
                  "arguments": {
                    "assetId": "..."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response with the tool result as MCP content blocks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "JSON-RPC 2.0 response. Tool output is returned as MCP content blocks.",
                  "properties": {
                    "jsonrpc": {
                      "const": "2.0"
                    },
                    "id": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Mirrors the request id."
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "array",
                          "description": "MCP content blocks; tool output is JSON serialized into a text block.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "const": "text"
                              },
                              "text": {
                                "type": "string",
                                "description": "JSON-encoded tool result."
                              }
                            }
                          }
                        },
                        "isError": {
                          "type": "boolean",
                          "description": "True when the tool call failed."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp#validate_schedule": {
      "post": {
        "operationId": "tool_validate_schedule",
        "tags": [
          "Schedule"
        ],
        "summary": "validate_schedule",
        "description": "Validate a schedule document against provider rules, media limits, account state, and publish times WITHOUT creating any posts. Always run this before apply_schedule.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "id",
                  "method",
                  "params"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Client-chosen request id."
                  },
                  "method": {
                    "const": "tools/call"
                  },
                  "params": {
                    "type": "object",
                    "required": [
                      "name",
                      "arguments"
                    ],
                    "properties": {
                      "name": {
                        "const": "validate_schedule"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "schedule": {
                            "type": "object",
                            "description": "SocialClaw schedule document. Minimal shape: { timezone, posts: [{ account, name, description, publish_at, media_link? }] }. Campaign documents use { timezone, campaigns: [...] }. Per-post provider settings go in settings, e.g. TikTok inbox mode: settings: { tiktokPostMode: \"draft\" } sends the media to TikTok's inbox notification flow instead of publishing, and the creator finishes the post inside the TikTok app.",
                            "additionalProperties": true
                          }
                        },
                        "required": [
                          "schedule"
                        ],
                        "description": "Arguments for validate_schedule."
                      }
                    }
                  }
                }
              },
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/call",
                "params": {
                  "name": "validate_schedule",
                  "arguments": {
                    "schedule": {
                      "timezone": "UTC",
                      "posts": [
                        {
                          "account": "linkedin:person:123",
                          "name": "Launch update",
                          "description": "We just shipped the new SocialClaw workflow.",
                          "publish_at": "2026-08-01T15:00:00Z"
                        }
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response with the tool result as MCP content blocks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "JSON-RPC 2.0 response. Tool output is returned as MCP content blocks.",
                  "properties": {
                    "jsonrpc": {
                      "const": "2.0"
                    },
                    "id": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Mirrors the request id."
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "array",
                          "description": "MCP content blocks; tool output is JSON serialized into a text block.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "const": "text"
                              },
                              "text": {
                                "type": "string",
                                "description": "JSON-encoded tool result."
                              }
                            }
                          }
                        },
                        "isError": {
                          "type": "boolean",
                          "description": "True when the tool call failed."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp#preview_campaign": {
      "post": {
        "operationId": "tool_preview_campaign",
        "tags": [
          "Schedule"
        ],
        "summary": "preview_campaign",
        "description": "Preview how a campaign schedule document expands into concrete posts and steps without creating anything.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "id",
                  "method",
                  "params"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Client-chosen request id."
                  },
                  "method": {
                    "const": "tools/call"
                  },
                  "params": {
                    "type": "object",
                    "required": [
                      "name",
                      "arguments"
                    ],
                    "properties": {
                      "name": {
                        "const": "preview_campaign"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "schedule": {
                            "type": "object",
                            "description": "SocialClaw schedule document. Minimal shape: { timezone, posts: [{ account, name, description, publish_at, media_link? }] }. Campaign documents use { timezone, campaigns: [...] }. Per-post provider settings go in settings, e.g. TikTok inbox mode: settings: { tiktokPostMode: \"draft\" } sends the media to TikTok's inbox notification flow instead of publishing, and the creator finishes the post inside the TikTok app.",
                            "additionalProperties": true
                          }
                        },
                        "required": [
                          "schedule"
                        ],
                        "description": "Arguments for preview_campaign."
                      }
                    }
                  }
                }
              },
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/call",
                "params": {
                  "name": "preview_campaign",
                  "arguments": {
                    "schedule": {
                      "timezone": "UTC",
                      "posts": [
                        {
                          "account": "linkedin:person:123",
                          "name": "Launch update",
                          "description": "We just shipped the new SocialClaw workflow.",
                          "publish_at": "2026-08-01T15:00:00Z"
                        }
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response with the tool result as MCP content blocks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "JSON-RPC 2.0 response. Tool output is returned as MCP content blocks.",
                  "properties": {
                    "jsonrpc": {
                      "const": "2.0"
                    },
                    "id": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Mirrors the request id."
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "array",
                          "description": "MCP content blocks; tool output is JSON serialized into a text block.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "const": "text"
                              },
                              "text": {
                                "type": "string",
                                "description": "JSON-encoded tool result."
                              }
                            }
                          }
                        },
                        "isError": {
                          "type": "boolean",
                          "description": "True when the tool call failed."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp#apply_schedule": {
      "post": {
        "operationId": "tool_apply_schedule",
        "tags": [
          "Schedule"
        ],
        "summary": "apply_schedule",
        "description": "Create a publishing run from a schedule document. Posts are scheduled or published through connected accounts. Send an idempotencyKey so retries do not create duplicate runs.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "id",
                  "method",
                  "params"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Client-chosen request id."
                  },
                  "method": {
                    "const": "tools/call"
                  },
                  "params": {
                    "type": "object",
                    "required": [
                      "name",
                      "arguments"
                    ],
                    "properties": {
                      "name": {
                        "const": "apply_schedule"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "schedule": {
                            "type": "object",
                            "description": "SocialClaw schedule document. Minimal shape: { timezone, posts: [{ account, name, description, publish_at, media_link? }] }. Campaign documents use { timezone, campaigns: [...] }. Per-post provider settings go in settings, e.g. TikTok inbox mode: settings: { tiktokPostMode: \"draft\" } sends the media to TikTok's inbox notification flow instead of publishing, and the creator finishes the post inside the TikTok app.",
                            "additionalProperties": true
                          },
                          "idempotencyKey": {
                            "type": "string",
                            "description": "Stable key to deduplicate retries."
                          }
                        },
                        "required": [
                          "schedule"
                        ],
                        "description": "Arguments for apply_schedule."
                      }
                    }
                  }
                }
              },
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/call",
                "params": {
                  "name": "apply_schedule",
                  "arguments": {
                    "schedule": {
                      "timezone": "UTC",
                      "posts": [
                        {
                          "account": "linkedin:person:123",
                          "name": "Launch update",
                          "description": "We just shipped the new SocialClaw workflow.",
                          "publish_at": "2026-08-01T15:00:00Z"
                        }
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response with the tool result as MCP content blocks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "JSON-RPC 2.0 response. Tool output is returned as MCP content blocks.",
                  "properties": {
                    "jsonrpc": {
                      "const": "2.0"
                    },
                    "id": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Mirrors the request id."
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "array",
                          "description": "MCP content blocks; tool output is JSON serialized into a text block.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "const": "text"
                              },
                              "text": {
                                "type": "string",
                                "description": "JSON-encoded tool result."
                              }
                            }
                          }
                        },
                        "isError": {
                          "type": "boolean",
                          "description": "True when the tool call failed."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp#publish_draft": {
      "post": {
        "operationId": "tool_publish_draft",
        "tags": [
          "Schedule"
        ],
        "summary": "publish_draft",
        "description": "Publish a previously created draft run, optionally at a given ISO-8601 start time.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "id",
                  "method",
                  "params"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Client-chosen request id."
                  },
                  "method": {
                    "const": "tools/call"
                  },
                  "params": {
                    "type": "object",
                    "required": [
                      "name",
                      "arguments"
                    ],
                    "properties": {
                      "name": {
                        "const": "publish_draft"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "runId": {
                            "type": "string",
                            "description": "Draft run id."
                          },
                          "startAt": {
                            "type": "string",
                            "description": "Optional ISO-8601 publish start time."
                          }
                        },
                        "required": [
                          "runId"
                        ],
                        "description": "Arguments for publish_draft."
                      }
                    }
                  }
                }
              },
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/call",
                "params": {
                  "name": "publish_draft",
                  "arguments": {
                    "runId": "run_123"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response with the tool result as MCP content blocks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "JSON-RPC 2.0 response. Tool output is returned as MCP content blocks.",
                  "properties": {
                    "jsonrpc": {
                      "const": "2.0"
                    },
                    "id": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Mirrors the request id."
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "array",
                          "description": "MCP content blocks; tool output is JSON serialized into a text block.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "const": "text"
                              },
                              "text": {
                                "type": "string",
                                "description": "JSON-encoded tool result."
                              }
                            }
                          }
                        },
                        "isError": {
                          "type": "boolean",
                          "description": "True when the tool call failed."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp#list_posts": {
      "post": {
        "operationId": "tool_list_posts",
        "tags": [
          "Inspect"
        ],
        "summary": "list_posts",
        "description": "List posts in the workspace with optional filters.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "id",
                  "method",
                  "params"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Client-chosen request id."
                  },
                  "method": {
                    "const": "tools/call"
                  },
                  "params": {
                    "type": "object",
                    "required": [
                      "name",
                      "arguments"
                    ],
                    "properties": {
                      "name": {
                        "const": "list_posts"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "runId": {
                            "type": "string"
                          },
                          "status": {
                            "type": "string",
                            "description": "e.g. scheduled, published, action_required, failed, canceled."
                          },
                          "account": {
                            "type": "string",
                            "description": "Account handle filter."
                          },
                          "provider": {
                            "type": "string"
                          },
                          "campaignId": {
                            "type": "string"
                          },
                          "limit": {
                            "type": "number",
                            "description": "Maximum posts to return. Defaults to 20 and is capped at 50."
                          },
                          "offset": {
                            "type": "number",
                            "description": "Offset for paging through results."
                          }
                        },
                        "description": "Arguments for list_posts."
                      }
                    }
                  }
                }
              },
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/call",
                "params": {
                  "name": "list_posts",
                  "arguments": {
                    "runId": "run_123",
                    "status": "..."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response with the tool result as MCP content blocks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "JSON-RPC 2.0 response. Tool output is returned as MCP content blocks.",
                  "properties": {
                    "jsonrpc": {
                      "const": "2.0"
                    },
                    "id": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Mirrors the request id."
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "array",
                          "description": "MCP content blocks; tool output is JSON serialized into a text block.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "const": "text"
                              },
                              "text": {
                                "type": "string",
                                "description": "JSON-encoded tool result."
                              }
                            }
                          }
                        },
                        "isError": {
                          "type": "boolean",
                          "description": "True when the tool call failed."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp#list_assets": {
      "post": {
        "operationId": "tool_list_assets",
        "tags": [
          "Media"
        ],
        "summary": "list_assets",
        "description": "List media (images/videos) the user has uploaded to their SocialClaw library, newest first. Each asset includes a publicUrl usable directly as media_link in validate_schedule/apply_schedule. Use this to find a previously uploaded file (e.g. from the dashboard) to post. Optionally filter by kind (image/video), mime, or a text query over filename/id.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "id",
                  "method",
                  "params"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Client-chosen request id."
                  },
                  "method": {
                    "const": "tools/call"
                  },
                  "params": {
                    "type": "object",
                    "required": [
                      "name",
                      "arguments"
                    ],
                    "properties": {
                      "name": {
                        "const": "list_assets"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "query": {
                            "type": "string",
                            "description": "Optional text match over filename, id, kind, mime, or url."
                          },
                          "kind": {
                            "type": "string",
                            "description": "Filter by media kind: image or video.",
                            "enum": [
                              "image",
                              "video"
                            ]
                          },
                          "mime": {
                            "type": "string",
                            "description": "Optional mime prefix filter, e.g. video/mp4."
                          },
                          "sort": {
                            "type": "string",
                            "description": "created_desc (default, newest first) or created_asc.",
                            "enum": [
                              "created_desc",
                              "created_asc"
                            ]
                          },
                          "limit": {
                            "type": "number",
                            "description": "Maximum assets to return. Defaults to 24, capped at 48."
                          }
                        },
                        "description": "Arguments for list_assets."
                      }
                    }
                  }
                }
              },
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/call",
                "params": {
                  "name": "list_assets",
                  "arguments": {
                    "query": "...",
                    "kind": "image"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response with the tool result as MCP content blocks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "JSON-RPC 2.0 response. Tool output is returned as MCP content blocks.",
                  "properties": {
                    "jsonrpc": {
                      "const": "2.0"
                    },
                    "id": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Mirrors the request id."
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "array",
                          "description": "MCP content blocks; tool output is JSON serialized into a text block.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "const": "text"
                              },
                              "text": {
                                "type": "string",
                                "description": "JSON-encoded tool result."
                              }
                            }
                          }
                        },
                        "isError": {
                          "type": "boolean",
                          "description": "True when the tool call failed."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp#get_post": {
      "post": {
        "operationId": "tool_get_post",
        "tags": [
          "Inspect"
        ],
        "summary": "get_post",
        "description": "Get one post including its delivery state and provider identifiers.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "id",
                  "method",
                  "params"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Client-chosen request id."
                  },
                  "method": {
                    "const": "tools/call"
                  },
                  "params": {
                    "type": "object",
                    "required": [
                      "name",
                      "arguments"
                    ],
                    "properties": {
                      "name": {
                        "const": "get_post"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "postId": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "postId"
                        ],
                        "description": "Arguments for get_post."
                      }
                    }
                  }
                }
              },
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/call",
                "params": {
                  "name": "get_post",
                  "arguments": {
                    "postId": "post_123"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response with the tool result as MCP content blocks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "JSON-RPC 2.0 response. Tool output is returned as MCP content blocks.",
                  "properties": {
                    "jsonrpc": {
                      "const": "2.0"
                    },
                    "id": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Mirrors the request id."
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "array",
                          "description": "MCP content blocks; tool output is JSON serialized into a text block.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "const": "text"
                              },
                              "text": {
                                "type": "string",
                                "description": "JSON-encoded tool result."
                              }
                            }
                          }
                        },
                        "isError": {
                          "type": "boolean",
                          "description": "True when the tool call failed."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp#post_attempts": {
      "post": {
        "operationId": "tool_post_attempts",
        "tags": [
          "Inspect"
        ],
        "summary": "post_attempts",
        "description": "List publish attempts for a post, including provider errors. Use this to debug failed posts.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "id",
                  "method",
                  "params"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Client-chosen request id."
                  },
                  "method": {
                    "const": "tools/call"
                  },
                  "params": {
                    "type": "object",
                    "required": [
                      "name",
                      "arguments"
                    ],
                    "properties": {
                      "name": {
                        "const": "post_attempts"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "postId": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "postId"
                        ],
                        "description": "Arguments for post_attempts."
                      }
                    }
                  }
                }
              },
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/call",
                "params": {
                  "name": "post_attempts",
                  "arguments": {
                    "postId": "post_123"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response with the tool result as MCP content blocks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "JSON-RPC 2.0 response. Tool output is returned as MCP content blocks.",
                  "properties": {
                    "jsonrpc": {
                      "const": "2.0"
                    },
                    "id": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Mirrors the request id."
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "array",
                          "description": "MCP content blocks; tool output is JSON serialized into a text block.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "const": "text"
                              },
                              "text": {
                                "type": "string",
                                "description": "JSON-encoded tool result."
                              }
                            }
                          }
                        },
                        "isError": {
                          "type": "boolean",
                          "description": "True when the tool call failed."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp#retry_post": {
      "post": {
        "operationId": "tool_retry_post",
        "tags": [
          "Recover"
        ],
        "summary": "retry_post",
        "description": "Retry a failed post.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "id",
                  "method",
                  "params"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Client-chosen request id."
                  },
                  "method": {
                    "const": "tools/call"
                  },
                  "params": {
                    "type": "object",
                    "required": [
                      "name",
                      "arguments"
                    ],
                    "properties": {
                      "name": {
                        "const": "retry_post"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "postId": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "postId"
                        ],
                        "description": "Arguments for retry_post."
                      }
                    }
                  }
                }
              },
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/call",
                "params": {
                  "name": "retry_post",
                  "arguments": {
                    "postId": "post_123"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response with the tool result as MCP content blocks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "JSON-RPC 2.0 response. Tool output is returned as MCP content blocks.",
                  "properties": {
                    "jsonrpc": {
                      "const": "2.0"
                    },
                    "id": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Mirrors the request id."
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "array",
                          "description": "MCP content blocks; tool output is JSON serialized into a text block.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "const": "text"
                              },
                              "text": {
                                "type": "string",
                                "description": "JSON-encoded tool result."
                              }
                            }
                          }
                        },
                        "isError": {
                          "type": "boolean",
                          "description": "True when the tool call failed."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp#cancel_post": {
      "post": {
        "operationId": "tool_cancel_post",
        "tags": [
          "Recover"
        ],
        "summary": "cancel_post",
        "description": "Cancel a scheduled post before it publishes.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "id",
                  "method",
                  "params"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Client-chosen request id."
                  },
                  "method": {
                    "const": "tools/call"
                  },
                  "params": {
                    "type": "object",
                    "required": [
                      "name",
                      "arguments"
                    ],
                    "properties": {
                      "name": {
                        "const": "cancel_post"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "postId": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "postId"
                        ],
                        "description": "Arguments for cancel_post."
                      }
                    }
                  }
                }
              },
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/call",
                "params": {
                  "name": "cancel_post",
                  "arguments": {
                    "postId": "post_123"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response with the tool result as MCP content blocks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "JSON-RPC 2.0 response. Tool output is returned as MCP content blocks.",
                  "properties": {
                    "jsonrpc": {
                      "const": "2.0"
                    },
                    "id": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Mirrors the request id."
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "array",
                          "description": "MCP content blocks; tool output is JSON serialized into a text block.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "const": "text"
                              },
                              "text": {
                                "type": "string",
                                "description": "JSON-encoded tool result."
                              }
                            }
                          }
                        },
                        "isError": {
                          "type": "boolean",
                          "description": "True when the tool call failed."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp#run_status": {
      "post": {
        "operationId": "tool_run_status",
        "tags": [
          "Inspect"
        ],
        "summary": "run_status",
        "description": "Get the status summary of a publishing run and its posts.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "id",
                  "method",
                  "params"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Client-chosen request id."
                  },
                  "method": {
                    "const": "tools/call"
                  },
                  "params": {
                    "type": "object",
                    "required": [
                      "name",
                      "arguments"
                    ],
                    "properties": {
                      "name": {
                        "const": "run_status"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "runId": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "runId"
                        ],
                        "description": "Arguments for run_status."
                      }
                    }
                  }
                }
              },
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/call",
                "params": {
                  "name": "run_status",
                  "arguments": {
                    "runId": "run_123"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response with the tool result as MCP content blocks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "JSON-RPC 2.0 response. Tool output is returned as MCP content blocks.",
                  "properties": {
                    "jsonrpc": {
                      "const": "2.0"
                    },
                    "id": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Mirrors the request id."
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "array",
                          "description": "MCP content blocks; tool output is JSON serialized into a text block.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "const": "text"
                              },
                              "text": {
                                "type": "string",
                                "description": "JSON-encoded tool result."
                              }
                            }
                          }
                        },
                        "isError": {
                          "type": "boolean",
                          "description": "True when the tool call failed."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp#get_analytics": {
      "post": {
        "operationId": "tool_get_analytics",
        "tags": [
          "Inspect"
        ],
        "summary": "get_analytics",
        "description": "Get analytics snapshots for a post, an account, or a run. scope must be post, account, or run; id is the matching identifier.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "id",
                  "method",
                  "params"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Client-chosen request id."
                  },
                  "method": {
                    "const": "tools/call"
                  },
                  "params": {
                    "type": "object",
                    "required": [
                      "name",
                      "arguments"
                    ],
                    "properties": {
                      "name": {
                        "const": "get_analytics"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "scope": {
                            "type": "string",
                            "enum": [
                              "post",
                              "account",
                              "run"
                            ]
                          },
                          "id": {
                            "type": "string"
                          },
                          "window": {
                            "type": "string",
                            "description": "Optional analytics window, e.g. 7d."
                          }
                        },
                        "required": [
                          "scope",
                          "id"
                        ],
                        "description": "Arguments for get_analytics."
                      }
                    }
                  }
                }
              },
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/call",
                "params": {
                  "name": "get_analytics",
                  "arguments": {
                    "scope": "post",
                    "id": "post_123"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response with the tool result as MCP content blocks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "JSON-RPC 2.0 response. Tool output is returned as MCP content blocks.",
                  "properties": {
                    "jsonrpc": {
                      "const": "2.0"
                    },
                    "id": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Mirrors the request id."
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "array",
                          "description": "MCP content blocks; tool output is JSON serialized into a text block.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "const": "text"
                              },
                              "text": {
                                "type": "string",
                                "description": "JSON-encoded tool result."
                              }
                            }
                          }
                        },
                        "isError": {
                          "type": "boolean",
                          "description": "True when the tool call failed."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp#refresh_analytics": {
      "post": {
        "operationId": "tool_refresh_analytics",
        "tags": [
          "Inspect"
        ],
        "summary": "refresh_analytics",
        "description": "Fetch fresh analytics for a published post from the provider and store a new snapshot, then return it. Supported providers: Instagram, TikTok, YouTube, Reddit, X, Pinterest, Snapchat (others return an unsupported snapshot). Call this before get_analytics when you need current numbers rather than the last stored snapshot.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "id",
                  "method",
                  "params"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Client-chosen request id."
                  },
                  "method": {
                    "const": "tools/call"
                  },
                  "params": {
                    "type": "object",
                    "required": [
                      "name",
                      "arguments"
                    ],
                    "properties": {
                      "name": {
                        "const": "refresh_analytics"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "postId": {
                            "type": "string",
                            "description": "The published post id to refresh."
                          },
                          "window": {
                            "type": "string",
                            "description": "Optional analytics window, e.g. 7d (default lifetime)."
                          }
                        },
                        "required": [
                          "postId"
                        ],
                        "description": "Arguments for refresh_analytics."
                      }
                    }
                  }
                }
              },
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/call",
                "params": {
                  "name": "refresh_analytics",
                  "arguments": {
                    "postId": "post_123"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response with the tool result as MCP content blocks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "JSON-RPC 2.0 response. Tool output is returned as MCP content blocks.",
                  "properties": {
                    "jsonrpc": {
                      "const": "2.0"
                    },
                    "id": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Mirrors the request id."
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "array",
                          "description": "MCP content blocks; tool output is JSON serialized into a text block.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "const": "text"
                              },
                              "text": {
                                "type": "string",
                                "description": "JSON-encoded tool result."
                              }
                            }
                          }
                        },
                        "isError": {
                          "type": "boolean",
                          "description": "True when the tool call failed."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp#list_instagram_media": {
      "post": {
        "operationId": "tool_list_instagram_media",
        "tags": [
          "Instagram engagement"
        ],
        "summary": "list_instagram_media",
        "description": "List an Instagram account's recent posts (caption, permalink, timestamp, comment count) so you can find one to read or moderate comments on. account is the connected-account id or handle.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "id",
                  "method",
                  "params"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Client-chosen request id."
                  },
                  "method": {
                    "const": "tools/call"
                  },
                  "params": {
                    "type": "object",
                    "required": [
                      "name",
                      "arguments"
                    ],
                    "properties": {
                      "name": {
                        "const": "list_instagram_media"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "account": {
                            "type": "string",
                            "description": "Instagram connected-account id or handle."
                          },
                          "limit": {
                            "type": "number",
                            "description": "Max media to return (default 25, capped at 100)."
                          },
                          "after": {
                            "type": "string",
                            "description": "Pagination cursor from a previous response."
                          }
                        },
                        "required": [
                          "account"
                        ],
                        "description": "Arguments for list_instagram_media."
                      }
                    }
                  }
                }
              },
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/call",
                "params": {
                  "name": "list_instagram_media",
                  "arguments": {
                    "account": "..."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response with the tool result as MCP content blocks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "JSON-RPC 2.0 response. Tool output is returned as MCP content blocks.",
                  "properties": {
                    "jsonrpc": {
                      "const": "2.0"
                    },
                    "id": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Mirrors the request id."
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "array",
                          "description": "MCP content blocks; tool output is JSON serialized into a text block.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "const": "text"
                              },
                              "text": {
                                "type": "string",
                                "description": "JSON-encoded tool result."
                              }
                            }
                          }
                        },
                        "isError": {
                          "type": "boolean",
                          "description": "True when the tool call failed."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp#get_instagram_comments": {
      "post": {
        "operationId": "tool_get_instagram_comments",
        "tags": [
          "Instagram engagement"
        ],
        "summary": "get_instagram_comments",
        "description": "Read the comments and replies people left on one of the user's own Instagram posts, so the user can review and answer them. Use list_instagram_media first to get a mediaId.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "id",
                  "method",
                  "params"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Client-chosen request id."
                  },
                  "method": {
                    "const": "tools/call"
                  },
                  "params": {
                    "type": "object",
                    "required": [
                      "name",
                      "arguments"
                    ],
                    "properties": {
                      "name": {
                        "const": "get_instagram_comments"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "account": {
                            "type": "string",
                            "description": "Instagram connected-account id or handle."
                          },
                          "mediaId": {
                            "type": "string",
                            "description": "The IG media id from list_instagram_media."
                          },
                          "limit": {
                            "type": "number",
                            "description": "Max comments to return (default 25, capped at 100)."
                          },
                          "after": {
                            "type": "string",
                            "description": "Pagination cursor from a previous response."
                          }
                        },
                        "required": [
                          "account",
                          "mediaId"
                        ],
                        "description": "Arguments for get_instagram_comments."
                      }
                    }
                  }
                }
              },
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/call",
                "params": {
                  "name": "get_instagram_comments",
                  "arguments": {
                    "account": "...",
                    "mediaId": "..."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response with the tool result as MCP content blocks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "JSON-RPC 2.0 response. Tool output is returned as MCP content blocks.",
                  "properties": {
                    "jsonrpc": {
                      "const": "2.0"
                    },
                    "id": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Mirrors the request id."
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "array",
                          "description": "MCP content blocks; tool output is JSON serialized into a text block.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "const": "text"
                              },
                              "text": {
                                "type": "string",
                                "description": "JSON-encoded tool result."
                              }
                            }
                          }
                        },
                        "isError": {
                          "type": "boolean",
                          "description": "True when the tool call failed."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp#reply_instagram_comment": {
      "post": {
        "operationId": "tool_reply_instagram_comment",
        "tags": [
          "Instagram engagement"
        ],
        "summary": "reply_instagram_comment",
        "description": "Reply to an Instagram comment on the user's media.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "id",
                  "method",
                  "params"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Client-chosen request id."
                  },
                  "method": {
                    "const": "tools/call"
                  },
                  "params": {
                    "type": "object",
                    "required": [
                      "name",
                      "arguments"
                    ],
                    "properties": {
                      "name": {
                        "const": "reply_instagram_comment"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "account": {
                            "type": "string",
                            "description": "Instagram connected-account id or handle."
                          },
                          "commentId": {
                            "type": "string"
                          },
                          "message": {
                            "type": "string",
                            "description": "The reply text."
                          }
                        },
                        "required": [
                          "account",
                          "commentId",
                          "message"
                        ],
                        "description": "Arguments for reply_instagram_comment."
                      }
                    }
                  }
                }
              },
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/call",
                "params": {
                  "name": "reply_instagram_comment",
                  "arguments": {
                    "account": "...",
                    "commentId": "...",
                    "message": "..."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response with the tool result as MCP content blocks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "JSON-RPC 2.0 response. Tool output is returned as MCP content blocks.",
                  "properties": {
                    "jsonrpc": {
                      "const": "2.0"
                    },
                    "id": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Mirrors the request id."
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "array",
                          "description": "MCP content blocks; tool output is JSON serialized into a text block.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "const": "text"
                              },
                              "text": {
                                "type": "string",
                                "description": "JSON-encoded tool result."
                              }
                            }
                          }
                        },
                        "isError": {
                          "type": "boolean",
                          "description": "True when the tool call failed."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp#hide_instagram_comment": {
      "post": {
        "operationId": "tool_hide_instagram_comment",
        "tags": [
          "Instagram engagement"
        ],
        "summary": "hide_instagram_comment",
        "description": "Hide or unhide an Instagram comment on the user's media. Set hidden=false to unhide.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "id",
                  "method",
                  "params"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Client-chosen request id."
                  },
                  "method": {
                    "const": "tools/call"
                  },
                  "params": {
                    "type": "object",
                    "required": [
                      "name",
                      "arguments"
                    ],
                    "properties": {
                      "name": {
                        "const": "hide_instagram_comment"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "account": {
                            "type": "string",
                            "description": "Instagram connected-account id or handle."
                          },
                          "commentId": {
                            "type": "string"
                          },
                          "hidden": {
                            "type": "boolean",
                            "description": "true to hide (default), false to unhide."
                          }
                        },
                        "required": [
                          "account",
                          "commentId"
                        ],
                        "description": "Arguments for hide_instagram_comment."
                      }
                    }
                  }
                }
              },
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/call",
                "params": {
                  "name": "hide_instagram_comment",
                  "arguments": {
                    "account": "...",
                    "commentId": "..."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response with the tool result as MCP content blocks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "JSON-RPC 2.0 response. Tool output is returned as MCP content blocks.",
                  "properties": {
                    "jsonrpc": {
                      "const": "2.0"
                    },
                    "id": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Mirrors the request id."
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "array",
                          "description": "MCP content blocks; tool output is JSON serialized into a text block.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "const": "text"
                              },
                              "text": {
                                "type": "string",
                                "description": "JSON-encoded tool result."
                              }
                            }
                          }
                        },
                        "isError": {
                          "type": "boolean",
                          "description": "True when the tool call failed."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp#delete_instagram_comment": {
      "post": {
        "operationId": "tool_delete_instagram_comment",
        "tags": [
          "Instagram engagement"
        ],
        "summary": "delete_instagram_comment",
        "description": "Permanently delete an Instagram comment on the user's media. Prefer hide_instagram_comment when unsure.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "id",
                  "method",
                  "params"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Client-chosen request id."
                  },
                  "method": {
                    "const": "tools/call"
                  },
                  "params": {
                    "type": "object",
                    "required": [
                      "name",
                      "arguments"
                    ],
                    "properties": {
                      "name": {
                        "const": "delete_instagram_comment"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "account": {
                            "type": "string",
                            "description": "Instagram connected-account id or handle."
                          },
                          "commentId": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "account",
                          "commentId"
                        ],
                        "description": "Arguments for delete_instagram_comment."
                      }
                    }
                  }
                }
              },
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/call",
                "params": {
                  "name": "delete_instagram_comment",
                  "arguments": {
                    "account": "...",
                    "commentId": "..."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response with the tool result as MCP content blocks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "JSON-RPC 2.0 response. Tool output is returned as MCP content blocks.",
                  "properties": {
                    "jsonrpc": {
                      "const": "2.0"
                    },
                    "id": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Mirrors the request id."
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "array",
                          "description": "MCP content blocks; tool output is JSON serialized into a text block.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "const": "text"
                              },
                              "text": {
                                "type": "string",
                                "description": "JSON-encoded tool result."
                              }
                            }
                          }
                        },
                        "isError": {
                          "type": "boolean",
                          "description": "True when the tool call failed."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp#get_instagram_media_insights": {
      "post": {
        "operationId": "tool_get_instagram_media_insights",
        "tags": [
          "Instagram engagement"
        ],
        "summary": "get_instagram_media_insights",
        "description": "Get analytics for one Instagram post (reach, likes, comments, saved, shares, views). Use list_instagram_media for the mediaId.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "id",
                  "method",
                  "params"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Client-chosen request id."
                  },
                  "method": {
                    "const": "tools/call"
                  },
                  "params": {
                    "type": "object",
                    "required": [
                      "name",
                      "arguments"
                    ],
                    "properties": {
                      "name": {
                        "const": "get_instagram_media_insights"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "account": {
                            "type": "string",
                            "description": "Instagram connected-account id or handle."
                          },
                          "mediaId": {
                            "type": "string"
                          },
                          "mediaProductType": {
                            "type": "string",
                            "description": "Optional: FEED, REELS, or STORY — refines which metrics are requested."
                          }
                        },
                        "required": [
                          "account",
                          "mediaId"
                        ],
                        "description": "Arguments for get_instagram_media_insights."
                      }
                    }
                  }
                }
              },
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/call",
                "params": {
                  "name": "get_instagram_media_insights",
                  "arguments": {
                    "account": "...",
                    "mediaId": "..."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response with the tool result as MCP content blocks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "JSON-RPC 2.0 response. Tool output is returned as MCP content blocks.",
                  "properties": {
                    "jsonrpc": {
                      "const": "2.0"
                    },
                    "id": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Mirrors the request id."
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "array",
                          "description": "MCP content blocks; tool output is JSON serialized into a text block.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "const": "text"
                              },
                              "text": {
                                "type": "string",
                                "description": "JSON-encoded tool result."
                              }
                            }
                          }
                        },
                        "isError": {
                          "type": "boolean",
                          "description": "True when the tool call failed."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp#get_instagram_profile": {
      "post": {
        "operationId": "tool_get_instagram_profile",
        "tags": [
          "Instagram engagement"
        ],
        "summary": "get_instagram_profile",
        "description": "Get an Instagram account's profile stats: followers, follows, media count, bio.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "id",
                  "method",
                  "params"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Client-chosen request id."
                  },
                  "method": {
                    "const": "tools/call"
                  },
                  "params": {
                    "type": "object",
                    "required": [
                      "name",
                      "arguments"
                    ],
                    "properties": {
                      "name": {
                        "const": "get_instagram_profile"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "account": {
                            "type": "string",
                            "description": "Instagram connected-account id or handle."
                          }
                        },
                        "required": [
                          "account"
                        ],
                        "description": "Arguments for get_instagram_profile."
                      }
                    }
                  }
                }
              },
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/call",
                "params": {
                  "name": "get_instagram_profile",
                  "arguments": {
                    "account": "..."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response with the tool result as MCP content blocks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "JSON-RPC 2.0 response. Tool output is returned as MCP content blocks.",
                  "properties": {
                    "jsonrpc": {
                      "const": "2.0"
                    },
                    "id": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Mirrors the request id."
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "array",
                          "description": "MCP content blocks; tool output is JSON serialized into a text block.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "const": "text"
                              },
                              "text": {
                                "type": "string",
                                "description": "JSON-encoded tool result."
                              }
                            }
                          }
                        },
                        "isError": {
                          "type": "boolean",
                          "description": "True when the tool call failed."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp#get_instagram_account_insights": {
      "post": {
        "operationId": "tool_get_instagram_account_insights",
        "tags": [
          "Instagram engagement"
        ],
        "summary": "get_instagram_account_insights",
        "description": "Get an Instagram account's insight trend (a daily time series, e.g. reach) over the last N days.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "id",
                  "method",
                  "params"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Client-chosen request id."
                  },
                  "method": {
                    "const": "tools/call"
                  },
                  "params": {
                    "type": "object",
                    "required": [
                      "name",
                      "arguments"
                    ],
                    "properties": {
                      "name": {
                        "const": "get_instagram_account_insights"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "account": {
                            "type": "string",
                            "description": "Instagram connected-account id or handle."
                          },
                          "metric": {
                            "type": "string",
                            "description": "Account metric, default reach (e.g. reach, profile_views, accounts_engaged)."
                          },
                          "days": {
                            "type": "number",
                            "description": "Window in days (2-30, default 14)."
                          }
                        },
                        "required": [
                          "account"
                        ],
                        "description": "Arguments for get_instagram_account_insights."
                      }
                    }
                  }
                }
              },
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/call",
                "params": {
                  "name": "get_instagram_account_insights",
                  "arguments": {
                    "account": "..."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response with the tool result as MCP content blocks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "JSON-RPC 2.0 response. Tool output is returned as MCP content blocks.",
                  "properties": {
                    "jsonrpc": {
                      "const": "2.0"
                    },
                    "id": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Mirrors the request id."
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "array",
                          "description": "MCP content blocks; tool output is JSON serialized into a text block.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "const": "text"
                              },
                              "text": {
                                "type": "string",
                                "description": "JSON-encoded tool result."
                              }
                            }
                          }
                        },
                        "isError": {
                          "type": "boolean",
                          "description": "True when the tool call failed."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp#react_instagram_message": {
      "post": {
        "operationId": "tool_react_instagram_message",
        "tags": [
          "Instagram engagement"
        ],
        "summary": "react_instagram_message",
        "description": "React to a received Instagram direct message (e.g. love).",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "id",
                  "method",
                  "params"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Client-chosen request id."
                  },
                  "method": {
                    "const": "tools/call"
                  },
                  "params": {
                    "type": "object",
                    "required": [
                      "name",
                      "arguments"
                    ],
                    "properties": {
                      "name": {
                        "const": "react_instagram_message"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "account": {
                            "type": "string",
                            "description": "Instagram connected-account id or handle."
                          },
                          "conversationId": {
                            "type": "string"
                          },
                          "messageId": {
                            "type": "string"
                          },
                          "recipientId": {
                            "type": "string",
                            "description": "The other participant's Instagram-scoped user id (IGSID)."
                          },
                          "reaction": {
                            "type": "string",
                            "description": "Reaction name, default love."
                          }
                        },
                        "required": [
                          "account",
                          "conversationId",
                          "messageId",
                          "recipientId"
                        ],
                        "description": "Arguments for react_instagram_message."
                      }
                    }
                  }
                }
              },
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/call",
                "params": {
                  "name": "react_instagram_message",
                  "arguments": {
                    "account": "...",
                    "conversationId": "...",
                    "messageId": "...",
                    "recipientId": "..."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response with the tool result as MCP content blocks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "JSON-RPC 2.0 response. Tool output is returned as MCP content blocks.",
                  "properties": {
                    "jsonrpc": {
                      "const": "2.0"
                    },
                    "id": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Mirrors the request id."
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "array",
                          "description": "MCP content blocks; tool output is JSON serialized into a text block.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "const": "text"
                              },
                              "text": {
                                "type": "string",
                                "description": "JSON-encoded tool result."
                              }
                            }
                          }
                        },
                        "isError": {
                          "type": "boolean",
                          "description": "True when the tool call failed."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp#list_instagram_mentions": {
      "post": {
        "operationId": "tool_list_instagram_mentions",
        "tags": [
          "Instagram engagement"
        ],
        "summary": "list_instagram_mentions",
        "description": "List recent @mentions of the workspace's Instagram accounts (captured from Instagram mention webhooks).",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "id",
                  "method",
                  "params"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Client-chosen request id."
                  },
                  "method": {
                    "const": "tools/call"
                  },
                  "params": {
                    "type": "object",
                    "required": [
                      "name",
                      "arguments"
                    ],
                    "properties": {
                      "name": {
                        "const": "list_instagram_mentions"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "limit": {
                            "type": "number",
                            "description": "Max mentions (default 30, capped at 100)."
                          }
                        },
                        "description": "Arguments for list_instagram_mentions."
                      }
                    }
                  }
                }
              },
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/call",
                "params": {
                  "name": "list_instagram_mentions",
                  "arguments": {
                    "limit": 20
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response with the tool result as MCP content blocks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "JSON-RPC 2.0 response. Tool output is returned as MCP content blocks.",
                  "properties": {
                    "jsonrpc": {
                      "const": "2.0"
                    },
                    "id": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Mirrors the request id."
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "array",
                          "description": "MCP content blocks; tool output is JSON serialized into a text block.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "const": "text"
                              },
                              "text": {
                                "type": "string",
                                "description": "JSON-encoded tool result."
                              }
                            }
                          }
                        },
                        "isError": {
                          "type": "boolean",
                          "description": "True when the tool call failed."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp#list_instagram_conversations": {
      "post": {
        "operationId": "tool_list_instagram_conversations",
        "tags": [
          "Instagram engagement"
        ],
        "summary": "list_instagram_conversations",
        "description": "List the Instagram direct-message conversations for an account, most recent first. Each conversation includes `counterpart` (the other person's {id, username}) — use its id as the recipientId when replying; `participants` also lists the account itself.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "id",
                  "method",
                  "params"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Client-chosen request id."
                  },
                  "method": {
                    "const": "tools/call"
                  },
                  "params": {
                    "type": "object",
                    "required": [
                      "name",
                      "arguments"
                    ],
                    "properties": {
                      "name": {
                        "const": "list_instagram_conversations"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "account": {
                            "type": "string",
                            "description": "Instagram connected-account id or handle."
                          },
                          "limit": {
                            "type": "number",
                            "description": "Max conversations (default 25, capped at 100)."
                          },
                          "after": {
                            "type": "string",
                            "description": "Pagination cursor from a previous response."
                          }
                        },
                        "required": [
                          "account"
                        ],
                        "description": "Arguments for list_instagram_conversations."
                      }
                    }
                  }
                }
              },
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/call",
                "params": {
                  "name": "list_instagram_conversations",
                  "arguments": {
                    "account": "..."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response with the tool result as MCP content blocks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "JSON-RPC 2.0 response. Tool output is returned as MCP content blocks.",
                  "properties": {
                    "jsonrpc": {
                      "const": "2.0"
                    },
                    "id": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Mirrors the request id."
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "array",
                          "description": "MCP content blocks; tool output is JSON serialized into a text block.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "const": "text"
                              },
                              "text": {
                                "type": "string",
                                "description": "JSON-encoded tool result."
                              }
                            }
                          }
                        },
                        "isError": {
                          "type": "boolean",
                          "description": "True when the tool call failed."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp#get_instagram_messages": {
      "post": {
        "operationId": "tool_get_instagram_messages",
        "tags": [
          "Instagram engagement"
        ],
        "summary": "get_instagram_messages",
        "description": "Read the messages in an Instagram direct-message conversation.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "id",
                  "method",
                  "params"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Client-chosen request id."
                  },
                  "method": {
                    "const": "tools/call"
                  },
                  "params": {
                    "type": "object",
                    "required": [
                      "name",
                      "arguments"
                    ],
                    "properties": {
                      "name": {
                        "const": "get_instagram_messages"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "account": {
                            "type": "string",
                            "description": "Instagram connected-account id or handle."
                          },
                          "conversationId": {
                            "type": "string",
                            "description": "Conversation id from list_instagram_conversations."
                          },
                          "limit": {
                            "type": "number",
                            "description": "Max messages (default 25, capped at 100)."
                          },
                          "after": {
                            "type": "string",
                            "description": "Pagination cursor from a previous response."
                          }
                        },
                        "required": [
                          "account",
                          "conversationId"
                        ],
                        "description": "Arguments for get_instagram_messages."
                      }
                    }
                  }
                }
              },
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/call",
                "params": {
                  "name": "get_instagram_messages",
                  "arguments": {
                    "account": "...",
                    "conversationId": "..."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response with the tool result as MCP content blocks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "JSON-RPC 2.0 response. Tool output is returned as MCP content blocks.",
                  "properties": {
                    "jsonrpc": {
                      "const": "2.0"
                    },
                    "id": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Mirrors the request id."
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "array",
                          "description": "MCP content blocks; tool output is JSON serialized into a text block.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "const": "text"
                              },
                              "text": {
                                "type": "string",
                                "description": "JSON-encoded tool result."
                              }
                            }
                          }
                        },
                        "isError": {
                          "type": "boolean",
                          "description": "True when the tool call failed."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp#send_instagram_message": {
      "post": {
        "operationId": "tool_send_instagram_message",
        "tags": [
          "Instagram engagement"
        ],
        "summary": "send_instagram_message",
        "description": "Send an Instagram direct message — a text reply, or an image/video attachment via attachment_url. Only allowed within 24 hours of the recipient's last message unless a message tag (e.g. HUMAN_AGENT) is supplied.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "id",
                  "method",
                  "params"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Client-chosen request id."
                  },
                  "method": {
                    "const": "tools/call"
                  },
                  "params": {
                    "type": "object",
                    "required": [
                      "name",
                      "arguments"
                    ],
                    "properties": {
                      "name": {
                        "const": "send_instagram_message"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "account": {
                            "type": "string",
                            "description": "Instagram connected-account id or handle."
                          },
                          "conversationId": {
                            "type": "string",
                            "description": "Conversation id (for routing/storage)."
                          },
                          "recipientId": {
                            "type": "string",
                            "description": "The recipient's Instagram-scoped user id (IGSID)."
                          },
                          "text": {
                            "type": "string",
                            "description": "Message body (omit when sending an attachment)."
                          },
                          "attachment_url": {
                            "type": "string",
                            "description": "Public URL of an image/video to send as an attachment."
                          },
                          "attachment_type": {
                            "type": "string",
                            "description": "Attachment type: image (default), video, or audio.",
                            "enum": [
                              "image",
                              "video",
                              "audio"
                            ]
                          },
                          "tag": {
                            "type": "string",
                            "description": "Optional message tag, e.g. HUMAN_AGENT, to reply outside the 24h window."
                          }
                        },
                        "required": [
                          "account",
                          "conversationId",
                          "recipientId"
                        ],
                        "description": "Arguments for send_instagram_message."
                      }
                    }
                  }
                }
              },
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/call",
                "params": {
                  "name": "send_instagram_message",
                  "arguments": {
                    "account": "...",
                    "conversationId": "...",
                    "recipientId": "..."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response with the tool result as MCP content blocks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "JSON-RPC 2.0 response. Tool output is returned as MCP content blocks.",
                  "properties": {
                    "jsonrpc": {
                      "const": "2.0"
                    },
                    "id": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Mirrors the request id."
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "array",
                          "description": "MCP content blocks; tool output is JSON serialized into a text block.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "const": "text"
                              },
                              "text": {
                                "type": "string",
                                "description": "JSON-encoded tool result."
                              }
                            }
                          }
                        },
                        "isError": {
                          "type": "boolean",
                          "description": "True when the tool call failed."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp#workspace_usage": {
      "post": {
        "operationId": "tool_workspace_usage",
        "tags": [
          "Discover"
        ],
        "summary": "workspace_usage",
        "description": "Get workspace usage counters and plan entitlement consumption.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "id",
                  "method",
                  "params"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Client-chosen request id."
                  },
                  "method": {
                    "const": "tools/call"
                  },
                  "params": {
                    "type": "object",
                    "required": [
                      "name",
                      "arguments"
                    ],
                    "properties": {
                      "name": {
                        "const": "workspace_usage"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {},
                        "description": "Arguments for workspace_usage."
                      }
                    }
                  }
                }
              },
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/call",
                "params": {
                  "name": "workspace_usage",
                  "arguments": {}
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response with the tool result as MCP content blocks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "JSON-RPC 2.0 response. Tool output is returned as MCP content blocks.",
                  "properties": {
                    "jsonrpc": {
                      "const": "2.0"
                    },
                    "id": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Mirrors the request id."
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "array",
                          "description": "MCP content blocks; tool output is JSON serialized into a text block.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "const": "text"
                              },
                              "text": {
                                "type": "string",
                                "description": "JSON-encoded tool result."
                              }
                            }
                          }
                        },
                        "isError": {
                          "type": "boolean",
                          "description": "True when the tool call failed."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp#workspace_health": {
      "post": {
        "operationId": "tool_workspace_health",
        "tags": [
          "Discover"
        ],
        "summary": "workspace_health",
        "description": "Get workspace health, including connection state across providers. Pass provider to check one provider's connections.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "id",
                  "method",
                  "params"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Client-chosen request id."
                  },
                  "method": {
                    "const": "tools/call"
                  },
                  "params": {
                    "type": "object",
                    "required": [
                      "name",
                      "arguments"
                    ],
                    "properties": {
                      "name": {
                        "const": "workspace_health"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "provider": {
                            "type": "string",
                            "description": "Optional provider to check connection health for."
                          }
                        },
                        "description": "Arguments for workspace_health."
                      }
                    }
                  }
                }
              },
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/call",
                "params": {
                  "name": "workspace_health",
                  "arguments": {
                    "provider": "linkedin"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response with the tool result as MCP content blocks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "JSON-RPC 2.0 response. Tool output is returned as MCP content blocks.",
                  "properties": {
                    "jsonrpc": {
                      "const": "2.0"
                    },
                    "id": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Mirrors the request id."
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "array",
                          "description": "MCP content blocks; tool output is JSON serialized into a text block.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "const": "text"
                              },
                              "text": {
                                "type": "string",
                                "description": "JSON-encoded tool result."
                              }
                            }
                          }
                        },
                        "isError": {
                          "type": "boolean",
                          "description": "True when the tool call failed."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp#get_profile": {
      "post": {
        "operationId": "tool_get_profile",
        "tags": [
          "Tools"
        ],
        "summary": "get_profile",
        "description": "Identify the connected SocialClaw workspace: its stable id, name, and plan. Use it to confirm which workspace you are acting on.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jsonrpc",
                  "id",
                  "method",
                  "params"
                ],
                "properties": {
                  "jsonrpc": {
                    "const": "2.0"
                  },
                  "id": {
                    "type": [
                      "string",
                      "number"
                    ],
                    "description": "Client-chosen request id."
                  },
                  "method": {
                    "const": "tools/call"
                  },
                  "params": {
                    "type": "object",
                    "required": [
                      "name",
                      "arguments"
                    ],
                    "properties": {
                      "name": {
                        "const": "get_profile"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {},
                        "description": "Arguments for get_profile."
                      }
                    }
                  }
                }
              },
              "example": {
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/call",
                "params": {
                  "name": "get_profile",
                  "arguments": {}
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC response with the tool result as MCP content blocks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "JSON-RPC 2.0 response. Tool output is returned as MCP content blocks.",
                  "properties": {
                    "jsonrpc": {
                      "const": "2.0"
                    },
                    "id": {
                      "type": [
                        "string",
                        "number"
                      ],
                      "description": "Mirrors the request id."
                    },
                    "result": {
                      "type": "object",
                      "properties": {
                        "content": {
                          "type": "array",
                          "description": "MCP content blocks; tool output is JSON serialized into a text block.",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "const": "text"
                              },
                              "text": {
                                "type": "string",
                                "description": "JSON-encoded tool result."
                              }
                            }
                          }
                        },
                        "isError": {
                          "type": "boolean",
                          "description": "True when the tool call failed."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}