Tools

Todas as tools do servidor MCP do uPubly — schemas de input, outputs e exemplos.

Chamadas via tools/call no endpoint POST /mcp. Todas aceitam workspace_id opcional (uuid) — omitido usa o workspace default do usuário.

Publicações

post_accounts_list

Lista as contas de rede social conectadas — descobre o account_id para agendar.

{ "workspace_id": "opcional" }

→ { "accounts": [{ "account_id", "platform", "username" }] }

post_list

Lista posts (templates) com seus agendamentos.

{ "workspace_id": "?", "page": 0, "size": 20, "search": "opcional" }

post_create

Cria um post e, se schedules vier, já agenda a publicação. Sem schedules vira rascunho.

{
  "description": "Texto principal do post",
  "caption": "Legenda (opcional)",
  "name": "Nome interno (opcional)",
  "media": ["file_id_1", "file_id_2"],
  "schedules": [
    {
      "account_id": "uuid da conta (post_accounts_list)",
      "scheduled_at": "2026-09-25T14:00:00-03:00",
      "post_type": "feed|reels|story|video (inferido se omitido)"
    }
  ]
}

media recebe file_ids do Storage (ver storage_request_upload).

post_delete

{ "post_id": 123 }

Storage

O upload é presignado em 2 passos:

storage_request_upload

{
  "file_name": "banner.png",
  "content_type": "image/png (inferido se omitido)",
  "file_size": 1024,
  "folder_id": "opcional"
}

→ { "upload_url", "file_id", "upload_id", ... }. Faça PUT do binário na upload_url e depois confirme:

storage_complete_upload

{ "file_id": "...", "upload_id": "...", "parts": [{ "part_number": 1, "etag": "..." }] }

storage_usage

→ bytes usados vs limite do plano.

media_upload_from_url

Atalho de uma chamada: baixa uma imagem de URL pública http(s) e sobe no storage — devolve file_id (o media_id usado em refs/avatares/cenários)

  • file_url. Máx 20MB; acima disso ou bytes locais → caminho presignado.
{ "url": "https://.../imagem.png", "file_name": "opcional" }

Marca (brain)

Sempre leia brand_get antes de propor mudanças — ele devolve o estado completo (identidade, identidade visual, memória).

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": "file_id do storage"
}

brand_update_memory

Memória do criador — o que a IA aprendeu do estilo:

{
  "preferred_angles": ["..."], "weak_angles": ["..."],
  "preferred_cta": ["..."], "avoid_cta": ["..."],
  "avg_retention": 42.5, "content_stats": { "...": "livre" }
}

brand_add_document

Documento na base de conhecimento (RAG) — guia de marca, estratégia, manifesto, pesquisa:

{
  "document_type": "brand_guide|brand_voice|strategy|manifesto|market_research|script|report|reference|high_performance|low_performance",
  "title": "...",
  "content": "texto puro",
  "file_url": "URL de arquivo (storage)",
  "source_url": "opcional", "metadata": {}
}

Billing

plans_list

→ { "plans": [...], "topup_products": [...] } — planos ativos com preço mensal/anual, créditos mensais e dias de trial.

Cria o checkout (link de pagamento) para o usuário assinar um plano:

{ "plan_id": "id do plano (plans_list)", "billing_cycle": "monthly|yearly" }

→ { "checkout_url", "session_id" } — envie checkout_url ao cliente para ele concluir a assinatura. Preços sempre vêm do catálogo server-side — o agente nunca injeta valores.

credits_balance

Saldo de créditos do usuário — consulte antes de operações que debitam (jobs UGC, geração de avatar/cenário):

→ { "monthly_balance", "topup_balance", "total_balance", "monthly_allowance", "cycle_ends_at", "plan_name" }

UGC (avatares, cenários, geração)

O namespace ugc_* — modelos, estimativa, jobs async, avatares, cenários, templates e projetos — tem referência própria: UGC — Geração · Avatares · Geração de vídeo.