BriefGate
NPM · @BRIEFGATE/MCP · SCANNED SEP 21
Client intake for AI agents: get files, copy and logins from clients, chased automatically.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 31 of 96 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency97
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to sekera-radim/briefgate-mcp). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 2 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability62
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 5348 tokens (~356/item across 15 items; 15 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management67
- Stability observed for 20 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage98
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 94% of tool parameters carry a description.Partial
- Structured output schemas are declared (87% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 16 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the BriefGate MCP server?
BriefGate runs locally as an npm package, launched with npx -y @briefgate/mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · @briefgate/mcp
claude mcp add sekera-radim-briefgate -- npx -y @briefgate/mcp
{
"mcpServers": {
"sekera-radim-briefgate": {
"command": "npx",
"args": [
"-y",
"@briefgate/mcp"
]
}
}
} {
"servers": {
"sekera-radim-briefgate": {
"command": "npx",
"args": [
"-y",
"@briefgate/mcp"
]
}
}
} codex mcp add sekera-radim-briefgate -- npx -y @briefgate/mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"sekera-radim-briefgate": {
"type": "local",
"command": [
"npx",
"-y",
"@briefgate/mcp"
],
"enabled": true
}
}
} openclaw mcp add sekera-radim-briefgate --command npx --arg -y --arg @briefgate/mcp
mcp_servers:
sekera-radim-briefgate:
command: "npx"
args: ["-y", "@briefgate/mcp"] {
"McpServers": {
"sekera-radim-briefgate": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"@briefgate/mcp"
]
}
}
} assistant mcp add sekera-radim-briefgate -t stdio -c npx -a -y @briefgate/mcp
{
"mcpServers": {
"sekera-radim-briefgate": {
"command": "npx",
"args": [
"-y",
"@briefgate/mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 20 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 60 to 63. That category is still filling its 30-day observation window: 18 days of observed history at the previous scan, 19 at this one. The score rises as the window fills, whether or not the server changes.
- 18 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.
- 17 Sept 26 +11
- Known CVEs: unverified → pass ▲ security
- Dependency health: unverified → 0.85 ▲ functional
- 16 Sept 26 −10
- Malware scan: pass → unverified ▼ security
- Known CVEs: pass → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Stability: 0.47 → unverified ▼ security
- Capabilities: pass → unverified ▼ functional
- Dependency health: 0.84 → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- First check of Tool coverage: 87 functional
- First check of Schema quality: unverified functional
- Package version: 0.9.0 → 0.10.5 functional
- Package version: 0.9.0 → 0.10.4 functional
- Package version: 0.9.0 → 0.10.1 functional
- Package version: 0.9.0 → 0.10.0 functional
- 14 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.
- 12 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.
- 9 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.
- 7 Sept 26 +16
- Malware scan: unverified → pass ▲ security
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 21 Sept 2026 · Analysed npm/@briefgate/mcp@0.10.5
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | npm |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | sekera-radim/briefgate-mcp |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/sekera-radim/briefgate-mcp/.github/workflows/publish.yml@refs/tags/v0.10.5 |
| Rekor log index | 2862967178 |
| Predicate type | https://slsa.dev/provenance/v1 |
| Subject digest | sha512:793dd75a65eb8207f70839b7baba1063a6be01962e84deb959f49c78583c61045cf434d8c2ee0b1186543e0d92aeec8b560f9ffd93353f775a231bbb0 |
Background: How many MCP packages publish verified provenance →
Dependencies 96 packages
| Packages resolved | 96 |
|---|---|
| Stale | 31 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
add_items Add items to an intake ~123
Add new items to an already-sent intake — for example, when you realise mid-project that you also need a favicon, social media assets, or additional credentials. The client is notified about the new items. Existing items and their submitted values are not affected. Returns the updated intake object. Items must follow the same key/type/label rules as define_intake (snake_case keys, type-specific constraints).
| Name | Type | Req | Description |
|---|---|---|---|
| intake_id | string | yes | Intake ID returned by define_intake. |
| items | array | yes | New items to add. Same schema as define_intake items. |
| Name | Type | Req | Description |
|---|---|---|---|
| folder_id | string|null | – | – |
| follow_up | object | – | How to learn this intake is done — present unless a webhook already covers it. Mirrors FollowUpAdvice in client.ts. |
| intake_id | string | – | – |
| items | array | – | – |
| portal_url | string | – | – |
| status | string | – | – |
No examples provided.
create_folder Create a folder ~113
Create a new folder to group intakes, e.g. one per client. Call list_folders first and reuse a matching folder — only create one when none of the existing folders fits. Fails with folder_exists if a folder with this name already exists; use list_folders to find it instead. Returns the created folder { id, name, sort_order, intake_count, created_at }.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Folder name, e.g. the client's or project's name. Must be unique in your account. |
| Name | Type | Req | Description |
|---|---|---|---|
| created_at | string|null | – | – |
| id | string | – | – |
| intake_count | number | – | – |
| name | string | – | – |
| sort_order | number | – | – |
No examples provided.
define_intake Create client intake ~1,710
Create a new client intake request — a branded portal where the client submits logos, copy, files, credentials, and other assets. BriefGate sends the invite email and chases the client automatically until all items are collected. Call this once at the start of a project, after you know what assets you need. Returns { intake_id, portal_url, status, follow_up }. Save intake_id — you need it for all follow-up calls. AFTER CREATING AN INTAKE, SET UP HOW YOU WILL LEARN IT IS DONE. Nothing pushes to you on its own: MCP is request/response, so the server cannot wake you when the client finishes. Creating the intake and never checking again is the common failure — the completed work then sits in the portal until a human happens to look. The returned follow_up block tells you which of the two mechanisms applies: - follow_up.recommended = "webhook" — the account already has an endpoint; deliveries will arrive there and you need do nothing further. - follow_up.recommended = "schedule" — no endpoint is registered. If you control a service that can receive public HTTPS, register one with manage_webhook. Otherwise tell the user to set up a recurring check (cron, a systemd timer, a scheduled task in their agent host) that calls get_intake_status every follow_up.schedule.every_hours hours until follow_up.schedule.until, and offer to configure it for them. Example: { "project_name": "Website for John Finance", "client": { "email": "john@example.com", "name": "John", "language": "cs" }, "due_date": "2026-08-15", "branding": { "accent_color": "#1B2A4A", "sender_name": "Radim" }, "items": [ { "key": "logo", "type": "image", "label": "Company logo", "constraints": { "formats": ["svg","png"], "min_width": 512 } }, { "key": "hero_copy", "type": "longtext", "label": "Homepage headline (2–3 sentences)", "constraints": { "max_chars": 400 } }, { "key": "wp_admin", "type": "secret", "label": "WordPress admin credentials" }, { "key": "photos", "type":…
| Name | Type | Req | Description |
|---|---|---|---|
| auto_approve_hours | number | – | Hours after submission before an item is auto-approved without agent review. Default: 72. Set to 0 to require explicit approval. |
| branding | object | – | Override account-level branding for this intake. |
| chase_at_time | string | – | Local time of day to send reminders at, "HH:MM" in the client's timezone (e.g. "07:00"). Anchors the cadence to a clock time instead of counting from the invite, and needs an interval measured in who… |
| chase_interval | integer | – | How often to remind, only with chase_schedule="custom". Pair with chase_interval_unit. Defaults to every 3 days when omitted. The interval must work out to at least 5 minutes and at most 90 days. |
| chase_interval_unit | string | – | Unit for chase_interval. Defaults to "days". |
| chase_schedule | string | – | Automated reminder cadence. default=T+2d,T+5d,T+9d,weekly. gentle=T+3d,T+8d,biweekly. aggressive=T+1d,T+3d,T+5d,every-other-day. custom=every chase_interval chase_interval_unit. off=no auto reminders. |
| client | object | yes | Client contact details. |
| client_brief | string | – | Free-text brief shown to the client at the top of the portal, above the requested items — information from you to them: an offer, instructions, or context for why you are asking for these items. Up t… |
| due_date | string | – | Deadline in YYYY-MM-DD format. Shown in the portal and used to escalate chase cadence. |
| email_copy | object | – | Your own subject and intro lines, overriding the built-in translation for this intake. Placeholders: {sender}, {project}, {client}, {count}, {minutes}, {due}. An unknown placeholder is rejected rathe… |
| folder_id | string | – | Put this intake in an existing folder from list_folders instead of leaving it unfiled. Folders group intakes by client or project — reuse one for a returning client rather than creating a duplicate w… |
| items | array | yes | List of assets to collect. Each item has key, type, label, and optional constraints. |
| max_reminders | – | – | Reminders to send before the intake is marked stalled and handed back to you (default 3). An integer from 1 to 1000, or the string "unlimited" to keep reminding until the client finishes. Raise it fo… |
| project_name | string | yes | Human-readable project name shown in the invite email and portal heading. |
| respect_quiet_hours | boolean | – | Hold reminders to the client's 08:00-19:00 local window (default true). A cadence of minutes or hours pauses overnight and resumes in the morning; set false to send around the clock. |
| retention | object | – | How long BriefGate keeps this intake after it is finished. Default: purged 90 days after the client completes. Use mode "on_delivery" when the intake holds anything sensitive (credentials, personal p… |
| send | boolean | – | Whether to send the invite email immediately. Default: true. Set to false to create a draft and call /v1/intakes/:id/send later. |
| template | string | – | Template slug to pre-populate items (e.g. "restaurant-website", "consulting-firm"). |
| Name | Type | Req | Description |
|---|---|---|---|
| follow_up | object | – | How to learn this intake is done — present unless a webhook already covers it. Mirrors FollowUpAdvice in client.ts. |
| intake_id | string | – | – |
| notices | array | – | Cadence caveats, present only when chase_schedule="custom" makes them relevant. |
| portal_url | string | – | – |
| status | string | – | – |
No examples provided.
get_intake_results Collect intake results ~313
Retrieve the typed submitted values from a client intake. Files are returned as signed download URLs that expire after 24 hours. Secrets (type=secret, e.g. passwords, API keys) are decrypted and included only in the first retrieval. Later calls return first_reveal: false in meta and omit the value, so the user should be ready to receive a secret before this tool is called on an intake that contains one. Use only_new=true to get only items submitted since the last call (useful in webhook-driven workflows). Use include_pending=true to also return partially filled items. Returns { results: { <key>: <typed value> }, meta: { <key>: { type, status, submitted_at, first_reveal? } } }. For a DECISION item (assignee=owner, type select/multiselect), results holds the current answer and meta.<key>.decided_by is "owner" (answered by the account holder) or "agent_proposal" (only a proposal exists). Proposals are returned even without include_pending. A proposal does not bump revision, so only_new returns decisions the account holder has answered or changed since the last call.
| Name | Type | Req | Description |
|---|---|---|---|
| include_pending | boolean | – | Include items not yet submitted (useful for partial progress checks). Default: false. |
| intake_id | string | yes | Intake ID returned by define_intake. |
| only_new | boolean | – | Return only items submitted or updated since the previous get_intake_results call. Default: false. |
| Name | Type | Req | Description |
|---|---|---|---|
| intake_id | string | yes | – |
| meta | object | yes | Keyed the same as results. |
| results | object | yes | Keyed by this intake's own item keys. A value's shape depends on that item's type. |
| status | string | yes | – |
No examples provided.
get_intake_status Check intake progress ~167
Check the completion status of a client intake — which items are submitted, pending, or need revision; the history of automated chase emails sent; and when the client last opened the portal. Use this to decide whether to send a manual reminder (send_chase), request a revision (request_revision), or fetch results (get_intake_results). Returns per-item status and chase history. This is also the call a scheduled check should make when no webhook is registered — see follow_up in the define_intake response for the cadence. When status becomes "completed", fetch the results with get_intake_results and carry on with the work that was waiting on them.
| Name | Type | Req | Description |
|---|---|---|---|
| intake_id | string | yes | Intake ID returned by define_intake (e.g. "in_8f3k"). |
| Name | Type | Req | Description |
|---|---|---|---|
| chases | array | yes | – |
| client_brief | string | – | The brief shown to the client above the requested items, if one is set. |
| client_last_seen | string|null | – | – |
| due_date | string|null | – | – |
| intake_id | string | – | – |
| items | array | yes | – |
| progress | object | yes | – |
| status | string | yes | – |
No examples provided.
list_folders List folders ~84
List the folders in your account, used to group intakes by client or project. Call this before create_folder or before setting folder_id on define_intake, update_intake, or list_intakes — reuse an existing folder for a returning client instead of creating a duplicate. Returns { folders: [{ id, name, sort_order, intake_count, created_at }] }.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| folders | array | yes | – |
No examples provided.
list_intakes List intakes ~239
List all intakes in your account, optionally filtered by status, client email, folder, or a text search. Use this to get an overview of active projects, find a specific intake by the client's email when you have lost the intake_id, check how many intakes are currently in progress, or see what's in a folder from list_folders. Returns { intakes: [...], total } where each intake includes intake_id, project_name, status, created_at, due_date, folder_id, and portal_url.
| Name | Type | Req | Description |
|---|---|---|---|
| client_email | string | – | Filter by client email address. |
| folder_id | string | – | Filter by folder, using an id from list_folders. Pass the literal string "none" to see only intakes that are not in any folder. |
| limit | number | – | Maximum number of results (1–100). Default: 20. |
| offset | number | – | Pagination offset. Default: 0. |
| q | string | – | Free-text search: matches a substring of project name, client name, or client email. |
| status | string | – | Filter by intake status. Omit to return all. |
| Name | Type | Req | Description |
|---|---|---|---|
| intakes | array | yes | – |
| total | number | yes | – |
No examples provided.
login Sign in to BriefGate ~308
Sign in without pasting an API key, the same way `snyk_auth` works: this opens a browser page where a human approves this device, then stores the issued key locally. Call this whenever a tool reports "Not signed in" or that the stored key was revoked or expired. This is a TWO-PHASE tool because approval can take minutes — longer than a single tool call should block for: 1. The first call starts the sign-in and returns immediately with a URL and a short code (e.g. "WDJB-MJHT"). Tell the user to open the URL and confirm the code; a browser is also opened automatically when possible. 2. Call `login` again (no arguments change) to check progress. While the human hasn't approved yet, it replies that it's still waiting. Once approved, the same call reports success and the key is saved — no further action needed, other tools start working immediately. Do not wait silently for minutes on one call — call this tool again after telling the user to approve, and again if they say they've clicked Allow. Has no effect if a key is already supplied via the `--api-key` flag or the `BRIEFGATE_API_KEY` environment variable — those always take priority over a locally stored one, so this tool says so instead of running the flow. Not available when this server is running as the shared hosted endpoint (mcp.briefgate.dev): there, connecting a client already triggers OAuth automatically.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
logout Sign out of BriefGate ~100
Remove the API key `login` stored locally for this BriefGate server, and best-effort revoke it on the server too (a `DELETE /v1/keys/current` call using that same key). If the revoke call fails — no network, the API is unreachable — the local copy is still removed; the response says so and points at the BriefGate dashboard to revoke it there instead. Not available when this server is running as the shared hosted endpoint.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
manage_recipients Manage intake recipients ~221
Add, remove, or reinstate a person who receives an intake's invite and reminders, alongside or instead of the primary client. action="add" invites another address the same way also_notify does at define_intake time — its own message, its own bounce state; pass name to address it by name. action="remove" stops future reminders to that address. action="reinstate" is for a bounce that was wrong — the person did get the e-mail — and clears the bounce flag so reminders resume; if that address was the only one still being chased, the schedule is re-planned from now. Fails if the address is not on the intake, or — for reinstate — if it never bounced in the first place.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | What to do with the address. |
| string | yes | The recipient's e-mail address. | |
| intake_id | string | yes | Intake ID returned by define_intake. |
| name | string | – | Their name, used to address their copy. Only used with action="add". |
Structured output declared, but exposes no named fields.
No examples provided.
manage_webhook Manage webhook endpoints ~383
Register, list, or remove a webhook endpoint so BriefGate pushes intake events to your service instead of you polling for them. Use this ONLY if you control a service that can receive public HTTPS requests. An agent running in a terminal cannot — for that case do not register anything and check on a schedule with get_intake_status instead. A registered endpoint that cannot receive produces failing deliveries and a false impression that the work is being watched. action="create" returns a signing "secret" exactly once. The receiving service needs it to verify the signature on every delivery (verifyWebhookSignature from @briefgate/mcp/webhook), and it cannot be shown again. If it is ever exposed, there is no rotation in place — delete the endpoint and create a new one, which issues a fresh secret. Events: intake.completed (all required items in — the one to act on), item.submitted (a single item arrived), client.viewed (the client opened the portal), chase.bounced (a reminder failed to deliver), intake.overdue (the due date passed with required items outstanding — the one to act on when work is blocked), intake.stalled (fires only when the intake sets max_reminders; without it this event never arrives).
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | What to do. "list" needs no other argument. |
| events | array | – | Events to receive. Required for action="create". For "tell me when the client is done", this is ["intake.completed"]. |
| format | string | – | Payload shape. "raw" (default) is the signed BriefGate envelope; "slack" and "discord" post a message those services render directly. |
| url | string | – | HTTPS endpoint to deliver to. Required for action="create". |
| webhook_id | string | – | Endpoint to remove. Required for action="delete". |
Structured output declared, but exposes no named fields.
No examples provided.
request_revision Request a revision ~165
Ask the client to resubmit a specific item with a note explaining what is wrong. Use this after reviewing get_intake_results and finding an item that does not meet requirements — for example a blurry logo, copy that is too long, or a broken URL. The client is notified automatically and the item status moves to needs_revision. Returns { status: "revision_requested", item_key }.
| Name | Type | Req | Description |
|---|---|---|---|
| intake_id | string | yes | Intake ID returned by define_intake. |
| item_key | string | yes | The key of the item to revise (e.g. "logo", "hero_copy"). |
| note | string | yes | Plain-language explanation shown to the client (e.g. "Logo is blurry — we need at least 512 px wide in SVG or PNG with a transparent background"). |
| Name | Type | Req | Description |
|---|---|---|---|
| item_key | string | – | – |
| status | string | – | – |
No examples provided.
send_chase Send a reminder ~109
Send a manual reminder to the client outside the automatic schedule. Use when a deadline is approaching and the client has not responded to automatic reminders, or when you want to send an SMS after email attempts have failed. The automatic chase schedule continues after this call — this is an extra nudge, not a replacement. Returns { sent: true }.
| Name | Type | Req | Description |
|---|---|---|---|
| channel | string | – | Delivery channel. Email is the only one offered. |
| intake_id | string | yes | Intake ID returned by define_intake. |
| Name | Type | Req | Description |
|---|---|---|---|
| sent | boolean | – | – |
No examples provided.
update_intake Edit intake settings ~743
Change settings on an intake that has already been sent — project name, due date, reminder cadence, quiet hours, which folder it's in, the client brief, or the client's name, phone, language, and timezone. Use this instead of deleting and recreating the intake when a deadline moves or the chase cadence needs to change. If any of chase_schedule, chase_interval, chase_interval_unit, chase_at_time, max_reminders, respect_quiet_hours, due_date, or client.timezone is included, every pending reminder is cancelled and the schedule is re-planned from now — reminders already sent still count toward max_reminders. Raising max_reminders (or setting it to "unlimited") past the number already sent on a stalled intake reactivates it and resumes chasing. The client's e-mail address cannot be changed here — the portal link and login are bound to it. Use manage_recipients to add, remove, or reinstate an address. folder_id moves the intake to a different folder (an id from list_folders); set it to null to remove the intake from any folder. It never touches the chase schedule. client_brief replaces the free-text brief shown to the client above the requested items; set it to null to clear it. Documents attached to the brief are managed via the dashboard or the REST endpoint POST /v1/intakes/:id/brief/files, not through this tool. Fails if the intake is archived. At least one field must be given. Returns the full, updated intake object.
| Name | Type | Req | Description |
|---|---|---|---|
| chase_at_time | string|null | – | Anchor reminders to this 24-hour local time in the client's timezone (e.g. "07:00"), overriding quiet hours. null clears it. |
| chase_interval | number | – | How often to remind, only meaningful with chase_schedule="custom". Pair with chase_interval_unit. |
| chase_interval_unit | string | – | Unit for chase_interval. |
| chase_schedule | string | – | Automated reminder cadence. default=T+2d,T+5d,T+9d,weekly. gentle=T+3d,T+8d,biweekly. aggressive=T+1d,T+3d,T+5d,every-other-day. custom=every chase_interval chase_interval_unit. off=no auto reminders. |
| client | object | – | Client fields to change. Email cannot be changed here — use manage_recipients. |
| client_brief | string|null | – | Free-text brief shown to the client at the top of the portal, above the requested items — information from you to them: an offer, instructions, or context. Up to 5000 characters. null clears it. Docu… |
| due_date | string|null | – | Deadline in YYYY-MM-DD format. null clears it. |
| folder_id | string|null | – | Move this intake to a different folder, using an id from list_folders. null removes it from any folder. |
| intake_id | string | yes | Intake ID returned by define_intake. |
| max_reminders | number|string | – | Cap on reminder attempts (1-1000), or "unlimited". Raising this above the number already sent reactivates a stalled intake. |
| owner_note | string|null | – | Private note, never shown to the client. null clears it. |
| project_name | string | – | Human-readable project name shown to the client. |
| respect_quiet_hours | boolean | – | Whether reminders pause outside 08:00-19:00 in the client's timezone. |
Structured output declared, but exposes no named fields.
No examples provided.
update_item Edit an item ~357
Change one item on an intake that is already with the client — its type, label, hint, whether it is required, and which file formats it accepts. Reach for this when the field turns out to be the wrong shape: you asked for an image and the client only has their logo as a PDF, or what you asked for as a line of text is really a file. Widening the accepted formats or switching the type unblocks them without adding a duplicate item and waiving the original. The item key cannot be changed — results come back under it, so renaming would break whatever reads them. Add a new item instead. If the client has already answered and the change would make their answer invalid, the call fails and nothing is touched. Repeat it with discard_submitted_value: true to clear the answer and ask them again. A change that leaves their answer valid (a new label, a wider limit) never discards anything.
| Name | Type | Req | Description |
|---|---|---|---|
| constraints | object|null | – | Same shape as define_intake, e.g. { "formats": ["svg","png","pdf"] }. null clears all constraints. |
| discard_submitted_value | boolean | – | Go ahead even though it throws away what the client already sent. Only set this after the call has failed once for that reason. |
| help | string|null | – | Hint under the label. null clears it. |
| intake_id | string | yes | Intake ID returned by define_intake. |
| item_key | string | yes | Key of the item to change. |
| label | string | – | Human-readable label shown to the client. |
| options | array|null | – | – |
| pattern | string|null | – | – |
| required | boolean | – | – |
| type | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| discarded_submitted_value | boolean | – | – |
| item | object | – | – |
No examples provided.
What is the BriefGate MCP server?
BriefGate is an MCP server listed in the public MCP registry as io.github.sekera-radim/briefgate. Client intake for AI agents: get files, copy and logins from clients, chased automatically. This page covers its npm package (@briefgate/mcp).
Is the BriefGate MCP server safe to use?
BriefGate scores 87 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 21 September 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the BriefGate MCP server expose?
BriefGate exposes 15 tools: define_intake, get_intake_status, get_intake_results, request_revision, send_chase, and 10 more. Their descriptions and schemas cost roughly 5,135 tokens of context every time the server is loaded.
Is the BriefGate MCP server still maintained?
BriefGate is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the BriefGate MCP server under?
BriefGate declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.