MCP server
Expose CuteDyno to AI agents as MCP tools — same API, same permissions, same errors as REST.
CuteDyno MCP exposes the same API as tools. Agents can list accounts, upload media through a hosted browser page, create posts, read analytics, and check status without custom integration code. Tools come from the same registry as REST, so permissions and errors match /v1.
Hosted MCP endpoint
Recommended for Cursor, Claude, and cloud agents
https://api.cutedyno.com/mcpAuthenticate with the same Bearer API key as REST. Create one under Developers → API.
Drop into Cursor or Claude MCP settings
{
"mcpServers": {
"cutedyno": {
"url": "https://api.cutedyno.com/mcp",
"headers": { "Authorization": "Bearer cdyn_live_..." }
}
}
}Hosted HTTP
Point any MCP client at the URL above. Best for cloud agents and Cursor.
Stdio (local)
Spawn a local process when your runtime cannot call HTTP MCP.
npx -y cutedyno mcpTools
Tool detail pages are linked from this index (they are not listed in the sidebar).
Profiles
list_profilesread onlyLists every profile this API key can act on. Start here when the key serves multiple customers, then pass profileId to the other tools.create_profileCreates a profile for a new customer. Requires an account-wide API key.get_profileread onlyReturns the profile this request resolves to, including its name and description.update_profileRenames a profile or changes its description.
Accounts
list_accountsread onlyReturns the social accounts connected to a profile. Use each `id` in accountIds when creating a post, and `accountId` when filtering comments.start_connectStarts a hosted OAuth flow and returns authUrl plus a session id. Send the user to authUrl; the account appears in list_accounts once they finish.create_connect_sessionStarts an OAuth flow for one profile and returns the URL to redirect your customer to. Equivalent to start_connect for most agents.get_connect_sessionread onlyChecks whether a connect flow finished. Prefer the connection.completed webhook over polling this.
Posts
list_postsread onlyReturns posts for a profile, newest first, with filters for status, content type, and platform.get_postread onlyReturns one post with its content, media, target accounts, and per-account publish results.create_postCreates a post. Omit publishNow and scheduledAt to save a draft, set scheduledAt to schedule, or set publishNow to publish right away.update_postEdits a draft or scheduled post. Published, processing, and partially published posts cannot be edited.cancel_postCancels a scheduled or queued post before it publishes.validate_postread onlyDry-runs the same checks as create_post without writing anything. Use it before creating a post you are unsure about.publish_postMoves a draft into the publishing queue. When the profile requires approval and you pass approvers, the post waits for them instead.retry_postRequeues a failed or partially published post. Only the accounts that failed are retried.get_post_historyread onlyReturns every state transition for a post. This is the fastest way to explain why something failed.
Comments
Media
upload_mediaReturns a presigned URL for programmatic uploads. PUT the file bytes to signedUrl, then pass publicUrl in a post. For AI clients without file access, use create_upload_session instead.create_upload_sessionReturns uploadUrl for the user to open in a browser and upload images or video. Poll get_upload_session until status is completed, then use files[].url in create_post.get_upload_sessionread onlyChecks whether a browser upload finished. When status is completed, files contains the public URLs to attach to a post.
Analytics
Webhooks
list_webhooksread onlyReturns the webhook endpoints registered for a profile.create_webhookRegisters an endpoint to receive events. Set scope to account to receive events from every profile through one endpoint.test_webhookDelivers a synthetic event so the receiver can be verified before real activity happens.list_webhook_deliveriesread onlyReturns the delivery log for one subscription, with response codes, attempt counts, and the next scheduled retry.delete_webhookRemoves a webhook endpoint. In-flight retries stop.
Policy
Observability
Read-only tools are safe to auto-approve. Writes can publish to live accounts.
Resources and prompts
| URI | Contents |
|---|---|
cutedyno://docs/workflow | How to go from a connected account to a published post |
cutedyno://docs/content-types | Payload shapes for text, image, and video posts |
cutedyno://docs/errors | What each error code means and whether to retry |
| Prompt | What it does | Arguments |
|---|---|---|
draft-social-post | Write a post for one platform and create it as a draft in CuteDyno | platform, topic, tone? |
weekly-content-plan | Plan a week of posts and create them as drafts | themes, platforms |
audit-recent-activity | Summarise what happened on a profile and flag failures | profileId? |
Guardrails
- Prefer a dedicated key per agent or environment so you can revoke one without taking everything down.
- Limit with
profileIds,allowedAccountIds, andmaxPostsPerDaywhen the caller is an LLM. - Require human approval through profile policy — call
get_policyor setrequireApprovalwithPUT /v1/policy.
Troubleshooting
| Symptom | Fix |
|---|---|
| No tools | Config JSON invalid, or servers vs mcpServers mismatch. Run npx -y cutedyno mcp --tools with your API key set. |
invalid_api_key | Key missing, revoked, or has stray whitespace. |
insufficient_permission | Key lacks access for that action. |
| Unexpected drafts | Profile requires approval. Call get_policy. |
| Local API failures | Set CUTEDYNO_API_URL (e.g. http://localhost:3000). |