Client Intake for Claude Desktop: Ask the Client From a Chat

Last updated:

Claude Desktop connects to BriefGate two ways: as a remote custom connector (no install, browser-based sign-in) or as a local MCP server via claude_desktop_config.json. Both give you the same 13 tools.

The problem

A lot of client project work — reviewing copy, planning a page, checking a brief — happens in a plain Claude Desktop chat, not inside a coding agent. The same bottleneck shows up anyway: the client's logo or their hosting login is sitting in an inbox, and someone has to go get it.

Option A — remote custom connector (no install)

Go to Settings → Connectors in Claude Desktop (the same Customize → Connectors panel claude.ai uses — Claude Desktop and claude.ai share connector configuration), choose Add custom connector, and enter:

Leave Advanced settings (OAuth Client ID/Secret) blank — BriefGate's server supports dynamic client registration, so Claude registers itself automatically the first time you connect, the same way it does for the hosted endpoint in claude.ai (see the claude.ai connector guide). This is available to individual Pro and Max plans, not only Team and Enterprise; the Free plan is limited to one custom connector total.

Option B — local package via claude_desktop_config.json

Open Settings → Developer → Edit Config (or edit the file directly — ~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows) and add:

json
{
  "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), or skip the key entirely and run npx -y @briefgate/mcp login once in a terminal — it opens a device-flow login in your browser and stores the resulting credentials for the local package to use. Restart Claude Desktop after editing the config.

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.

A worked example

You: "Draft a BriefGate request for the Kovář project: their logo, three product photos, and the shop's opening hours."

Claude calls define_intake with an image, a file_list, and a structured item. BriefGate emails the client a portal link; you check progress later with get_intake_status, or ask Claude to look, in the same or a new conversation — the intake lives on BriefGate's side, not in the chat's memory.

Handling the results

get_intake_results returns typed values once the client is done: the logo and photos as signed file URLs, the hours as structured JSON. Anything still missing is named in a missing array rather than silently treated as complete.

Next steps