Competitive intelligence: tracked competitors, evidence-backed signals, digests and battlecards.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
The talking point, in plain text
An id from list_competitors
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
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.
| Argument | Type | Description |
|---|---|---|
| body* | string | The talking point, in plain text |
| competitor_id* | integer | An id from list_competitors |
{
"type": "object",
"required": [
"competitor_id",
"body"
],
"properties": {
"body": {
"type": "string",
"maxLength": 2000,
"minLength": 1,
"description": "The talking point, in plain text"
},
"competitor_id": {
"type": "integer",
"description": "An id from list_competitors"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| website_url* | string | The competitor's website, such as https://acme.example |
{
"type": "object",
"required": [
"website_url"
],
"properties": {
"website_url": {
"type": "string",
"maxLength": 500,
"description": "The competitor's website, such as https://acme.example"
}
},
"additionalProperties": false
}Adds a talking point to a digest. The team sees it in the workspace.
| Argument | Type | Description |
|---|---|---|
| body* | string | The talking point, in plain text |
| digest_id* | string | A digest id or slug from list_digests |
{
"type": "object",
"required": [
"digest_id",
"body"
],
"properties": {
"body": {
"type": "string",
"maxLength": 2000,
"minLength": 1,
"description": "The talking point, in plain text"
},
"digest_id": {
"type": "string",
"description": "A digest id or slug from list_digests"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| url* | string | The full page address |
| competitor_id* | integer | An id from list_competitors |
{
"type": "object",
"required": [
"competitor_id",
"url"
],
"properties": {
"url": {
"type": "string",
"maxLength": 2000,
"description": "The full page address"
},
"competitor_id": {
"type": "integer",
"description": "An id from list_competitors"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| body* | string | The talking point, in plain text |
| signal_id* | integer | An id from search_signals or what_changed |
{
"type": "object",
"required": [
"signal_id",
"body"
],
"properties": {
"body": {
"type": "string",
"maxLength": 2000,
"minLength": 1,
"description": "The talking point, in plain text"
},
"signal_id": {
"type": "integer",
"description": "An id from search_signals or what_changed"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| plan* | string | The plan to buy. get_plan_and_limits shows the current plan. |
| interval | string | Bill each month (the default) or each year. |
| idempotency_key* | string | 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. |
{
"type": "object",
"required": [
"plan",
"idempotency_key"
],
"properties": {
"plan": {
"enum": [
"starter",
"growth",
"portfolio"
],
"type": "string",
"description": "The plan to buy. get_plan_and_limits shows the current plan."
},
"interval": {
"enum": [
"month",
"year"
],
"type": "string",
"description": "Bill each month (the default) or each year."
},
"idempotency_key": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "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."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| expiry | string | How long the link works. Starter and a paused workspace allow only 24h, and any other choice becomes 24h there. |
| signal_id* | integer | An id from search_signals or what_changed |
| include_notes | boolean | Show the team's talking points on the public page |
| idempotency_key* | string | 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. |
{
"type": "object",
"required": [
"signal_id",
"idempotency_key"
],
"properties": {
"expiry": {
"enum": [
"never",
"24h",
"7d",
"30d",
"90d"
],
"type": "string",
"default": "24h",
"description": "How long the link works. Starter and a paused workspace allow only 24h, and any other choice becomes 24h there."
},
"signal_id": {
"type": "integer",
"description": "An id from search_signals or what_changed"
},
"include_notes": {
"type": "boolean",
"default": false,
"description": "Show the team's talking points on the public page"
},
"idempotency_key": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "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."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| idempotency_key* | string | 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. |
{
"type": "object",
"required": [
"idempotency_key"
],
"properties": {
"idempotency_key": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "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."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| competitor_id* | integer | An id from list_competitors |
| idempotency_key* | string | 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. |
{
"type": "object",
"required": [
"competitor_id",
"idempotency_key"
],
"properties": {
"competitor_id": {
"type": "integer",
"description": "An id from list_competitors"
},
"idempotency_key": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "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."
}
},
"additionalProperties": false
}Gets one battlecard by competitor_id or battlecard_id. Use it when the user prepares a sales call against a competitor.
| Argument | Type | Description |
|---|---|---|
| battlecard_id | integer | An id from list_battlecards |
| competitor_id | integer | An id from list_competitors |
{
"type": "object",
"properties": {
"battlecard_id": {
"type": "integer",
"description": "An id from list_battlecards"
},
"competitor_id": {
"type": "integer",
"description": "An id from list_competitors"
}
},
"additionalProperties": false
}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.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| competitor_id* | integer | An id from list_competitors |
{
"type": "object",
"required": [
"competitor_id"
],
"properties": {
"competitor_id": {
"type": "integer",
"description": "An id from list_competitors"
}
},
"additionalProperties": false
}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.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| id | string | A digest id or slug from list_digests |
| type | string | A digest type, such as daily_digest |
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "A digest id or slug from list_digests"
},
"type": {
"type": "string",
"description": "A digest type, such as daily_digest"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| signal_id* | integer | An id from search_signals |
{
"type": "object",
"required": [
"signal_id"
],
"properties": {
"signal_id": {
"type": "integer",
"description": "An id from search_signals"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| string | Optional. The email address the person will use. The answer then says how many free brief requests it has left today. |
{
"type": "object",
"properties": {
"email": {
"type": "string",
"format": "email",
"maxLength": 254,
"description": "Optional. The email address the person will use. The answer then says how many free brief requests it has left today."
}
},
"additionalProperties": false
}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.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| url | string | The brief URL, such as https://debriefing.io/briefs/crayon/2026-09-28 |
| slug | string | The date part of the brief URL, such as 2026-09-28 |
| company_slug | string | The company part of the brief URL, such as crayon |
{
"type": "object",
"properties": {
"url": {
"type": "string",
"maxLength": 500,
"description": "The brief URL, such as https://debriefing.io/briefs/crayon/2026-09-28"
},
"slug": {
"type": "string",
"maxLength": 100,
"description": "The date part of the brief URL, such as 2026-09-28"
},
"company_slug": {
"type": "string",
"maxLength": 100,
"description": "The company part of the brief URL, such as crayon"
}
},
"additionalProperties": false
}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.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| email* | string | |
| idempotency_key* | string | 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. |
{
"type": "object",
"required": [
"email",
"idempotency_key"
],
"properties": {
"email": {
"type": "string",
"format": "email",
"maxLength": 320
},
"idempotency_key": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "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."
}
},
"additionalProperties": false
}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.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}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.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| type | string | A digest type, such as daily_digest or weekly_tldr |
| limit | integer |
{
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "A digest type, such as daily_digest or weekly_tldr"
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1
}
},
"additionalProperties": false
}Lists the people in the workspace with their roles. An admin also sees pending invitations.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Pins a digest for the whole team, or removes the pin with pinned false.
| Argument | Type | Description |
|---|---|---|
| pinned | boolean | |
| digest_id* | string | A digest id or slug from list_digests |
{
"type": "object",
"required": [
"digest_id"
],
"properties": {
"pinned": {
"type": "boolean",
"default": true
},
"digest_id": {
"type": "string",
"description": "A digest id or slug from list_digests"
}
},
"additionalProperties": false
}Pins a signal for the whole team, or removes the pin with pinned false.
| Argument | Type | Description |
|---|---|---|
| pinned | boolean | |
| signal_id* | integer | An id from search_signals or what_changed |
{
"type": "object",
"required": [
"signal_id"
],
"properties": {
"pinned": {
"type": "boolean",
"default": true
},
"signal_id": {
"type": "integer",
"description": "An id from search_signals or what_changed"
}
},
"additionalProperties": false
}Scores a digest from 1 to 5, says what is missing from it, or both. A new rating replaces your old one.
| Argument | Type | Description |
|---|---|---|
| score | integer | |
| comment | string | What is missing from the digest |
| digest_id* | string | A digest id or slug from list_digests |
{
"type": "object",
"required": [
"digest_id"
],
"properties": {
"score": {
"type": "integer",
"maximum": 5,
"minimum": 1
},
"comment": {
"type": "string",
"maxLength": 2000,
"description": "What is missing from the digest"
},
"digest_id": {
"type": "string",
"description": "A digest id or slug from list_digests"
}
},
"additionalProperties": false
}Tells Debriefing whether a signal was useful to you. For not useful, add reasons and a comment. A new rating replaces your old one.
| Argument | Type | Description |
|---|---|---|
| useful* | boolean | |
| comment | string | |
| reasons | array | Only when useful is false |
| signal_id* | integer | An id from search_signals or what_changed |
{
"type": "object",
"required": [
"signal_id",
"useful"
],
"properties": {
"useful": {
"type": "boolean"
},
"comment": {
"type": "string",
"maxLength": 2000
},
"reasons": {
"type": "array",
"items": {
"enum": [
"wrong",
"old_news",
"not_relevant",
"already_knew"
],
"type": "string"
},
"description": "Only when useful is false"
},
"signal_id": {
"type": "integer",
"description": "An id from search_signals or what_changed"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| idempotency_key* | string | 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. |
{
"type": "object",
"required": [
"idempotency_key"
],
"properties": {
"idempotency_key": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "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."
}
},
"additionalProperties": false
}Takes one core competitor off the watchlist. Debriefing stops monitoring it and keeps its history. Admin only, on a paid plan.
| Argument | Type | Description |
|---|---|---|
| competitor_id* | integer | An id from list_competitors |
{
"type": "object",
"required": [
"competitor_id"
],
"properties": {
"competitor_id": {
"type": "integer",
"description": "An id from list_competitors"
}
},
"additionalProperties": false
}Stops watching a page that someone added on a core competitor. Name it by page_id or url. Admin only, on a paid plan.
| Argument | Type | Description |
|---|---|---|
| url | string | |
| page_id | integer | An id from add_monitored_page |
| competitor_id* | integer | An id from list_competitors |
{
"type": "object",
"required": [
"competitor_id"
],
"properties": {
"url": {
"type": "string",
"maxLength": 2000
},
"page_id": {
"type": "integer",
"description": "An id from add_monitored_page"
},
"competitor_id": {
"type": "integer",
"description": "An id from list_competitors"
}
},
"additionalProperties": false
}Changes the display name of one tracked competitor. Admin only.
| Argument | Type | Description |
|---|---|---|
| name* | string | |
| competitor_id* | integer | An id from list_competitors |
{
"type": "object",
"required": [
"competitor_id",
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1
},
"competitor_id": {
"type": "integer",
"description": "An id from list_competitors"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| email* | string | The person's work email. The brief goes there, and the person signs up with it. |
| company_url* | string | The person's company website, such as acme.example |
| person_consented* | boolean | True only when the person agreed that Debriefing researches their company and emails them the brief. |
| competitor_domains | array | Optional. Competitor domains to research first, such as rival.example |
{
"type": "object",
"required": [
"email",
"company_url",
"person_consented"
],
"properties": {
"email": {
"type": "string",
"format": "email",
"maxLength": 254,
"description": "The person's work email. The brief goes there, and the person signs up with it."
},
"company_url": {
"type": "string",
"maxLength": 300,
"minLength": 3,
"description": "The person's company website, such as acme.example"
},
"person_consented": {
"type": "boolean",
"description": "True only when the person agreed that Debriefing researches their company and emails them the brief."
},
"competitor_domains": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200
},
"maxItems": 10,
"description": "Optional. Competitor domains to research first, such as rival.example"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| competitor_id* | integer | An id from list_competitors |
| idempotency_key* | string | 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. |
{
"type": "object",
"required": [
"competitor_id",
"idempotency_key"
],
"properties": {
"competitor_id": {
"type": "integer",
"description": "An id from list_competitors"
},
"idempotency_key": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "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."
}
},
"additionalProperties": false
}Saves a signal to your own saved list, or removes it with saved false. Only you see your saved signals.
| Argument | Type | Description |
|---|---|---|
| saved | boolean | |
| signal_id* | integer | An id from search_signals or what_changed |
{
"type": "object",
"required": [
"signal_id"
],
"properties": {
"saved": {
"type": "boolean",
"default": true
},
"signal_id": {
"type": "integer",
"description": "An id from search_signals or what_changed"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| query* | string | Words to find, such as battlecard or win-loss interview |
| collection | string | Only search one part of the library |
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1
},
"query": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Words to find, such as battlecard or win-loss interview"
},
"collection": {
"enum": [
"guides",
"intel",
"glossary",
"comparisons",
"alternatives",
"competitive-profiles",
"media-monitoring-pricing"
],
"type": "string",
"description": "Only search one part of the library"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| query | string | Words to find in the brief, such as pricing or launch |
| company | string | A company name, slug, or domain, such as Crayon or crayon.co |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1
},
"query": {
"type": "string",
"maxLength": 200,
"description": "Words to find in the brief, such as pricing or launch"
},
"company": {
"type": "string",
"maxLength": 200,
"description": "A company name, slug, or domain, such as Crayon or crayon.co"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| query | string | Words to find in the signal title or summary |
| since | string | ISO 8601 time. Only signals after this time. |
| severity | string | |
| competitor_id | integer | An id from list_competitors |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1
},
"query": {
"type": "string",
"description": "Words to find in the signal title or summary"
},
"since": {
"type": "string",
"description": "ISO 8601 time. Only signals after this time."
},
"severity": {
"enum": [
"low",
"medium",
"high"
],
"type": "string"
},
"competitor_id": {
"type": "integer",
"description": "An id from list_competitors"
}
},
"additionalProperties": false
}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.
| Argument | Type | 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 |
{
"type": "object",
"properties": {
"email": {
"type": "boolean"
},
"slack": {
"type": "boolean",
"description": "Every Slack post. Off sends nothing to Slack."
},
"slack_alerts": {
"type": "boolean",
"description": "Each high signal alert in Slack"
},
"slack_digest": {
"type": "boolean",
"description": "The daily digest in Slack"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| cadence* | string | A cadence from get_delivery_settings, such as weekly |
{
"type": "object",
"required": [
"cadence"
],
"properties": {
"cadence": {
"type": "string",
"description": "A cadence from get_delivery_settings, such as weekly"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| name | string | |
| industry | string | |
| hq_country | string | |
| description | string | |
| website_url | string | |
| company_size | integer | |
| company_type | string | |
| differentiators | array | Up to 12 short items |
| market_position | string | |
| target_customer | string | |
| market_direction |
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.
| Argument | Type | Description |
|---|---|---|
| use_cases | array | Use cases |
| industries | array | Industries |
| user_roles | array | User roles |
| buyer_roles | array | Buyer roles |
| geographies | array | Geographies |
| company_sizes | array | Company sizes |
| company_stages | array | Company stages |
| customer_types | array | Customer types |
| idempotency_key |
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.
| Argument | Type | Description |
|---|---|---|
| limit | integer | The most rows of each kind |
| since* | string | ISO 8601 time, such as 2026-10-01T00:00:00Z |
{
"type": "object",
"required": [
"since"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "The most rows of each kind"
},
"since": {
"type": "string",
"description": "ISO 8601 time, such as 2026-10-01T00:00:00Z"
}
},
"additionalProperties": false
}| string |
| primary_category | string |
| self_positioning | string |
| operating_regions | array | Regions where the company sells |
| value_propositions | array | Up to 12 short items |
| positioning_exclusions | array | What the company does not do. Up to 12 short items |
{
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 255
},
"industry": {
"type": "string"
},
"hq_country": {
"type": "string"
},
"description": {
"type": "string",
"maxLength": 2000
},
"website_url": {
"type": "string",
"maxLength": 500
},
"company_size": {
"type": "integer",
"minimum": 1
},
"company_type": {
"enum": [
"software_vendor",
"service_provider",
"marketplace",
"ecommerce_brand",
"media_publisher",
"nonprofit",
"government",
"fintech_institution",
"healthcare_provider",
"manufacturer",
"education_provider",
"other"
],
"type": "string"
},
"differentiators": {
"type": "array",
"items": {
"type": "string"
},
"description": "Up to 12 short items"
},
"market_position": {
"type": "string"
},
"target_customer": {
"type": "string"
},
"market_direction": {
"type": "string"
},
"primary_category": {
"type": "string"
},
"self_positioning": {
"type": "string"
},
"operating_regions": {
"type": "array",
"items": {
"type": "string"
},
"description": "Regions where the company sells"
},
"value_propositions": {
"type": "array",
"items": {
"type": "string"
},
"description": "Up to 12 short items"
},
"positioning_exclusions": {
"type": "array",
"items": {
"type": "string"
},
"description": "What the company does not do. Up to 12 short items"
}
},
"additionalProperties": false
}| string |
| 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. |
{
"type": "object",
"required": [
"idempotency_key"
],
"properties": {
"use_cases": {
"type": "array",
"items": {
"type": "string"
},
"description": "Use cases"
},
"industries": {
"type": "array",
"items": {
"type": "string"
},
"description": "Industries"
},
"user_roles": {
"type": "array",
"items": {
"type": "string"
},
"description": "User roles"
},
"buyer_roles": {
"type": "array",
"items": {
"type": "string"
},
"description": "Buyer roles"
},
"geographies": {
"type": "array",
"items": {
"type": "string"
},
"description": "Geographies"
},
"company_sizes": {
"type": "array",
"items": {
"type": "string"
},
"description": "Company sizes"
},
"company_stages": {
"type": "array",
"items": {
"type": "string"
},
"description": "Company stages"
},
"customer_types": {
"type": "array",
"items": {
"type": "string"
},
"description": "Customer types"
},
"idempotency_key": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "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."
}
},
"additionalProperties": false
}