# API Onboarding Source: https://docs.woopsocial.com/api-reference/api-onboarding ## Regular API Setup 1. Copy your API key from the platform (need a new one? [Get your API key here](https://app.woopsocial.com/api-access)) 2. Connect one of your social media accounts to WoopSocial (click Connect Accounts [in the WoopSocial Dashboard menu](https://app.woopsocial.com/) or [create an OAuth URL](https://docs.woopsocial.com/api-reference/social-accounts/generate-oauth-url)) 3. Use the [List projects playground](/api-reference/projects/list-projects?playground=open) to determine your project's ID (you can also copy your project ID from the top-left Project dropdown in the platform after you've finished onboarding). 1. Enter your API key from step 1 into the "Authorization" field 2. Click on the "Send" button. If the request is successful, it will list your projects' IDs and names. Copy one of the IDs, you will need it for the next step. 4. Many social platforms require a photo or video to publish a post. Use the [Upload media playground](/api-reference/media/upload-media?playground=open) to upload your file. 1. Enter the project id from the previous step in the `projectId` field. 2. Select a file in the `Body` section of the form. 3. Click "Send" and copy the returned media ID, which you will need when submitting a post. 5. Run ‘[Get social accounts](https://docs.woopsocial.com/api-reference/social-accounts/list-social-accounts)’ or copy your social account ID from the "Connect Accounts" pop-up in the platform. You will need this social account ID to schedule a post. 6. Use the [Create post playground](/api-reference/posts/create-post?playground=open) to schedule a post. 1. Choose your targeted social platform and programming language in the top-right corner of the playground form. 2. Fill in the required values on the left-hand side including the `mediaId` acquired previously (unless you are submitting a text-only post). 3. Click the "Send" button to schedule the post. Issues? Just use the chat button in the bottom right and we’ll help you out. ## Zapier setup 1. Create a new Zap → Search for “WoopSocial” 2. Click “Account” and “Connect WoopSocial”/”Sign in” 3. Enter your API key (go here to create a new one if needed) → Connect 4. Select “Create a new social media post” → Continue 5. Select your Business Profile and your Social Media Account(s) 6. Choose a Selected Time or type “Now” 7. Enter the Post Content and select a Media File if needed → Continue 8. Click “Test Step” Issues? Just use the chat button in the bottom right and we’ll help you out. ## n8n setup 1. Create a new workflow → Search for “@woopsocial/n8n-nodes-woopsocial” 2. Connect it by entering your API key 3. Set up new modules to get your project ID (or go to the dashboard and go to the dropdown in the top left to copy it) 4. Grab your social account ID (or copy it from the Connect Accounts modal in your dashboard) 5. Set up a new “Create a social media post” module 6. Enter your Project ID and Social Account ID(s) 7. Enter your post content and add an optional media file 8. Test it by publishing a new post Issues? Just use the chat button in the bottom right and we’ll help you out. # Health check Source: https://docs.woopsocial.com/api-reference/health/health-check /openapi.yaml get /health Returns a minimal response proving the WoopSocial API is reachable. # Complete media upload session Source: https://docs.woopsocial.com/api-reference/media/complete-media-upload-session /openapi.yaml post /media/upload-sessions/{uploadSessionId}/complete Call this to finalize the upload started by calling [`/media/upload-sessions`](/api-reference/media/start-media-upload-session). # Delete media Source: https://docs.woopsocial.com/api-reference/media/delete-media /openapi.yaml delete /media/{mediaId} Deletes one media item by ID. # Get media upload session status Source: https://docs.woopsocial.com/api-reference/media/get-media-upload-session-status /openapi.yaml get /media/upload-sessions/{uploadSessionId} # List media Source: https://docs.woopsocial.com/api-reference/media/list-media /openapi.yaml get /media Returns media library items that belong to the API key's organization. When `projectId` is provided, only media in that project is returned. # Start media upload session Source: https://docs.woopsocial.com/api-reference/media/start-media-upload-session /openapi.yaml post /media/upload-sessions This endpoint can be used to upload both smaller and larger files (up to 5GB) in a chunked manner. Calling this creates an upload session and returns presigned URLs for uploading the file in parts. Upload the file in `partCount` parts, using the matching `parts[n].uploadUrl` for each part number. Every part except the last must be exactly `partSizeInBytes` bytes. The last part may be smaller. After all parts have been uploaded, call `/media/upload-sessions/{uploadSessionId}/complete` to finalize the upload and create the media item. # Upload media Source: https://docs.woopsocial.com/api-reference/media/upload-media /openapi.yaml post /media Uploads a media file in a single request and creates a media item. The server determines the media MIME type from the uploaded file. Send a `multipart/form-data` request with the file in the `file` field. Example: ```bash curl -X POST 'https://api.woopsocial.com/v1/media?projectId=YOUR_PROJECT_ID' \ -H 'Authorization: Bearer YOUR_API_KEY' \ -F 'file=@/path/to/image.jpg' ``` Use this endpoint for straightforward uploads up to 100 MB. For larger files, or when you need presigned part URLs, use the upload session flow under `/media/upload-sessions`. # API Overview Source: https://docs.woopsocial.com/api-reference/overview Schedule posts, upload media, generate content and more > **[Download OpenAPI Spec](https://api.woopsocial.com/v1/openapi.yaml)** > > Get the raw openapi.yaml file to import into your favorite API client. ## Base URL All API requests should be made to: ``` https://api.woopsocial.com/v1 ``` ## Authentication You will need an API key to authenticate your requests. You can acquire one from the [WoopSocial dashboard](https://app.woopsocial.com/api-access). All endpoints should include the API key in the `Authorization` header: ```bash theme={null} Authorization: Bearer YOUR_API_KEY ``` ## Concurrency limits Each API key can have up to five REST API requests in progress at the same time. This allowance is shared across endpoints. For example, three media uploads and two post creation requests use all five available slots. When all five slots are in use, additional requests are rejected immediately with `429 Too Many Requests` and a `Retry-After: 1` header. Wait at least one second before retrying. A slot becomes available when an in-progress request finishes. # Create post Source: https://docs.woopsocial.com/api-reference/posts/create-post /openapi.yaml post /posts Creates a (parent) post with one or more social account (child) posts. All referenced social accounts must belong to the same project. The request is validated atomically. If any social account fails validation, the post is not created. # Delete post Source: https://docs.woopsocial.com/api-reference/posts/delete-post /openapi.yaml delete /posts/{postId} Deletes one scheduled post by post ID. A post can only be deleted when all of its social account deliveries are still `NOT_STARTED`. # Delete social account post Source: https://docs.woopsocial.com/api-reference/posts/delete-social-account-post /openapi.yaml delete /social-account-posts/{socialAccountPostId} Deletes one social account post by ID. # Get post Source: https://docs.woopsocial.com/api-reference/posts/get-post /openapi.yaml get /posts/{postId} Returns one post with its social account posts inline. # List social account posts Source: https://docs.woopsocial.com/api-reference/posts/list-social-account-posts /openapi.yaml get /social-account-posts Returns standalone social account posts for the API key's organization. Each item includes the content, schedule, delivery status and latest stored analytics for a given social account target. # Validate post Source: https://docs.woopsocial.com/api-reference/posts/validate-post /openapi.yaml post /posts/validate Validates a post without creating one. This endpoint applies the same validation rules as [`POST /posts`](/api-reference/posts/create-post), including social account resolution, platform-specific validation, and media validation for referenced media library items. # Create project Source: https://docs.woopsocial.com/api-reference/projects/create-project /openapi.yaml post /projects Creates a project in the API key's organization. Use projects to isolate social accounts, media, and posts for a specific user, client, or brand in your application. # Delete project Source: https://docs.woopsocial.com/api-reference/projects/delete-project /openapi.yaml delete /projects/{projectId} Permanently deletes one project and its related data, including connected social accounts, OAuth grants, media references, and posts. # List projects Source: https://docs.woopsocial.com/api-reference/projects/list-projects /openapi.yaml get /projects Returns projects that belong to the same organization as the API key. A project corresponds to a "Business Profile" in the UI. # Delete social account Source: https://docs.woopsocial.com/api-reference/social-accounts/delete-social-account /openapi.yaml delete /social-accounts/{socialAccountId} Deletes one social account connection by ID. This removes the associated OAuth grant, including stored access and refresh tokens, so the account no longer counts toward the organization's active connected-account allowance. # Generate OAuth URL Source: https://docs.woopsocial.com/api-reference/social-accounts/generate-oauth-url /openapi.yaml post /social-accounts/authorization-url Generates a browser authorization URL for connecting a new social account to a project. This endpoint is useful for multi-user integrations where your application lets your own users, clients, or brands connect their social accounts to WoopSocial without giving them access to your WoopSocial account. A common flow is: 1. Create or select a WoopSocial project for your user, client, or brand. 2. Call this endpoint from your backend with that `projectId`, the target `platform`, and a `redirectUrl` in your application. 3. Open the returned `url` in your user's browser. 4. After OAuth completes, WoopSocial redirects the browser back to `redirectUrl` with result query parameters. 5. Use `projectId` and `socialAccountIds` from the redirect, or call [`GET /social-accounts?projectId=...`](/api-reference/social-accounts/list-social-accounts), to store or confirm the connected account in your application. When `redirectUrl` is provided, the browser is redirected back to that URL after the OAuth callback is handled. For Facebook, WoopSocial shows a page-selection screen after authorization because Facebook may return more pages than the user appeared to select in the Facebook dialog in cases where the user has authorized with WoopSocial previously. The selected pages are connected to the single `projectId` from this request, then WoopSocial redirects back to `redirectUrl` when one was provided. When `redirectUrl` is provided, WoopSocial appends these query parameters on success: - `status=success` - `projectId`: the project identifier from the request - `platform`: the connected social platform - `socialAccountIds`: comma-separated connected social account identifiers. This may contain one or more IDs depending on the platform OAuth flow. When `redirectUrl` is provided, WoopSocial appends these query parameters on failure: - `status=error` - `projectId`: the project identifier from the request - `platform`: the requested social platform - `error`: an OAuth callback error code If the OAuth callback state is missing or expired, WoopSocial cannot safely determine the original `redirectUrl`, so the callback returns an HTTP error instead of redirecting. The redirect never includes OAuth tokens or credentials. # Get platform-specific input options Source: https://docs.woopsocial.com/api-reference/social-accounts/get-platform-specific-input-options /openapi.yaml get /social-accounts/{socialAccountId}/platform-inputs Returns platform-specific input options for a connected social account. Use this endpoint to discover valid values for flattened post-target fields such as `pinterestBoardId` and `privacyLevel`. # List social accounts Source: https://docs.woopsocial.com/api-reference/social-accounts/list-social-accounts /openapi.yaml get /social-accounts Returns social accounts that can currently be used for publishing. When `projectId` is provided, only social accounts usable within that project are returned. # Delete webhook endpoint Source: https://docs.woopsocial.com/api-reference/webhooks/delete-webhook-endpoint /openapi.yaml delete /webhooks/{webhookId} # List webhook endpoints Source: https://docs.woopsocial.com/api-reference/webhooks/list-webhook-endpoints /openapi.yaml get /webhooks Returns all registered webhook endpoints for the organization. The `signingSecret` field is omitted. # Register webhook endpoint Source: https://docs.woopsocial.com/api-reference/webhooks/register-webhook-endpoint /openapi.yaml post /webhooks Registers a URL to receive webhook events for the specified event types. The response includes a `signingSecret` (base64-encoded, 32 bytes) that is returned **once only**. Use it to verify the `X-Woop-Signature` header on incoming webhook payloads. **Signature format:** `t=,v1=` **Signed payload:** `.` # WoopSocial Source: https://docs.woopsocial.com/index Schedule posts and generate content faithful to your brand WoopSocial is a social media management platform. You can use it to: * Create and schedule posts on various social platforms such as Facebook, Instagram, LinkedIn, LinkedIn Pages, Pinterest, TikTok, X (formerly Twitter) and YouTube through our UI * Automate your workflows through our powerful API * Give your AI agent the ability to manage your socials via our MCP > **[API Reference](/api-reference/overview)** > > Browse all available endpoints. > **[MCP Overview](/mcp/overview)** > > Learn how to connect AI assistants and autonomous agents to WoopSocial with API key auth. # Integrating MCP in AI Agents, Claude, ChatGPT Source: https://docs.woopsocial.com/mcp/integrating-clients Set up Claude Desktop, Claude Code, Cursor, ChatGPT, and other MCP clients with WoopSocial Use this page to connect the WoopSocial MCP server to your AI agent, Claude, ChatGPT or your CLI. ## Prerequisites * A WoopSocial account * A connected social media account on WoopSocial * Access to the AI Agent/AI Chat/CLI you want to configure ## Select your AI tool or Agent * [Claude Chat / Cowork](#claude-cowork) * [Claude Code](#claude-code) * [Codex](#codex) * [All AI Agents](#ai-agents) * [ChatGPT](#chatgpt) * [Notion](#notion) * [Gemini CLI](#gemini-cli) * [Cursor](#cursor) ## Claude Chat / Cowork 1. Grab your MCP link from your [API Key Page](https://app.woopsocial.com/api-access) 2. Make sure you have at least one social media account connected ([Connect accounts in your dashboard](https://app.woopsocial.com)) 3. Then go to your Claude app 4. Go to **Settings** in Claude → **Connectors** → **Customize** 5. Click **Add Connector** → **Add Custom Connector** 6. Name it ‘woopsocial’ and use [https://api.woopsocial.com/mcp](https://api.woopsocial.com/mcp) as the URL 7. Click **Add** and **Authorize** on the next page 8. **Start a new Chat** in Claude → Ask it to write a test post to your social account for tomorrow 9. It will find your **Project ID** and **Social Account ID** and will schedule a test post for tomorrow 10. If you want, you can delete the post straight away **Note:** You might need to add the media server (where your images and videos are stored) to your allowed domains by going to **Settings** → **Capabilities** → **Domain Allowlist** → **Add**`*.cloudflarestorage.com`(including the asterisk/star) Issues? Just use the chat button in the bottom right and we’ll help you out. ## Claude Code CLI Use the `claude mcp add` command to register WoopSocial with Claude Code. ```bash theme={null} claude mcp add --transport http woopsocial "https://api.woopsocial.com/mcp" ``` 1. Ensure that you have a [WoopSocial account](https://app.woopsocial.com) and you are logged in 2. Connect a social media account [through your WoopSocial dashboard](https://app.woopsocial.com) 3. Start `claude` 4. In Claude, type `/mcp` 5. Select the `woopsocial · △ needs authentication` menu item 6. Select `Authenticate` 7. This should take you to WoopSocial where you can Authorize the MCP connection. Click the "**Authorize**" button. 8. Return to Claude 9. Ask Claude to do something with the MCP. For example tell it to "List my social accounts in woopsocial" or "Create a new post for my Facebook account and schedule it for tomorrow 1pm" Issues? Just use the chat button in the bottom right and we’ll help you out. ## Codex CLI 1. Ensure that you have a [WoopSocial account](https://app.woopsocial.com) and you are logged in 2. Connect a social media account [through your WoopSocial dashboard](https://app.woopsocial.com) 3. Use the `codex mcp add` command to register WoopSocial with Codex. ```bash theme={null} codex mcp add woopsocial --url https://api.woopsocial.com/mcp codex mcp login woopsocial ``` 4. This should take you to WoopSocial where you can Authorize the MCP connection. Click the "**Authorize**" button. 5. Ask Codex to do something with the MCP. For example tell it to "List my social accounts in woopsocial" or "Create a new post for my Facebook account and schedule it for tomorrow 1pm" Issues? Just use the chat button in the bottom right and we’ll help you out. ## Get your MCP URL for other AI agents Claude Code above used our OAuth-based MCP authentication but this is not yet compatible with all AI agents. In such cases, please follow the procedure below which will generate an MCP URL for you backed by an API key. 1. Open the [WoopSocial dashboard API page](https://app.woopsocial.com/api-access). 2. Click on the "Create API key" button. 3. Give the key a name so you can identify it later. ![Name the API key](https://mintlify.s3.us-west-1.amazonaws.com/woopsocial/images/social-media-mcp/API%20Name%20Social%20Media%20MCP.png) 4. Copy the MCP URL from the key details page. ![Copy the MCP URL from the API key details page](https://mintlify.s3.us-west-1.amazonaws.com/woopsocial/images/social-media-mcp/Social%20Media%20MCP%20Link.png) The MCP URL uses this format: ```text theme={null} https://api.woopsocial.com/mcp?api_key=YOUR_API_KEY ``` 5. Make sure you have at least one social media account connected ([Connect accounts in your dashboard](https://app.woopsocial.com)) 6. Return to your AI agent 7. Ask your AI agent to do something with the MCP. For example tell it to "List my social accounts in woopsocial" or "Create a new post for my Facebook account and schedule it for tomorrow 1pm" Issues? Just use the chat button in the bottom right and we’ll help you out. ## ChatGPT 1. Grab your MCP link from your [API Key Page](https://app.woopsocial.com/api-access) 2. Make sure you have at least one social media account connected ([Connect accounts in your dashboard](https://app.woopsocial.com)) 3. Now go to your ChatGPT dashboard 4. Open `Settings`. ![Open ChatGPT settings](https://mintlify.s3.us-west-1.amazonaws.com/woopsocial/images/social-media-mcp/ChatGPT%20Social%20Media%20MCP%20setup%20image%201.png) 5. Open `Apps`. 6. Enable `Developer Mode` if it is not already enabled. ![Enable Developer Mode in ChatGPT](https://mintlify.s3.us-west-1.amazonaws.com/woopsocial/images/social-media-mcp/ChatGPT%20Social%20Media%20MCP%20setup%20image%202.png) 7. Select `Create App`. 8. Enter these values: * Name: `WoopSocial` * Description: `Publish social media content` * MCP Server URL: paste the MCP URL you copied earlier * Authentication: `No Auth` ![Create the WoopSocial app in ChatGPT](https://mintlify.s3.us-west-1.amazonaws.com/woopsocial/images/social-media-mcp/ChatGPT%20Social%20Media%20MCP%20setup%20image%203.png) 9. Save the app. 10. Return to ChatGPT and start a new chat 11. Ask ChatGPT to do something with the MCP. For example tell it to "List my social accounts in woopsocial" or "Create a new post for my Facebook account and schedule it for tomorrow 1pm" ![Test the ChatGPT app by listing social accounts](https://mintlify.s3.us-west-1.amazonaws.com/woopsocial/images/social-media-mcp/ChatGPT%20Social%20Media%20MCP%20setup%20image%204.png) Issues? Just use the chat button in the bottom right and we’ll help you out. ## Notion 1. Grab your MCP link from your [API Key Page](https://app.woopsocial.com/api-access) 2. Make sure you have at least one social media account connected ([Connect accounts in your dashboard](https://app.woopsocial.com)) 3. Now go to your Notion dashboard 4. Go to Settings → Connections → + Add Custom MCP 5. Enter your unique MCP Server URL (from step 1) and name it “woopSocial” 6. Click Connect and complete the OAuth flow 7. Ask the chat to “Find my project ID and find my social account IDs with the Woopsocial tools. Then schedule a test post for tomorrow” 8. Delete the test post and start creating your own content Issues? Just use the chat button in the bottom right and we’ll help you out. ## Gemini CLI 1. Grab your MCP link from your [API Key Page](https://app.woopsocial.com/api-access) 2. Make sure you have at least one social media account connected ([Connect accounts in your dashboard](https://app.woopsocial.com)) 3. Run:\ `gemini mcp add woopsocial npx -y mcp-remote ` `https://api.woopsocial.com/mcp` 4. Or `edit ~/.gemini/settings.json manually` and add:\ `{  "mcpServers": {    "woopsocial": {      "command": "npx",      "args": ["-y", "mcp-remote", "https://api.woopsocial.com/mcp"]    }  }}` 5. Put the following prompt in Gemini: “Find my project ID and find my social account IDs with the Woopsocial tools. Then schedule a test post for tomorrow” 6. Delete the test post and start creating your own content Issues? Just use the chat button in the bottom right and we’ll help you out. ## Cursor 1. Make sure you have at least one social media account connected ([Connect accounts in your dashboard](https://app.woopsocial.com)) 2. Simply [go to our official Cursor Directory Page](https://cursor.directory/plugins/woopsocial-social-media-scheduler) 3. Click “**Add to Cursor**” 4. Run through the authorization sequence 5. Put the following prompt in Cursor: “Find my project ID and find my social account IDs with the Woopsocial tools. Then schedule a test post for tomorrow” 6. Delete the test post and start creating your own content Issues? Just use the chat button in the bottom right and we’ll help you out. # Media upload fix for Claude and ChatGPT If the client has an allowlist for outbound domains, add `*.cloudflarestorage.com` so media uploads work. # MCP Overview Source: https://docs.woopsocial.com/mcp/overview Connect AI assistants and autonomous agents to WoopSocial through Model Context Protocol # WoopSocial MCP WoopSocial exposes a Model Context Protocol (MCP) server so AI assistants and autonomous agents can manage social content with structured tools instead of ad hoc HTTP calls. ## Endpoint | Item | Value | | - | - | | **MCP URL** | `https://api.woopsocial.com/mcp` | | **Transport** | Streamable HTTP | This endpoint implements OAuth, so your MCP client will ask you to log into your [WoopSocial account](https://app.woopsocial.com/login) to establish the connection. ## What the server does The WoopSocial MCP server mirrors the same core capabilities as our API: * **Projects** - manage your organization's projects. * **Social Accounts** - list connected social accounts and their platform-specific options. * **Posts** - create, list, read, validate, and delete scheduled content. * **Media** - upload files and manage media attached to posts. * **Webhooks** - register delivery callbacks for post events. * **Health** - verify connectivity. ## Relationship to the REST API * **Parity**: MCP tools use the same backend logic as `https://api.woopsocial.com/v1`. * **Choose MCP** when you want your AI agent to talk to WoopSocial. * **Choose API** for servers, webhooks, apps. ## API key-based authentication fallback WoopSocial implements OAuth for authenticating clients, so the `https://api.woopsocial.com/mcp` endpoint should just work. However, if your MCP client can't connect to this URL, it's possible to authenticate using API keys as a fallback mechanism. Create your API key in [WoopSocial dashboard -> API](https://app.woopsocial.com/api-access). MCP uses the same API key and permissions as the REST API. | Item | Value | | - | - | | **MCP URL** | `https://api.woopsocial.com/mcp?api_key=YOUR_API_KEY` | | **Transport** | Streamable HTTP | > [!WARNING] > > Treat API keys like production passwords. They can publish posts, delete content, and disconnect accounts when tools are invoked. ## Next steps > **[Client setup](/mcp/integrating-clients)** > > Claude Desktop, Claude Code, Cursor, and other Streamable HTTP clients. > **[Tools reference](/mcp/tools-reference)** > > Full list of MCP tool names grouped by domain. # MCP Tools Reference Source: https://docs.woopsocial.com/mcp/tools-reference Tool names exposed by the WoopSocial MCP server # MCP Tools Reference ## Posts | Tool | Description | | - | - | | `posts_create` | Creates a (parent) post with one or more social account (child) posts. | | `posts_validate` | Validates a post without creating one. This tool applies the same validation rules as `posts_create`, including social account resolution, platform-specific validation, and media validation for referenced media library items. | | `posts_get` | Returns one post with its social account posts inline. | | `posts_delete` | Deletes one scheduled post by post ID. | | `social_account_posts_list` | Returns standalone social account posts for the API key's organization. | | `social_account_posts_delete` | Deletes one social account post by ID. | ## Projects | Tool | Description | | - | - | | `projects_create` | Creates a project in the API key's organization. | | `projects_list` | Returns projects that belong to the same organization as the API key. A project corresponds to a "Business Profile" in the UI. | | `projects_delete` | Permanently deletes one project and its related data, including connected social accounts, OAuth grants, media references, and posts. | ## Social Accounts | Tool | Description | | - | - | | `oauth_create_authorization` | Generates a browser authorization URL for connecting a new social account to a project. Flow: 1. Call this tool with the `projectId` and target `platform`. Omit `redirectUrl` unless the user asks for one. 2. Give the returned `url` to the user and ask them to open it in their browser and complete the authorization. 3. Once the user says they are done, call `social_accounts_list` with the `projectId` to confirm the connected account. For Facebook, WoopSocial shows a page-selection screen after authorization. The selected pages are connected to the `projectId`. | | `social_accounts_list` | Returns social accounts that can currently be used for publishing. | | `social_accounts_delete` | Deletes one social account connection by ID. | | `social_accounts_get_platform_inputs` | Returns platform-specific input options for a connected social account. | ## Media | Tool | Description | | - | - | | `media_list` | Returns media library items that belong to the API key's organization. | | `media_delete` | Deletes one media item by ID. | | `media_uploads_create_session` | This endpoint can be used to upload both smaller and larger files (up to 5GB) in a chunked manner. Calling this creates an upload session and returns presigned URLs for uploading the file in parts. Upload the file in `partCount` parts by sending an HTTP PUT with the raw bytes of each part to the matching `parts[n].uploadUrl`. Every part except the last must be exactly `partSizeInBytes` bytes. The last part may be smaller. After all parts have been uploaded, call `media_uploads_complete_session` to finalize the upload and create the media item. The presigned URLs expire at `expiresAt`. Uploading the parts requires making HTTP requests yourself (for example with curl in a shell or code execution tool). If you cannot make HTTP requests, tell the user the upload is not possible from this client. The presigned URLs are hosted on Cloudflare R2 (`.r2.cloudflarestorage.com`). If a network allowlist blocks the PUT, ask the user to allow `*.r2.cloudflarestorage.com`: - claude.ai / Claude Desktop chat: Settings > Capabilities, in the code execution network settings. - Claude Code: the sandbox's allowed network domains in settings.json. | | `media_uploads_get_session` | Get media upload session status | | `media_uploads_complete_session` | Completes the upload session started by `media_uploads_create_session`. | ## Webhooks | Tool | Description | | - | - | | `webhooks_create_endpoint` | Registers a URL to receive webhook events for the specified event types. | | `webhooks_list_endpoints` | Returns all registered webhook endpoints for the organization. The `signingSecret` field is omitted. | | `webhooks_delete_endpoint` | Delete webhook endpoint | ## Health | Tool | Description | | - | - | | `health_get` | Returns a minimal response proving the WoopSocial API is reachable. |