Client Intake for Gemini CLI: Collect Client Assets From the Terminal
Gemini CLI reads MCP servers from settings.json, and BriefGate's hosted endpoint works with it the same way it works with Claude Code: point the CLI at the URL, and Gemini's own OAuth flow handles the rest.
The problem
Gemini CLI builds and edits real projects from the terminal, and like any coding agent it stalls at the same point: the client's logo, the page copy, or a login exists somewhere outside the terminal, usually in an inbox the agent can't read.
The solution
Gemini CLI calls define_intake with a list of typed items, BriefGate emails the client a portal link and chases them on a schedule, and the agent calls get_intake_results once everything is in — typed values and signed file URLs, no re-asking.
Setting up BriefGate MCP in Gemini CLI
Gemini CLI reads MCP server configuration from ~/.gemini/settings.json (global) or .gemini/settings.json in a project.
Option A — hosted endpoint with OAuth (recommended)
{
"mcpServers": {
"briefgate": {
"httpUrl": "https://mcp.briefgate.dev/mcp"
}
}
}No API key or client ID needed here. Gemini CLI's MCP client discovers OAuth automatically: it detects a 401 from the server, reads the OAuth metadata BriefGate publishes at /.well-known/oauth-authorization-server, performs dynamic client registration, and walks you through the browser login on first use — the same discovery flow Claude Code and VS Code use against the same endpoint. Run /mcp inside Gemini CLI afterwards to confirm briefgate shows as connected.
Option B — local package with an API key (for CI, or to skip the browser step)
{
"mcpServers": {
"briefgate": {
"command": "npx",
"args": ["-y", "@briefgate/mcp"],
"env": {
"BRIEFGATE_API_KEY": "bg_live_xxxxx"
}
}
}
}Get the key from https://app.briefgate.dev/app (Settings → API keys). Both options expose the same 13 tools: 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, create_folder.
Telling the model when to use it
Add a note to GEMINI.md (Gemini CLI's equivalent of CLAUDE.md) so the agent reaches for BriefGate instead of leaving a TODO in the code:
When a client-supplied asset, credential, or piece of copy is missing:
1. Call define_intake with items[] describing exactly what is needed
2. Do not email the client yourself — BriefGate sends the portal link
3. Continue other work; poll get_intake_status or wait for the webhook
4. Call get_intake_results once complete, and use the typed values directly
5. Use type: "secret" for any password, API key, or loginA worked example
You: "Before we wire up payments, ask the client for their Stripe secret key and the shop's opening hours."
Gemini calls define_intake with a secret item (stripe_secret_key) and a structured item (opening_hours, a small JSON Schema for day/open/close). The client fills the portal from their phone; Gemini checks back later with get_intake_status and continues once get_intake_results reports both items received.
Resuming across sessions
list_intakes finds the request from a later session by project name or client email — the intake lives on BriefGate's side, not in the CLI's local state, so a new terminal session or a different machine picks up exactly where the last one left off.
Not yet installable as a one-line extension
Gemini CLI also supports installable extensions (gemini extensions install <url>) for a zero-config setup. BriefGate doesn't have one published yet — the settings.json method above is the one that works today; check briefgate-mcp on GitHub for whether that's changed.
Next steps
- MCP tools reference — full parameter list for all 13 tools
- Item types — what each item type validates
- Quickstart — the same hosted endpoint for Claude Code, Cursor, or any other MCP client