Client intake for agencies and AI agents

Stop chasing clients.
Get everything in one link.

BriefGate collects logos, copy and logins from your clients. Build the request in your browser — no AI agent needed — or let your AI coding agent build it for you.

Websites get built in days, then stall for weeks waiting on the client. List what you need in the dashboard or through your agent, and BriefGate sends the client a branded portal and chases them until everything arrives. You download it all as one ZIP — or the agent calls get_intake_results() and keeps building.

No code needed MCP + REST EU data residency Free to start
Two ways in

Your client sees one portal. You choose how to ask.

Run BriefGate straight from the browser, or let your AI coding agent do the asking. Both create the same intake, send the same portal and run the same reminders.

From your browser — no code

Build the request from scratch, from a sample project or from a template. Send the link, watch items arrive, send anything that's off back for revision (Solo and up), and download everything as one ZIP. Keep clients in folders; on Agency, invite your team.

Start free For agencies and freelancers Dashboard quickstart

From your AI coding agent

Claude Code, Cursor or Codex calls define_intake() over MCP or REST. A webhook fires when the client is done, and get_intake_results() returns typed data, file URLs and one-time secrets.

Quickstart MCP reference
47 seconds

See an intake go from empty to delivered

The agent declares what it needs, the client fills in the portal, and the results land back in the agent. No narration, no cuts.

Workflow

Four steps, zero email threads

You or your agent say what's needed. BriefGate does the chasing. Everything comes back in one place.

01

You or your agent declare

Pick the items in the dashboard — or Claude Code calls define_intake() with a typed list: logo, copy, credentials, structured data.

02

Client gets a portal

An email lands in the client's inbox with a magic link — no password, no account. A branded portal guides them through each item with in-place validation.

03

Chase engine runs

BriefGate reminds the client on whatever cadence you pick — the default 2, 5 and 9 days, every hour, or every morning at 7. Quiet hours apply unless you say otherwise, and every reminder lists only what is still missing. The "bad guy" is the robot, not you.

04

Everything comes back

Download the results as one ZIP from the dashboard. Or a webhook fires on intake.completed, the agent calls get_intake_results() and gets typed data, signed file URLs, and decrypted credentials — ready to use.

Claude Code — briefgate MCP
# Agent defines what it needs
define_intake({
  project_name: "John Finance",
  client: { email: "john@example.com" },
  items: [
    { key: "logo", type: "image",
      constraints: { min_width: 512 } },
    { key: "wp_admin", type: "secret" },
    { key: "opening_hours", type: "structured",
      schema: { properties: { mon_fri: {type:"string"} } } }
  ]
})

# → intake created, client emailed
{
  intake_id: "in_8f3k",
  portal_url: "https://p.briefgate.dev/8f3k",
  status: "sent"
}

# Later: webhook fires → agent retrieves
get_intake_results("in_8f3k")
# → logo url, typed opening hours,
#    one-time secret token  ✓
MCP-first

The agent stays in flow.
No context switching.

BriefGate ships as an MCP server. Claude Code calls define_intake the same way it reads a file or calls an API. The full conversation context stays intact — no tab switching, no email threads to summarize later.

Every MCP tool maps to a REST endpoint too, so CI pipelines, other agents, and custom scripts all work without MCP.

MCP reference REST API Item types
Built for both

Simple for people, precise for agents

Content Snare built a great human-first tool. BriefGate keeps the workflow simple for you and your client, and adds what agents need — typed schemas, a secrets vault, revision flows, and webhooks as first-class features.

12 typed item types

Text, longtext, image, file, file_list, color_list, select, multiselect, boolean, url, structured (JSON Schema), and secret. The agent gets data it can use directly — not raw strings to parse from a PDF export.

Secrets vault

Client's WordPress admin, Stripe keys, API tokens — encrypted at rest with a libsodium sealed box before they hit the database. One-time reveal via get_intake_results(). Never logged.

Chase engine — you stay clean

Default schedule: T+2d, T+5d, T+9d, then weekly — or any cadence you set, from five minutes up, including a fixed time of day. Quiet hours (8–19 local time). The reminder robot never mentions you — it's "Radim needs a few more items," not "I've emailed you three times."

Webhooks + revision loop

Register item.submitted and intake.completed webhooks. When a logo is blurry, call request_revision() with a note — client is notified, resubmits, webhook fires again.

Machine-readable pricing

Agents can read the tier limits themselves: GET /pricing.json (no auth). No scraping the landing page. The API enforces the same numbers, so there's no drift.

Branded portal — zero BriefGate branding

On Solo, Studio, and Agency, the client sees your logo, your colors, your sender name. They never see "BriefGate." Magic link, no registration, mobile-first, in CZ/SK/PL/DE/ES/EN.

Templates you reuse

Start from a sample project or a built-in template, tweak the items, and save the list as your own template for the next client (Solo and up). An agent can pass the same template to define_intake.

Folders and a shared account

Keep every client project in folders. On Agency, three people share one account — the owner manages who is invited, and each extra seat is $15/mo.

Pricing

Start free. Pay when it ships.

Free tier handles one real project — enough to see the value before you pay anything.

Free
$0/mo
  • 1 active intake
  • 10 items per intake
  • 1 GB storage
  • MCP + REST + webhooks
  • 60 req/h
  • Secrets vault
  • Custom branding
Most popular
Solo
$29/mo
or $23.20/mo billed annually
  • 15 active intakes
  • Unlimited items per intake
  • 25 GB storage
  • Secrets vault
  • Custom branding
  • Item revisions
  • 600 req/h · email support
Studio
$50/mo
or $40/mo billed annually
  • 30 active intakes
  • 1 seat
  • 50 GB storage
  • Custom portal domain
  • Custom sending domain
  • 1,500 req/h · priority support
Agency
$79/mo
or $63.20/mo billed annually
  • 60 active intakes
  • 3 seats (+$15/seat)
  • 100 GB storage
  • Custom portal domain
  • Custom sending domain
  • 3,000 req/h · priority support

Annual billing saves 20%. Code AGENT20: 20% off the first 3 months. Add-ons: extra 50 GB $5/mo · extra Agency seat $15/mo

Questions

Frequently asked

Does my client need to create an account?
No. The client receives an email with a magic link — one click opens their portal. No password, no registration. The session lasts 14 days so they can return later.
Do I need an AI agent or any code?
No. You can run everything from the browser dashboard: build the request, send the link, download the results as a ZIP. If you build with agents, every MCP tool also has a REST equivalent — use POST /v1/intakes from any language, CI pipeline, or agent framework. Cursor, Codex, and custom agent loops all work over REST without the MCP server.
How are secrets (passwords, API keys) handled?
Secret items are encrypted with a libsodium sealed box before the value ever reaches the database, and the private key is not stored there — a full DB dump reveals only ciphertext. The agent reads the value through get_intake_results with an API key carrying the secrets:read scope; it is released once, the reveal is written to the audit log, and a later read returns the time of the reveal instead of the value. Secrets expire after 30 days. Available on Solo, Studio, and Agency. See Security.
Where is my data stored?
Everything is in the EU. Application servers run on netcup in Nuremberg, Germany. Files are stored in Cloudflare R2 with EU jurisdiction policy. No data leaves Europe. The DPA (Data Processing Agreement) is in force the moment you sign up — it adopts the European Commission's standard clauses unmodified.
What if my agent calls define_intake in a retry loop?
Over REST, pass an Idempotency-Key header. Over MCP, the client derives a stable key from the project name, client email and item list automatically — there is nothing to set. BriefGate deduplicates on that key: a retry returns the original response without creating a second intake or sending a second email. Rate limits also protect against runaway agent loops.
How does BriefGate compare to Content Snare?
Content Snare is excellent for human-led onboarding workflows. BriefGate is the agent-first alternative: define_intake() in Claude Code, typed results via get_intake_results(), secrets vault with one-time reveal, and webhooks as first-class events — none of which Content Snare offers. See the full comparison.
Open for sign-ups

Ship the project.
Stop waiting for the brief.

Create an account, build your first request in the browser or point your agent at the MCP server, and send it in a few minutes. The free plan needs no card and covers a real project.