Podklady od klienta pro OpenAI Codex: sbírejte materiály bez opuštění terminálu

Aktualizováno:

Codex dokáže během jedné session naskládat rezervační flow, a pak čekat dny na to, až klient e-mailem pošle galerii, ceník a přihlášení do rezervačního nástroje.

Problém

Fotoateliér vás najme, aby vám postavil nový rezervační web. Codex rychle vyskládá strukturu, kalendářový widget i stránku s ceníkem — a pak se zasekne, protože web potřebuje skutečnou portfoliovou galerii, opravdový ceník a admin přístup do rezervačního nástroje, který ateliér už používá, a nic z toho v chatu neexistuje. Požádáte o to klienta. Za dva dny odpoví šesti fotkami z mobilu vloženými do e-mailu a screenshotem tabulky. Heslo do rezervačního nástroje nepřijde nikdy, protože nikdo nechce psát heslo do e-mailového vlákna — a měl by pravdu.

Mezera není v rychlosti Codexu při psaní kódu. Je to vzdálenost mezi „web potřebuje 30 až 40 fotek z portfolia, ceník a přihlášení" a tím mít tyhle tři věci ve formě, kterou Codex reálně použije.

Řešení

BriefGate MCP dá Codexu na tohle nástroj místo zprávy v chatu. Codex zavolá define_intake() s typovaným seznamem toho, co projekt potřebuje. BriefGate klientovi pošle e-mailem odkaz na portál s vaším brandingem, průběžně validuje, co přijde, a klienta automaticky upomíná podle rozvrhu, který zvolíte. Jakmile je vše uvnitř, Codex zavolá get_intake_results() a dostane zpět soubory, strukturovaná data a jednorázové odhalení přihlašovacích údajů — žádné opakované ptaní, žádné hádání, která fotka ve vlákně je ta finální.

Přidání BriefGate do Codexu

Codex čte konfiguraci MCP serveru z ~/.codex/config.toml (nebo z projektově vázaného .codex/config.toml v důvěryhodném projektu). Codex CLI, rozšíření do IDE i desktopová aplikace ChatGPT sdílejí stejný soubor, takže server přidaný jednou z terminálu je dostupný ve všech třech.

Varianta A — lokální balíček, přidaný z CLI

bash
codex mcp add briefgate --env BRIEFGATE_API_KEY=bg_live_xxxxx -- npx -y @briefgate/mcp

Tím se do config.toml zapíše tabulka [mcp_servers.briefgate]:

toml
[mcp_servers.briefgate]
command = "npx"
args = ["-y", "@briefgate/mcp"]

[mcp_servers.briefgate.env]
BRIEFGATE_API_KEY = "bg_live_xxxxx"

Klíč získáte na https://app.briefgate.dev/app. Radši nechcete vpisovat klíč přímo do konfiguračního souboru? Přidejte server bez --env a v rámci Codex session zavolejte vlastní nástroj BriefGate login — vypíše krátký kód a otevře dashboard v prohlížeči; po schválení se klíč uloží do ~/.briefgate/credentials.json sám. Je to samostatný krok od čehokoli, co spouští Codex — je to nástroj, který nabízí MCP server BriefGate, popsaný v referenci MCP nástrojů.

Varianta B — hostovaný endpoint, OAuth

BriefGate provozuje také hostovaný endpoint Streamable HTTP s OAuth 2.1 a vlastní MCP klient Codexu podporuje nativně oba transporty i OAuth — místo command/args pole url a samostatný přihlašovací krok:

bash
codex mcp add briefgate --url https://mcp.briefgate.dev/mcp
codex mcp login briefgate

První příkaz endpoint zaregistruje, druhý pro něj spustí vlastní OAuth flow Codexu — otevře prohlížeč pro přihlášení a schválení přístupu. Je to stejný mechanismus, jakým se k Codexu připojí jakýkoli MCP server na Streamable HTTP s OAuth — nejde o integraci specifickou pro BriefGate, jen o obecný postup, zdokumentovaný na stránce Codex MCP od OpenAI.

Jedna věc, kterou stojí za to vědět předem: lokální config.toml sdílí CLI, rozšíření do IDE i desktopová aplikace ChatGPT, ale ne webové rozhraní ChatGPT — web se k nástrojům postaveným na MCP dostává přes nainstalované pluginy, ne čtením vaší lokální konfigurace, takže server přidaný z terminálu se tam automaticky neobjeví.

Obě varianty zpřístupní stejných 13 nástrojů: define_intake, add_items, update_item, update_intake, list_intakes, get_intake_status, get_intake_results, request_revision, send_chase, manage_recipients, manage_webhook, list_folders a create_folder.

Jak Codexu říct, kdy to použít

Codex čte projektové instrukce ze souboru AGENTS.md. Přidejte tam sekci, aby místo ptaní se v chatu sáhl po BriefGate:

## Sběr podkladů od klienta
Když projekt potřebuje od klienta soubor, obrázek, přihlašovací údaj nebo text:
1. Zavolej define_intake s items[] popisujícím přesně, co je potřeba
2. Klientovi se automaticky pošle e-mail s odkazem na portál — nikdy o něj nežádej v chatu
3. Pokračuj ve stavbě všeho, co na chybějících položkách nezávisí
4. Kontroluj get_intake_status, nebo zaregistruj webhook přes manage_webhook,
   místo nečinného čekání na odpověď
5. Po dokončení zavolej get_intake_results
6. Pro jakékoli heslo nebo API key použij type: "secret" — nikdy prostý text

Příklad z praxe

Agent: „Rezervační kalendář a layout ceníku jsou hotové. Abych dokončil web, potřebuju portfoliovou galerii, aktuální ceník a přístup do rezervačního nástroje, který už používáte. Zakládám BriefGate intake."

Codex zavolá define_intake:

json
{
  "project_name": "Lucia Ferraro Photography — Booking Site",
  "client": {
    "email": "[email protected]",
    "name": "Lucia",
    "language": "en"
  },
  "items": [
    {
      "key": "gallery",
      "type": "file_list",
      "label": "Portfolio gallery",
      "help": "30 to 40 of your best shots, full resolution as exported from your camera or editing software — not resized for Instagram. We'll use the sharpest ones as the homepage hero.",
      "required": true,
      "constraints": { "formats": ["jpg", "png"], "min_count": 30, "max_count": 40 }
    },
    {
      "key": "price_list",
      "type": "file",
      "label": "Current price list",
      "required": true,
      "constraints": { "formats": ["pdf"] }
    },
    {
      "key": "booking_tool_login",
      "type": "secret",
      "label": "Booking tool admin login",
      "help": "Username and password for the scheduling system you use today, so we can pull your existing packages and availability rules.",
      "required": true
    }
  ],
  "chase_schedule": "default"
}

Agent: „Intake odeslán Lucii. Zatím budu pokračovat ve stavbě mřížky galerie a šablony ceníku s náhradním obsahem, dokud tyhle věci nedorazí."

Všimněte si poctivého omezení u položky gallery: file_list přijímá seznam formátů a minimální/maximální počet, ale na rozdíl od typu image pro jeden soubor nemá omezení minimální šířky, které by portál dokázal vynutit. Požadavek na 40 fotek je omezený a validovaný počtem; „plné rozlišení" je jen doporučení v textu nápovědy, který klient čte — BriefGate kvůli tomu soubor v nízkém rozlišení neodmítne. Co který typ skutečně kontroluje, najdete v přehledu typů položek.

Návrat mezi session

Session v Codexu, podobně jako většina session terminálových agentů, si po zavření terminálu neudrží průběžnou paměť toho, co ještě chybí. Poznamenejte si intake_id někam, kde přežije — do komentáře u kódu, který na něm závisí, nebo do řádku v AGENTS.md daného projektu — a na začátku další session nejdřív ověřte get_intake_status(intake_id: "in_..."), než usoudíte, že nic nedorazilo, nebo než znovu zavoláte define_intake a pošlete Lucii druhý odkaz.

Práce s výsledky

Jakmile jsou galerie, ceník i přihlášení kompletní, Codex zavolá get_intake_results:

json
{
  "status": "completed",
  "results": {
    "gallery": [
      { "filename": "portrait-01.jpg", "url": "https://files.briefgate.dev/.../portrait-01.jpg?token=...", "width": 4032, "height": 3024 }
    ],
    "price_list": { "filename": "ferraro-photo-pricing-2026.pdf", "url": "https://files.briefgate.dev/.../price_list.pdf?token=..." },
    "booking_tool_login": { "value": "[email protected]:MyPassword123", "one_time": true, "first_reveal": true }
  }
}

Pole value u secretu je přítomné jen při tomto prvním volání — uložte ho hned do svého secrets manageru podle Secrets, protože další volání get_intake_results už ho znovu nevrátí. Pokud se některá fotka v galerii přece jen ukáže jako export v nízkém rozlišení, request_revision(intake_id, "gallery", note) ji označí bez nutnosti zakládat nové e-mailové vlákno — celé volání je v referenci MCP nástrojů.

Co dál

Téma Dokument
Úplná reference všech 13 MCP nástrojů mcp.md
Všechny typy položek a jejich omezení item-types.md
Připojení dalších agentů Podklady od klienta do vašeho coding agenta