Debriefing
REMOTE · DEBRIEFING.IO
Competitive intelligence: tracked competitors, evidence-backed signals, digests and battlecards.
Available components
Last scanned (20 hours ago)
Scores higher than 99% of remote servers
Reachable. Last reached 4 Nov 2026.
Category Marketing and SEO
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security97
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server supports Client ID Metadata Documents, the current MCP client-registration mechanism. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability74
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 4458 tokens (~103/item across 43 items; 43 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 Management93
- Stability observed for 28 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage92
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 74% of tool parameters carry a description.Partial
- Structured output schemas are declared (100% 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 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 44 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
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.
- 4 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
- 2 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 31 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 77 to 80. That category is still filling its 30-day observation window: 23 days of observed history at the previous scan, 24 at this one. The score rises as the window fills, whether or not the server changes.
- 29 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 70 to 73. That category is still filling its 30-day observation window: 21 days of observed history at the previous scan, 22 at this one. The score rises as the window fills, whether or not the server changes.
- 27 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.
- 25 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 57 to 60. That category is still filling its 30-day observation window: 17 days of observed history at the previous scan, 18 at this one. The score rises as the window fills, whether or not the server changes.
- 23 Oct 26 0
- Tool “create_checkout_link” rewrote its description, which is the text the model reads security
- Tool “create_share_link” rewrote its description, which is the text the model reads security
- Tool “draft_positioning” rewrote its description, which is the text the model reads security
- Tool “generate_battlecard” rewrote its description, which is the text the model reads security
- Tool “get_plan_and_limits” rewrote its description, which is the text the model reads security
- Tool “update_icp” rewrote its description, which is the text the model reads security
- Schema quality: pass → fail ▼ functional
- “create_share_link” reworded the description of “expiry” cosmetic
- 22 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.
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 4 Nov 2026 · Probed https://debriefing.io/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=debriefing.io | CN=YE2,O=Let's Encrypt,C=US | 13 Sept 2026 | 12 Dec 2026 | ECDSA 256 | ECDSA-SHA384 | 6631caba9d421c8f0d5f961ad054f29cecb |
| SANs: debriefing.io | ||||||
| CN=YE2,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 4df3b15dd6c0784c507cd37b58e6f115 |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of debriefing.io. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| io. | present | 38690 | 8 | Verified |
| debriefing.io. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
WWW-Authenticate challenge Bearer resource_metadata="https://debriefing.io/.well-known/oauth-protected-resource/mcp", scope="read write spend"
Bearer resource_metadata="https://debriefing.io/.well-known/oauth-protected-resource/mcp", scope="read write spend" | Header | Value |
|---|---|
| strict-transport-security | max-age=63072000; includeSubDomains |
| x-content-type-options | nosniff |
| x-frame-options | SAMEORIGIN |
| referrer-policy | strict-origin-when-cross-origin |
Protected resource metadata
| Document | https://debriefing.io/.well-known/oauth-protected-resource/mcp |
|---|---|
| Retrieved | Yes |
| Resource | https://debriefing.io/mcp |
| Authorisation server | https://debriefing.io |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://debriefing.io/mcp | Verified | 200 | |
| http (plaintext) | http://debriefing.io/mcp | HTTPS enforced | 301 | https://debriefing.io/mcp |
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_battlecard_note Add a note to a battlecard ~73
Adds what the team knows about a core competitor that no page says. The next rewrite of its battlecard reads the note as framing, never as a verified fact.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | yes | The talking point, in plain text |
| competitor_id | integer | yes | An id from list_competitors |
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | yes | – |
| note | object | – | – |
| ok | boolean | yes | – |
No examples provided.
add_competitor Add competitor ~73
Adds a competitor to the workspace's core watchlist from its website. Debriefing then monitors it. Admin only. The plan sets how many core competitors fit; get_plan_and_limits shows the free slots.
| Name | Type | Req | Description |
|---|---|---|---|
| website_url | string | yes | The competitor's website, such as https://acme.example |
| Name | Type | Req | Description |
|---|---|---|---|
| competitor | object | – | – |
| message | string | yes | – |
| ok | boolean | yes | – |
No examples provided.
add_digest_note Add a talking point to a digest ~57
Adds a talking point to a digest. The team sees it in the workspace.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | yes | The talking point, in plain text |
| digest_id | string | yes | A digest id or slug from list_digests |
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | yes | – |
| note | object | – | – |
| ok | boolean | yes | – |
No examples provided.
add_monitored_page Monitor a competitor page ~83
Asks Debriefing to watch one more page of a core competitor, such as its pricing page. Changes on it then show up as signals. Up to 10 pages per competitor. Admin only, on a paid plan.
| Name | Type | Req | Description |
|---|---|---|---|
| competitor_id | integer | yes | An id from list_competitors |
| url | string | yes | The full page address |
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | yes | – |
| monitored_pages | array | – | – |
| ok | boolean | yes | – |
| page | object | – | – |
No examples provided.
add_signal_note Add a talking point to a signal ~69
Adds a talking point to a signal. The team sees it in the workspace. It never appears on a public link unless the link includes notes.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | yes | The talking point, in plain text |
| signal_id | integer | yes | An id from search_signals or what_changed |
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | yes | – |
| note | object | – | – |
| ok | boolean | yes | – |
No examples provided.
create_checkout_link Create a checkout link ~237
Creates a Stripe Checkout link that buys one Debriefing plan for this workspace. It charges nothing. The admin opens the link in a browser, checks the price, and pays there. Give the link to the person; never complete the payment for them. The link expires after 24 hours. A new customer gets a 3-day free trial: Stripe takes a card, charges nothing for 3 days, then charges the plan price unless the person cancels. A repeat customer pays at once. The first payment has a 14-day money-back guarantee, once per customer. Admin only. Send an idempotency_key. A retry with the same idempotency_key returns the first answer and does not act again.
| Name | Type | Req | Description |
|---|---|---|---|
| idempotency_key | string | yes | A unique string you make for this request, such as a UUID. Send the same key when you retry, and Debriefing returns the first answer instead of acting twice. |
| interval | string | – | Bill each month (the default) or each year. |
| plan | string | yes | The plan to buy. get_plan_and_limits shows the current plan. |
| Name | Type | Req | Description |
|---|---|---|---|
| checkout_url | string | – | – |
| free_trial | boolean | – | – |
| interval | string | – | – |
| message | string | yes | – |
| money_back_guarantee | boolean | – | – |
| ok | boolean | yes | – |
| plan | string | – | – |
| price | object | – | – |
| replayed | boolean | – | True when this answer repeats an earlier call with the same idempotency_key. |
No examples provided.
create_share_link Create a public link to a signal ~194
Makes a public link to one signal that anyone with the address can open. A new link replaces the old one, which stops working. The plan sets how long a link can live; Starter and a paused workspace allow 24 hours. Send an idempotency_key. A retry with the same idempotency_key returns the first answer and does not act again.
| Name | Type | Req | Description |
|---|---|---|---|
| expiry | string | – | How long the link works. Starter and a paused workspace allow only 24h, and any other choice becomes 24h there. |
| idempotency_key | string | yes | A unique string you make for this request, such as a UUID. Send the same key when you retry, and Debriefing returns the first answer instead of acting twice. |
| include_notes | boolean | – | Show the team's talking points on the public page |
| signal_id | integer | yes | An id from search_signals or what_changed |
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | yes | – |
| ok | boolean | yes | – |
| replayed | boolean | – | True when this answer repeats an earlier call with the same idempotency_key. |
| share | object | – | – |
No examples provided.
draft_positioning Draft positioning ~162
Reads the company's own website and drafts the empty positioning fields: value propositions, differentiators, and exclusions. Filled fields stay as they are. Read the result later with get_company_profile. Admin only. Needs a paid plan or the free first week. Counts toward a daily cap per workspace that the Debriefing app shares. Send an idempotency_key. A retry with the same idempotency_key returns the first answer and does not act again. It starts no second job and uses no allowance or daily cap a second time.
| Name | Type | Req | Description |
|---|---|---|---|
| idempotency_key | string | yes | A unique string you make for this request, such as a UUID. Send the same key when you retry, and Debriefing returns the first answer instead of acting twice. |
| Name | Type | Req | Description |
|---|---|---|---|
| daily_cap | object | – | – |
| message | string | yes | – |
| ok | boolean | yes | – |
| replayed | boolean | – | True when this answer repeats an earlier call with the same idempotency_key. |
No examples provided.
generate_battlecard Write a battlecard ~175
Writes or rewrites the battlecard for one core competitor now, instead of at the next cycle. It takes about a minute; read it afterwards with get_battlecard. The competitor needs finished research. Needs a paid plan, and counts toward a daily cap per workspace that the Debriefing app shares. Send an idempotency_key. A retry with the same idempotency_key returns the first answer and does not act again. It starts no second job and uses no allowance or daily cap a second time.
| Name | Type | Req | Description |
|---|---|---|---|
| competitor_id | integer | yes | An id from list_competitors |
| idempotency_key | string | yes | A unique string you make for this request, such as a UUID. Send the same key when you retry, and Debriefing returns the first answer instead of acting twice. |
| Name | Type | Req | Description |
|---|---|---|---|
| competitor | object | – | – |
| daily_cap | object | – | – |
| message | string | yes | – |
| ok | boolean | yes | – |
| replayed | boolean | – | True when this answer repeats an earlier call with the same idempotency_key. |
No examples provided.
get_battlecard Get battlecard ~66
Gets one battlecard by competitor_id or battlecard_id. Use it when the user prepares a sales call against a competitor.
| Name | Type | Req | Description |
|---|---|---|---|
| battlecard_id | integer | – | An id from list_battlecards |
| competitor_id | integer | – | An id from list_competitors |
Structured output declared, but exposes no named fields.
No examples provided.
get_company_profile Get company profile ~44
Gets the workspace's own company profile: description, category, target customer, positioning lists, and the ideal customer profile. Debriefing reads every competitor move against it.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| ideal_customer_profile | object | yes | – |
| locked | boolean | yes | – |
| positioning | object | yes | – |
| profile | object | yes | – |
| url | string | – | – |
No examples provided.
get_competitor Get competitor dossier ~76
Gets the dossier for one tracked competitor: company facts, the risk and opportunity it poses to this workspace, and the stored reads on positioning, product, pricing, funding, traffic, and more. Use it when the user asks about one competitor in depth.
| Name | Type | Req | Description |
|---|---|---|---|
| competitor_id | integer | yes | An id from list_competitors |
Structured output declared, but exposes no named fields.
No examples provided.
get_delivery_settings Get delivery settings ~70
Gets how often Debriefing runs a monitoring cycle for the workspace, the cadences the plan allows, and where Debriefing sends its posts. Email and Slack each get the finished cycle. Slack also gets the daily digest and each high signal alert when those switches are on. Admin only.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| delivery_channels | object | yes | – |
| monitoring_cadence | object | yes | – |
| url | string | – | – |
No examples provided.
get_digest Get digest ~79
Gets one digest by id or slug, or the newest digest when no id is given. Pass type daily_digest for the newest daily digest. Use it when the user asks for the latest brief.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | – | A digest id or slug from list_digests |
| type | string | – | A digest type, such as daily_digest |
Structured output declared, but exposes no named fields.
No examples provided.
get_evidence Get signal evidence ~51
Gets the evidence behind one signal: each source excerpt with its URL and date. Use it when the user asks where a claim comes from.
| Name | Type | Req | Description |
|---|---|---|---|
| signal_id | integer | yes | An id from search_signals |
Structured output declared, but exposes no named fields.
No examples provided.
get_free_brief_link Get the free brief link ~119
Gets the debriefing.io links where a person requests a free competitive brief about their own company and competitors, signs up for a workspace, or compares plans. It only returns links. It sends nothing and creates nothing. One email address may request 3 free briefs in 24 hours. Send the person's email, with their consent, to check that limit before you give them the link.
| Name | Type | Req | Description |
|---|---|---|---|
| string | – | Optional. The email address the person will use. The answer then says how many free brief requests it has left today. |
| Name | Type | Req | Description |
|---|---|---|---|
| connect_url | string | yes | – |
| free_brief_url | string | yes | – |
| pricing_url | string | – | – |
| request_limit | object | yes | The daily limit on free brief requests. With an email, also its use today. |
| sign_up_url | string | yes | – |
| what_you_get | string | yes | – |
No examples provided.
get_plan_and_limits Get plan and limits ~105
Gets the workspace plan and every limit an agent runs into: competitor slots, the weekly research allowance, the daily caps on battlecards, ICP refreshes and positioning drafts, share link lifetimes, monitoring cadences, which features need a paid plan, the 3-day free trial (its end and first charge), the 14-day money-back guarantee, and whether the plan is set to cancel (read only: an admin cancels in Billing). Includes the pricing link.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| competitor_slots | object | yes | – |
| daily_caps | object | yes | – |
| features | object | yes | – |
| monitoring_cadences | object | – | – |
| plan | object | yes | – |
| pricing_url | string | yes | – |
| research_allowance | object | yes | – |
| share_link_expiry_choices | array | – | – |
No examples provided.
get_public_brief Get a public brief ~161
Gets one competitive brief that Debriefing published on debriefing.io: the summary, each finding with its category and date, and the numbered public sources with their URLs. Name the brief by its URL, or by company_slug and slug from search_public_briefs. With company_slug only, gets the newest brief about that company. Needs no Debriefing account.
| Name | Type | Req | Description |
|---|---|---|---|
| company_slug | string | – | The company part of the brief URL, such as crayon |
| slug | string | – | The date part of the brief URL, such as 2026-09-28 |
| url | string | – | The brief URL, such as https://debriefing.io/briefs/crayon/2026-09-28 |
| Name | Type | Req | Description |
|---|---|---|---|
| company | object | yes | – |
| coverage | object | – | – |
| description | string | – | – |
| findings | array | yes | – |
| free_brief | object | yes | – |
| markdown_url | string | – | – |
| published_on | string | – | – |
| sources | array | yes | – |
| summary | array | yes | – |
| title | string | yes | – |
| updated_on | string | – | – |
| url | string | yes | – |
No examples provided.
get_workspace Get workspace ~57
Gets the Debriefing workspace this connection works on: its name and website, who you are in it and your role, the scopes this connection holds, and the plan. Call it first when you are not sure what you may do.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| connection | object | yes | – |
| counts | object | – | – |
| id | integer | yes | – |
| name | string | yes | – |
| plan | object | yes | – |
| url | string | – | – |
| website_url | string|null | – | – |
| you | object|null | – | – |
No examples provided.
invite_member Invite a teammate ~124
Sends an email invitation to join the workspace as a member. The invitation lasts 7 days. Inviting the same address again sends a fresh email. Admin only, on a paid plan. Send an idempotency_key. A retry with the same idempotency_key returns the first answer and does not act again.
| Name | Type | Req | Description |
|---|---|---|---|
| string | yes | – | |
| idempotency_key | string | yes | A unique string you make for this request, such as a UUID. Send the same key when you retry, and Debriefing returns the first answer instead of acting twice. |
| Name | Type | Req | Description |
|---|---|---|---|
| invitation | object | – | – |
| message | string | yes | – |
| ok | boolean | yes | – |
| replayed | boolean | – | True when this answer repeats an earlier call with the same idempotency_key. |
No examples provided.
list_battlecards List battlecards ~44
Lists the battlecards Debriefing wrote for this workspace, one for each competitor that has one. A battlecard holds talk tracks for sales calls against that competitor.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | – |
No examples provided.
list_competitors List competitors ~47
Lists the competitors this Debriefing workspace tracks, with the id, name, website, and category of each. Call it first to get the competitor_id that other tools take.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | – |
No examples provided.
list_digests List digests ~75
Lists the digests Debriefing wrote for this workspace, newest first. A digest is a brief that sums up competitor moves over a period. Filter by type, such as daily_digest.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| type | string | – | A digest type, such as daily_digest or weekly_tldr |
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | – |
No examples provided.
list_members List members ~25
Lists the people in the workspace with their roles. An admin also sees pending invitations.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | – |
| pending_invitations | array | – | – |
No examples provided.
pin_digest Pin a digest ~49
Pins a digest for the whole team, or removes the pin with pinned false.
| Name | Type | Req | Description |
|---|---|---|---|
| digest_id | string | yes | A digest id or slug from list_digests |
| pinned | boolean | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| digest_id | integer | – | – |
| message | string | yes | – |
| ok | boolean | yes | – |
| pinned | boolean | – | – |
No examples provided.
pin_signal Pin a signal ~48
Pins a signal for the whole team, or removes the pin with pinned false.
| Name | Type | Req | Description |
|---|---|---|---|
| pinned | boolean | – | – |
| signal_id | integer | yes | An id from search_signals or what_changed |
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | yes | – |
| ok | boolean | yes | – |
| pinned | boolean | – | – |
| signal_id | integer | – | – |
No examples provided.
rate_digest Rate a digest ~74
Scores a digest from 1 to 5, says what is missing from it, or both. A new rating replaces your old one.
| Name | Type | Req | Description |
|---|---|---|---|
| comment | string | – | What is missing from the digest |
| digest_id | string | yes | A digest id or slug from list_digests |
| score | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | yes | – |
| ok | boolean | yes | – |
| rating | object | – | – |
No examples provided.
rate_signal Rate a signal ~83
Tells Debriefing whether a signal was useful to you. For not useful, add reasons and a comment. A new rating replaces your old one.
| Name | Type | Req | Description |
|---|---|---|---|
| comment | string | – | – |
| reasons | array | – | Only when useful is false |
| signal_id | integer | yes | An id from search_signals or what_changed |
| useful | boolean | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | yes | – |
| ok | boolean | yes | – |
| rating | object | – | – |
No examples provided.
refresh_watchlist Refresh the watchlist ~127
Refreshes the research on the core watchlist now, instead of at the next cycle. It uses one update from the weekly research allowance. Admin only. Send an idempotency_key. A retry with the same idempotency_key returns the first answer and does not act again. It starts no second job and uses no allowance or daily cap a second time.
| Name | Type | Req | Description |
|---|---|---|---|
| idempotency_key | string | yes | A unique string you make for this request, such as a UUID. Send the same key when you retry, and Debriefing returns the first answer instead of acting twice. |
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | yes | – |
| ok | boolean | yes | – |
| refresh | object | – | – |
| replayed | boolean | – | True when this answer repeats an earlier call with the same idempotency_key. |
No examples provided.
remove_competitor Remove competitor ~54
Takes one core competitor off the watchlist. Debriefing stops monitoring it and keeps its history. Admin only, on a paid plan.
| Name | Type | Req | Description |
|---|---|---|---|
| competitor_id | integer | yes | An id from list_competitors |
| Name | Type | Req | Description |
|---|---|---|---|
| competitor | object | – | – |
| message | string | yes | – |
| ok | boolean | yes | – |
No examples provided.
remove_monitored_page Stop monitoring a page ~75
Stops watching a page that someone added on a core competitor. Name it by page_id or url. Admin only, on a paid plan.
| Name | Type | Req | Description |
|---|---|---|---|
| competitor_id | integer | yes | An id from list_competitors |
| page_id | integer | – | An id from add_monitored_page |
| url | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | yes | – |
| monitored_pages | array | – | – |
| ok | boolean | yes | – |
No examples provided.
rename_competitor Rename competitor ~44
Changes the display name of one tracked competitor. Admin only.
| Name | Type | Req | Description |
|---|---|---|---|
| competitor_id | integer | yes | An id from list_competitors |
| name | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| competitor | object | – | – |
| message | string | yes | – |
| ok | boolean | yes | – |
No examples provided.
request_free_brief Request a free brief ~200
Requests a free competitive brief for a person who has no Debriefing account, and returns a claim URL. Debriefing researches the company and the competitors, and emails the brief to the person. The person opens the claim URL and signs up once, with the same email, to get a workspace that holds the brief. Ask the person first: send person_consented true only after they agree. One email address gets one brief this way; a repeat returns the same claim URL.
| Name | Type | Req | Description |
|---|---|---|---|
| company_url | string | yes | The person's company website, such as acme.example |
| competitor_domains | array | – | Optional. Competitor domains to research first, such as rival.example |
| string | yes | The person's work email. The brief goes there, and the person signs up with it. | |
| person_consented | boolean | yes | True only when the person agreed that Debriefing researches their company and emails them the brief. |
| Name | Type | Req | Description |
|---|---|---|---|
| claim_url | string | yes | – |
| company | string | – | – |
| string | yes | – | |
| next_steps | string | yes | – |
| replayed | boolean | yes | – |
| status | string | yes | – |
No examples provided.
research_competitor Research a competitor ~149
Starts the first research on one core competitor that has none yet: Debriefing reads its site and outside sources. It uses one update from the weekly research allowance. Admin only. Send an idempotency_key. A retry with the same idempotency_key returns the first answer and does not act again. It starts no second job and uses no allowance or daily cap a second time.
| Name | Type | Req | Description |
|---|---|---|---|
| competitor_id | integer | yes | An id from list_competitors |
| idempotency_key | string | yes | A unique string you make for this request, such as a UUID. Send the same key when you retry, and Debriefing returns the first answer instead of acting twice. |
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | yes | – |
| ok | boolean | yes | – |
| refresh | object | – | – |
| replayed | boolean | – | True when this answer repeats an earlier call with the same idempotency_key. |
No examples provided.
save_signal Save a signal ~55
Saves a signal to your own saved list, or removes it with saved false. Only you see your saved signals.
| Name | Type | Req | Description |
|---|---|---|---|
| saved | boolean | – | – |
| signal_id | integer | yes | An id from search_signals or what_changed |
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | yes | – |
| ok | boolean | yes | – |
| saved | boolean | – | – |
| signal_id | integer | – | – |
No examples provided.
search_guides Search CI guides ~110
Searches the public competitive intelligence library on debriefing.io: how-to guides, glossary terms, tool comparisons, alternatives pages, company profiles, and market intel posts. Returns the title, a short excerpt, and the page URL of each match, best match first. Needs no Debriefing account.
| Name | Type | Req | Description |
|---|---|---|---|
| collection | string | – | Only search one part of the library |
| limit | integer | – | – |
| query | string | yes | Words to find, such as battlecard or win-loss interview |
| Name | Type | Req | Description |
|---|---|---|---|
| free_brief | object | yes | – |
| items | array | yes | – |
No examples provided.
search_public_briefs Search public briefs ~134
Searches the competitive briefs Debriefing publishes on debriefing.io about named companies, newest first. Each brief is dated and every finding cites a public source. Filter by words in the brief and by company name, slug, or domain. With no arguments, lists the newest briefs. Needs no Debriefing account. Returns the page URL of each brief.
| Name | Type | Req | Description |
|---|---|---|---|
| company | string | – | A company name, slug, or domain, such as Crayon or crayon.co |
| limit | integer | – | – |
| query | string | – | Words to find in the brief, such as pricing or launch |
| Name | Type | Req | Description |
|---|---|---|---|
| briefs_url | string | yes | – |
| free_brief | object | yes | – |
| items | array | yes | – |
No examples provided.
search_signals Search signals ~139
Searches open signals, newest first. A signal is a competitor move that Debriefing found, such as a price change or a launch, with the source evidence. Filter by competitor_id, severity (low, medium, high), a text query, or a since time. Use it when the user asks what a competitor changed.
| Name | Type | Req | Description |
|---|---|---|---|
| competitor_id | integer | – | An id from list_competitors |
| limit | integer | – | – |
| query | string | – | Words to find in the signal title or summary |
| severity | string | – | – |
| since | string | – | ISO 8601 time. Only signals after this time. |
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | yes | – |
No examples provided.
set_delivery_channels Set delivery channels ~131
Turns delivery by email and to Slack on or off. Slack gets the finished cycle, and also the daily digest and each high signal alert when slack_digest and slack_alerts are on. Only the switches you send change. Slack needs Growth or above and a Slack connection made in the app. Channel rules for Slack are set in the app. Admin only.
| Name | Type | Req | Description |
|---|---|---|---|
| boolean | – | – | |
| slack | boolean | – | Every Slack post. Off sends nothing to Slack. |
| slack_alerts | boolean | – | Each high signal alert in Slack |
| slack_digest | boolean | – | The daily digest in Slack |
| Name | Type | Req | Description |
|---|---|---|---|
| delivery_channels | object | – | – |
| message | string | yes | – |
| ok | boolean | yes | – |
No examples provided.
set_monitoring_cadence Set monitoring cadence ~64
Sets how often Debriefing runs a monitoring cycle. The plan decides which cadences are allowed; get_delivery_settings lists them. Admin only, on a paid plan.
| Name | Type | Req | Description |
|---|---|---|---|
| cadence | string | yes | A cadence from get_delivery_settings, such as weekly |
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | yes | – |
| monitoring_cadence | object | – | – |
| ok | boolean | yes | – |
No examples provided.
update_company_profile Update company profile ~201
Changes fields of the workspace's company profile. Only the fields you send change. The lists replace the old lists. Admin only. Locked while the first brief runs.
| Name | Type | Req | Description |
|---|---|---|---|
| company_size | integer | – | – |
| company_type | string | – | – |
| description | string | – | – |
| differentiators | array | – | Up to 12 short items |
| hq_country | string | – | – |
| industry | string | – | – |
| market_direction | string | – | – |
| market_position | string | – | – |
| name | string | – | – |
| operating_regions | array | – | Regions where the company sells |
| positioning_exclusions | array | – | What the company does not do. Up to 12 short items |
| primary_category | string | – | – |
| self_positioning | string | – | – |
| target_customer | string | – | – |
| value_propositions | array | – | Up to 12 short items |
| website_url | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | yes | – |
| ok | boolean | yes | – |
| positioning | object | – | – |
| profile | object | – | – |
No examples provided.
update_icp Update ideal customer profile ~244
Sets the ideal customer profile, then re-reads how much each tracked competitor overlaps it. Only the dimensions you send change; an empty list clears one. Admin only. Needs a paid plan or the free first week. A change counts toward a daily cap per workspace that the Debriefing app shares. Locked while the first brief runs. Send an idempotency_key. A retry with the same idempotency_key returns the first answer and does not act again. It starts no second job and uses no allowance or daily cap a second time.
| Name | Type | Req | Description |
|---|---|---|---|
| buyer_roles | array | – | Buyer roles |
| company_sizes | array | – | Company sizes |
| company_stages | array | – | Company stages |
| customer_types | array | – | Customer types |
| geographies | array | – | Geographies |
| idempotency_key | string | yes | A unique string you make for this request, such as a UUID. Send the same key when you retry, and Debriefing returns the first answer instead of acting twice. |
| industries | array | – | Industries |
| use_cases | array | – | Use cases |
| user_roles | array | – | User roles |
| Name | Type | Req | Description |
|---|---|---|---|
| daily_cap | object | – | – |
| ideal_customer_profile | object | – | – |
| message | string | yes | – |
| ok | boolean | yes | – |
| replayed | boolean | – | True when this answer repeats an earlier call with the same idempotency_key. |
No examples provided.
what_changed What changed ~95
Lists everything new in the workspace since a time: signals Debriefing found, digests it wrote, and battlecards it wrote or rewrote. Use it to catch up, such as since the user's last visit.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | The most rows of each kind |
| since | string | yes | ISO 8601 time, such as 2026-10-01T00:00:00Z |
| Name | Type | Req | Description |
|---|---|---|---|
| battlecards | array | yes | – |
| digests | array | yes | – |
| signals | array | yes | – |
| since | string | yes | – |
No examples provided.
How do I install the Debriefing MCP server?
Debriefing is a hosted endpoint at https://debriefing.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · debriefing.io
claude mcp add --transport http io-debriefing-debriefing 'https://debriefing.io/mcp'
What is the Debriefing MCP server?
Debriefing is an MCP server listed in the public MCP registry as io.debriefing/debriefing. Competitive intelligence: tracked competitors, evidence-backed signals, digests and battlecards. This page covers its hosted endpoint (https://debriefing.io/mcp).
Is the Debriefing MCP server safe to use?
Debriefing scores 93 out of 100 on VerifyMCP. 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 Debriefing MCP server expose?
Debriefing exposes 43 tools: get_workspace, get_plan_and_limits, create_checkout_link, list_competitors, get_competitor, and 38 more. Their descriptions and schemas cost roughly 4,342 tokens of context every time the server is loaded.
Does the Debriefing MCP server require authentication?
Yes. Debriefing asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the Debriefing MCP server still maintained?
Debriefing is still listed as active in the MCP registry. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.