UGC Pocket docs

API REST & serveur MCP

UGC Pocket expose aux agents IA un serveur MCP sans compte ni clé : l'agent prépare un brouillon de campagne et le remet à l'utilisateur sous forme de lien. L'utilisateur le confirme, puis l'équipe UGC Pocket revient vers lui avec une proposition commerciale et rédige les scripts de la campagne. Rien n'est facturé et rien n'est montré aux créateurs avant qu'il accepte cette proposition.

Vue d'ensemble

Serveur MCPhttps://ugcpocket.com/mcp · Streamable HTTP, JSON-RPC 2.0, protocole 2025-06-18, sans authentification
Base RESThttps://ugcpocket.com/api (seul GET /service-info est actif)
Spécification/openapi.json (OpenAPI 3.1)
PlateformesTikTok, Instagram
DeviseEUR, montants en centimes
Budget campagne200 000 à 10 000 000 centimes (2 000 € à 100 000 €)

UGC Pocket fait montrer un produit dans des vidéos verticales courtes que des créateurs publient sur leurs propres comptes TikTok et Instagram, à travers des challenges rédigés par l'équipe UGC Pocket. Le prix est un forfait de campagne à partir de 2 000 €, précisé dans la proposition commerciale. Le budget_max_cents d'un brouillon est le forfait que l'utilisateur a en tête, à titre indicatif : le prix définitif figure dans la proposition. La marque ne fixe pas la rémunération des créateurs, c'est UGC Pocket qui la fixe.

Démarrage

Aucune inscription, aucune clé : un agent peut appeler le serveur MCP directement.

  1. Ajouter https://ugcpocket.com/mcp comme serveur MCP HTTP dans le client (voir Serveur MCP).
  2. Appeler create_campaign_draft avec ce que l'utilisateur a dit de son produit.
  3. Donner le claim_url renvoyé à l'utilisateur, avec l'étape suivante (voir Après le brouillon).

Première requête

curl -X POST https://ugcpocket.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "jsonrpc": "2.0", "id": 1, "method": "tools/call",
    "params": {
      "name": "create_campaign_draft",
      "arguments": {
        "title": "Lancement gamelle",
        "brief": "Vidéo TikTok mettant en scène le produit…",
        "target_categories": ["dog"],
        "platforms": ["TikTok"],
        "budget_max_cents": 350000,
        "company": { "name": "…", "website": "…" },
        "language": "fr"
      }
    }
  }'
// result.structuredContent
{
  "draft_id": "8b1f…",
  "claim_url": "https://app.ugcpocket.com/c/…",
  "expires_at": "…",
  "emailed": false,
  "next_step": "Give the claim_url to the user…"
}

Authentification

Aucune. Le serveur MCP et GET /service-info s'appellent sans compte, sans clé API et sans en-tête Authorization. Il n'y a pas de clé à générer ni à demander à l'utilisateur : c'est lui qui confirme le brouillon, par un code reçu par e-mail.

En sommeil. La commande avec clé API et les outils créateurs sont en sommeil.

API REST

Base https://ugcpocket.com/api. Les réponses sont en JSON ; les erreurs suivent l'enveloppe { "error": "code", "detail": "…" }. Pour créer un brouillon, utilisez le serveur MCP.

EndpointÉtatRôle
GET/service-infoactif, sans authDescripteur du service.
POST/estimateen sommeilRépond 410.
POST/campaignsen sommeilRépond 410.
GET/campaigns/{id}en sommeilRépond 410.
GET/api/service-info

Descripteur du service, sans authentification. GET / renvoie la même charge utile, identique à celle de l'outil MCP get_service_info. Champs : name, description, categories, platforms (TikTok, Instagram), currency (EUR), budget_unit (cents), min_campaign_budget_cents (200000), max_campaign_budget_cents (10000000), pricing (texte), order_model (draft_then_commercial_proposal), how_it_works (liste de textes), tools (["get_service_info","create_campaign_draft"]), paused (texte), mcp, openapi, docs, contact (hello@logics-studio.com). À appeler en premier : c'est la source de vérité des énumérations.

POST/api/estimate · POST/api/campaigns · GET/api/campaigns/{id}

Routes en sommeil. Elles répondent 410 avec le chemin qui fonctionne :

HTTP/1.1 410 Gone
{
  "error": "paused",
  "detail": "…",
  "mcp": "https://ugcpocket.com/mcp",
  "docs": "https://ugcpocket.com/for-agents"
}

Schéma du brouillon

Arguments de l'outil MCP create_campaign_draft. Il n'existe ni champ prestation, ni champ de rémunération des créateurs.

L'entrée est normalisée. Seuls un champ requis manquant, un brief trop court et un budget_max_cents sous le plancher renvoient une erreur. Le reste est corrigé en silence : title et brief sont tronqués à leur longueur maximale, les valeurs inconnues sont retirées de target_categories et platforms, objectives garde ses 6 premières entrées, un budget au-dessus du plafond est ramené à 10000000, et une deadline invalide ou passée est ignorée.

ChampTypeDétail
titlerequisstring ≤ 120Titre de la campagne, par exemple le produit et l'angle.
briefrequisstring ≤ 2000Ce qu'est le produit, à qui il s'adresse, ce que les vidéos doivent montrer.
budget_max_centsrequisinteger200000 à 10000000 centimes d'euro (2 000 € à 100 000 €). Le forfait que l'utilisateur a en tête, à titre indicatif : le prix définitif figure dans la proposition commerciale.
objectivesstring[] ≤ 6Objectifs libres de la campagne.
target_categoriesenum[]Catégories de créateurs dont l'audience correspond au produit. Voir les 22 catégories ci-dessous.
platformsenum[]TikTok, Instagram.
deadlinedateAAAA-MM-JJ, dans le futur. Toute autre valeur est ignorée.
companyobjetname, website, description (une ligne sur ce que fait l'entreprise). Affiché sur la page de réclamation.
emailstringOptionnel. L'e-mail de l'utilisateur : il reçoit aussi le lien de réclamation par e-mail.
languageenumfr ou en, langue de cet e-mail.

Catégories

dogcatpetscarcookingcouplefamilykidsbusinessfinancepodcastsportwellnessbeautyfashiontechgaminghomegardendiytravellifestyle

Appelez get_service_info ou GET /service-info plutôt que de figer ces valeurs dans votre code.

Erreurs

Erreurs REST, dans l'enveloppe { "error", "detail" }. Le champ error est stable, detail est un message lisible qui peut changer.

HTTPerrorCause
410pausedRoute en sommeil (/estimate, /campaigns, /campaigns/{id}). La réponse donne aussi mcp et docs.
404not_foundRoute inconnue.

Les erreurs du serveur MCP sont décrites dans Erreurs JSON-RPC.

Limites

LimiteValeurComportement au dépassement
Budget de campagne200 000 à 10 000 000 centimesSous le plancher : refus métier. Au-dessus du plafond : ramené à 10 000 000.
Durée de vie d'un brouillon7 joursLe claim_url expire (expires_at).
Brouillons par adresse IPlimités par heureRefus métier, à réessayer plus tard.

Serveur MCP

Serveur MCP Streamable HTTP sur https://ugcpocket.com/mcp, JSON-RPC 2.0, protocole 2025-06-18, ugc-pocket-mcp. Sans authentification ni clé API. Transport JSON uniquement : le serveur n'émet pas de flux SSE, et un client qui n'accepte pas application/json reçoit 406. Seul POST est accepté.

{
  "mcpServers": {
    "ugc-pocket": {
      "type": "http",
      "url": "https://ugcpocket.com/mcp"
    }
  }
}

Installation en une étape. Claude Code :

claude mcp add --transport http ugc-pocket https://ugcpocket.com/mcp
  • Cursor : ajouter UGC Pocket à Cursor
  • Claude (web et bureau) : Réglages, Connecteurs, Ajouter un connecteur personnalisé, URL https://ugcpocket.com/mcp

Découverte : le catalogue du domaine est sur /.well-known/ard.json (même contenu sur /.well-known/ai-catalog.json), la carte du serveur sur /mcp/server-card, et le serveur figure dans le registre MCP officiel sous le nom com.ugcpocket/ugc-pocket.

Outils

Exactement deux outils.

OutilEntréeRôle
get_service_infoaucuneDescripteur du service, mêmes champs que GET /service-info. Lecture seule.
create_campaign_draftSchéma du brouillonCrée un brouillon sans compte. Sortie : draft_id, claim_url (https://app.ugcpocket.com/c/<jeton>), expires_at (7 jours), emailed (booléen : le lien a aussi été envoyé à l'email fourni), next_step (ce qu'il faut dire à l'utilisateur).

En sommeil, non listés : estimate_campaign, create_campaign_order, check_campaign_status, list_my_campaigns, submit_posted_video, list_my_deliverables. Les appeler renvoie une erreur qui oriente vers create_campaign_draft ou vers l'app.

Après le brouillon

  1. L'utilisateur ouvre le claim_url : la campagne s'affiche sans connexion.
  2. Il la confirme avec un code à 6 chiffres reçu par e-mail et laisse un numéro de téléphone (obligatoire).
  3. L'équipe UGC Pocket revient vers lui avec une proposition commerciale et rédige les scripts de la campagne.

Rien n'est facturé et rien n'est montré aux créateurs avant qu'il accepte cette proposition. Une fois la proposition acceptée, notre équipe publie les challenges, sélectionne les créateurs et relit chaque vidéo.

Ce qu'un agent ne doit jamais promettre. Un nombre de vues, de vidéos ou de créateurs : UGC Pocket ne s'y engage pas.

Erreurs JSON-RPC

Deux registres distincts, à ne pas confondre côté agent : une erreur de protocole est un objet error, un refus métier est un result avec isError: true et un message exploitable.

CodeCause
-32000Méthode HTTP autre que POST (405), ou client qui n'accepte pas application/json (406).
-32601Outil ou méthode inconnue.
-32602Argument requis manquant.
-32700 / -32600JSON illisible / requête JSON-RPC invalide.
-32603Erreur interne.
isError: trueRefus métier : brief trop court, budget sous le plancher, trop de brouillons dans l'heure, outil en sommeil.

Ressources machine

RessourceRôle
/openapi.jsonSpécification OpenAPI 3.1 de l'API REST.
/llms.txtDécouverte et contexte produit lisibles par un LLM.
/llms-full.txtVersion étendue.
/.well-known/ard.jsonCatalogue du domaine pour les agents (ARD / AI Catalog).
/mcp/server-cardCarte du serveur MCP : nom, version, adresse, protocole.

Question d'intégration : hello@logics-studio.com