All uPubly MCP server tools — input schemas, outputs and examples.
Calls via tools/call on the POST /mcp endpoint. All accept an optional
workspace_id (uuid) — omitted uses the user's default workspace.
post_accounts_listLists connected social accounts — discovers the account_id for
scheduling.
{ "workspace_id": "optional" }→ { "accounts": [{ "account_id", "platform", "username" }] }
post_listLists posts (templates) with their schedules.
{ "workspace_id": "?", "page": 0, "size": 20, "search": "optional" }post_createCreates a post and, if schedules is present, schedules the
publication right away. Without schedules it becomes a draft.
{
"description": "Main post text",
"caption": "Caption (optional)",
"name": "Internal name (optional)",
"media": ["file_id_1", "file_id_2"],
"schedules": [
{
"account_id": "account uuid (post_accounts_list)",
"scheduled_at": "2026-09-25T14:00:00-03:00",
"post_type": "feed|reels|story|video (inferred if omitted)"
}
]
}media takes file_ids from Storage (see storage_request_upload).
post_delete{ "post_id": 123 }Upload is presigned in 2 steps:
storage_request_upload{
"file_name": "banner.png",
"content_type": "image/png (inferred if omitted)",
"file_size": 1024,
"folder_id": "optional"
}→ { "upload_url", "file_id", "upload_id", ... }. PUT the binary to
upload_url and then confirm:
storage_complete_upload{ "file_id": "...", "upload_id": "...", "parts": [{ "part_number": 1, "etag": "..." }] }storage_usage→ bytes used vs plan limit.
media_upload_from_urlOne-call shortcut: downloads an image from a public http(s) URL and
uploads it to storage — returns file_id (the media_id used in
refs/avatars/scenes) + file_url. Max 20MB; for larger files or local
bytes use the presigned path.
{ "url": "https://.../image.png", "file_name": "optional" }Always read brand_get before proposing changes — it returns the full
state (identity, visual identity, memory).
brand_update_identity{ "language": "pt-BR", "region": "...", "website": "...", "active_platforms": ["instagram"] }brand_update_visual_identity{
"primary_color": "#FF5500", "secondary_color": "...", "accent_color": "...",
"font_display": "...", "font_body": "...", "tagline": "...",
"logo_file_id": "storage file_id"
}brand_update_memoryCreator memory — what the AI learned about the style:
{
"preferred_angles": ["..."], "weak_angles": ["..."],
"preferred_cta": ["..."], "avoid_cta": ["..."],
"avg_retention": 42.5, "content_stats": { "...": "free-form" }
}brand_add_documentDocument in the knowledge base (RAG) — brand guide, strategy, manifesto, research:
{
"document_type": "brand_guide|brand_voice|strategy|manifesto|market_research|script|report|reference|high_performance|low_performance",
"title": "...",
"content": "plain text",
"file_url": "file URL (storage)",
"source_url": "optional", "metadata": {}
}plans_list→ { "plans": [...], "topup_products": [...] } — active plans with
monthly/yearly pricing, monthly credits and trial days.
payment_link_createCreates the checkout (payment link) for the user to subscribe to a plan:
{ "plan_id": "plan id (plans_list)", "billing_cycle": "monthly|yearly" }→ { "checkout_url", "session_id" } — send checkout_url to the client
so they can complete the subscription. Prices always come from the
server-side catalog — the agent never injects values.
credits_balanceThe user's credit balance — check before operations that debit credits (UGC jobs, avatar/scene generation):
→ { "monthly_balance", "topup_balance", "total_balance", "monthly_allowance", "cycle_ends_at", "plan_name" }
The ugc_* namespace — models, estimate, async jobs, avatars, scenes,
templates and projects — has its own reference:
UGC — Generation · Avatars ·
Video generation.