Use case

Claude Code Is Ready to Build. The Client Isn't.

You're mid-session, the architecture is done, and the next step needs the client's logo and a couple of lines of copy. Claude Code can't invent those. So the session stalls, or you go build something else and lose the thread.

The problem

Problem

This happens on almost every client project, and it always costs the same thing: momentum. You send an email asking for assets, the client sees it three days later, replies with a photo that's 200 pixels wide, and you're back to asking again. Meanwhile the agent that was moving fast is sitting idle, or you've context-switched to a different task and have to reload everything when the assets finally show up.

The fix isn't a better email template. It's not needing to write the email at all — and not needing to remember to check for a reply either.

How it runs

Workflow

  1. The agent defines what it needs. Mid-session, Claude Code calls define_intake with the exact items blocking it — a file, some text, a credential — instead of you drafting a message by hand.
  2. BriefGate emails the client a portal link. No account for the client to create, no app to install — just a branded page with the requested items and plain-language help text under each one.
  3. The client fills it in, on their phone if that's easiest. Uploads go straight from a camera or gallery picker; text fields autosave as they type.
  4. BriefGate chases automatically. If nothing comes in in a couple of days, a reminder goes out on the schedule you set — no follow-up email for you to remember to send.
  5. A webhook tells your side the moment it's done, or the agent checks in with get_intake_status if nothing is registered to receive one.
  6. Claude Code picks the session back up. get_intake_results returns typed, ready-to-use values — a signed file URL, a validated string — and the agent continues from exactly where it left off.
What your client sees
The dashboard view of an intake mid-flight: three items submitted, two still pending, a chase scheduled.
The dashboard view of an intake mid-flight: three items submitted, two still pending, a chase scheduled.
For the agent

MCP example

Connect once — claude mcp add briefgate -- npx -y @briefgate/mcp then npx -y @briefgate/mcp login — and define_intake is available in every session after that. Here it's blocking on assets for a dental practice's new booking page, not a restaurant:

{
  "project_name": "Riverside Family Dental — Booking Page",
  "client": {
    "name": "Dr. Alvarez",
    "email": "[email protected]"
  },
  "items": [
    {
      "key": "practice_logo",
      "type": "image",
      "label": "Practice logo",
      "constraints": { "formats": ["svg", "png"], "min_width": 512 }
    },
    {
      "key": "booking_intro",
      "type": "longtext",
      "label": "A few sentences introducing the practice for the booking page"
    },
    {
      "key": "insurance_list",
      "type": "text",
      "label": "Insurance providers you accept, comma-separated",
      "required": false
    }
  ]
}

get_intake_results hands the logo back as a signed URL with its dimensions and MIME type, the intro copy as a plain string, and the insurance list as text too — or status: "skipped" if the client left it out, since it was optional. Nothing needs re-parsing before the agent can use it.

Read the docs

What changes

Result

Sessions stop stalling on a missing asset. You get a clean handoff back into the agent's context instead of a scattered email thread you have to summarize by hand. The client gets one clear link on their phone instead of a request buried in an email chain, and reminders go out without you tracking who still owes what.

For the full walkthrough — CLAUDE.md snippet, handling secrets, requesting a revision on a bad upload — see the Claude Code client intake guide and the quickstart.

Start free, no card required, and connect BriefGate to your Claude Code session in under five minutes.

Free tier, no card required.