Podklady od klienta pro Claude Code: sbírejte materiály bez opuštění agenta

Problém

Claude Code umí postavit kompletní web za jedno odpoledne. Pak narazí na zeď: klient neposlal logo, text hero sekce ani přihlašovací údaje do WordPress adminu. Agent čeká. Vy čekáte. Pošlete klientovi e-mail s upomínkou. Uplynou dva týdny. Klient pošle rozmazaný JPG široký 200 pixelů.

Tohle je to úzké hrdlo: ne samotná stavba, ale sbírání podkladů. Vývojáři ztrácí víc času honěním materiálů než psaním kódu.

Řešení

BriefGate MCP. Claude Code zavolá define_intake() se seznamem toho, co potřebuje. BriefGate klientovi pošle e-mailem odkaz na portál s vaším brandingem. Klient nahraje soubory, vyplní text a odešle přihlašovací údaje — vše v přehledném webovém rozhraní navrženém pro netechnické lidi. BriefGate ho automaticky upomíná podle rozvrhu, který si nastavíte.

Jakmile je vše odesláno, Claude Code zavolá get_intake_results() a naváže přesně tam, kde skončil — typovaná data, podepsané URL adresy souborů, strukturované objekty, jednorázové tokeny na přihlašovací údaje — připravené k použití bez jakéhokoli parsování nebo transformace.

Nastavení

Tři příkazy:

bash
npm install -g @briefgate/mcp
claude mcp add briefgate -- briefgate-mcp --api-key bg_live_xxxxx

API klíč získáte na https://app.briefgate.dev/app. MCP server propojí Claude Code s BriefGate API. Po nastavení jsou nástroje jako define_intake, get_intake_results, get_intake_status, request_revision a send_chase dostupné v každé session Claude Code.

Nechcete vkládat klíč přímo? claude mcp add briefgate -- npx -y @briefgate/mcp následované npx -y @briefgate/mcp login vás přihlásí přes dashboard místo toho, nebo se připojte přímo k hostovanému endpointu příkazem claude mcp add --transport http briefgate https://mcp.briefgate.dev/mcp (pak /mcp → briefgate → Authenticate přímo v Claude Code) pro přihlášení přes OAuth. Viz Rychlý start.

Přidání do CLAUDE.md

Do CLAUDE.md vašeho projektu vložte tento úryvek, aby agent věděl, kdy a jak BriefGate používat:

## Sběr podkladů od klienta
Když potřebuješ od klienta materiál, použij BriefGate MCP nástroje:
1. Zavolej define_intake s items[] popisujícím, co je potřeba
2. Klientovi se automaticky pošle e-mail s odkazem na portál
3. Stav ověř přes get_intake_status, nebo počkej na webhook intake.completed
4. Zavolej get_intake_results, aby ses dostal k typovaným datům a URL souborů
5. Pro přihlašovací údaje (hesla, API klíče) použij type: "secret" — jsou šifrované

Klienta se nikdy neptej na podklady přímo v konverzaci — použij define_intake,
aby bylo vše sledované a automaticky upomínané.

Kompletní příklad session

Takhle vypadá session Claude Code s nasazeným BriefGate:

Agent: „Mám hotovou architekturu webu. Abych mohl pokračovat ve stavbě, potřebuju klientovo logo, text hero sekce a Google Analytics ID. Zakládám BriefGate intake."

Agent zavolá define_intake:

json
{
  "project_name": "Bella Cucina Restaurant Website",
  "client": {
    "email": "[email protected]",
    "name": "Marco",
    "language": "en"
  },
  "items": [
    {"key": "logo", "type": "image", "label": "Restaurant logo", "constraints": {"min_width": 512}},
    {"key": "hero_copy", "type": "longtext", "label": "Homepage headline and intro text"},
    {"key": "ga4_id", "type": "text", "label": "Google Analytics 4 Measurement ID", "required": false, "pattern": "^G-[A-Z0-9]+$"}
  ],
  "chase_schedule": "default",
  "branding": {"sender_name": "Radim"}
}

Agent: „Intake založen. Marco dostane e-mail na [email protected] s odkazem na portál. Zatím budu pokračovat ve stavbě statické struktury a placeholder komponent. Vrátím se, jakmile podklady dorazí."

[Agent pokračuje ve stavbě. Chase engine pošle upomínku v T+2d. Marco odešle logo a text v T+3d. Vystřelí webhook intake.completed.]

Agent zavolá get_intake_results:

json
{
  "status": "completed",
  "items": [
    {
      "key": "logo",
      "type": "image",
      "status": "submitted",
      "value": {
        "url": "https://r2.briefgate.dev/signed/...",
        "filename": "bellacucina-logo.svg",
        "width": 1024,
        "height": 512,
        "mime_type": "image/svg+xml"
      }
    },
    {
      "key": "hero_copy",
      "type": "longtext",
      "status": "submitted",
      "value": "Authentic Italian cuisine in the heart of Prague..."
    },
    {
      "key": "ga4_id",
      "type": "text",
      "status": "skipped"
    }
  ]
}

Agent: „Logo přijato — SVG, 1024×512. Text hero sekce je tu. GA4 ID přeskočeno (volitelné). Pokračuju v implementaci: umístím logo do hlavičky, naplním hero sekci textem, přeskočím analytics snippet."

Práce s přihlašovacími údaji

Přihlašovací údaje — WordPress admin, Stripe secret key, servisní účet Google Analytics — potřebují zvláštní zacházení. Použijte type: "secret".

json
{
  "key": "wp_admin",
  "type": "secret",
  "label": "Current WordPress admin credentials",
  "help": "Username and password for wp-admin. Encrypted before storage, shown to your developer once."
}

Klientův vstup putuje přes HTTPS a je zapečetěný na serveru BriefGate pomocí libsodium sealed box ještě předtím, než se cokoli zapíše do databáze. Uchovává se pouze šifrovaný text; prostý text se drží v paměti jen tak dlouho, aby ho bylo možné zapečetit a později jednou odhalit.

Když agent zavolá get_intake_results, položka typu secret vrátí:

json
{
  "key": "wp_admin",
  "type": "secret",
  "status": "submitted",
  "token": "sec_live_xxxxx",
  "expires_at": "2026-08-15T10:00:00Z",
  "revealed": false
}

Agent pak zavolá GET /v1/secrets/sec_live_xxxxx, aby dešifroval a získal prostý text. Po tomto volání je token spotřebovaný — prostý text už přes API znovu získat nelze. Agent by ho měl okamžitě uložit do secrets manageru.

Vyžádání opravy

Když agent zkontroluje nahrané podklady a najde problém s kvalitou, může položku označit a požádat klienta o nové odeslání:

request_revision(
  intake_id: "int_01J3K...",
  item_key: "logo",
  note: "The uploaded logo is 200px wide. We need at least 512px for retina screens. If you have an SVG version, that would be ideal — SVG scales to any size without quality loss."
)

Klient dostane e-mail, uvidí poznámku u označené položky ve svém portálu, znovu ji nahraje a odešle. Webhook item.submitted vystřelí znovu. Agent zavolá get_intake_results a najde aktualizovaný soubor.

Tohle drží celý cyklus oprav uvnitř BriefGate — žádné samostatné e-mailové vlákno, žádné riziko, že se původní odeslání přepíše bez záznamu.