> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pepline.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# MCP tools

> Every tool the pepline MCP server exposes: one read tool and one manage tool per resource, an action per verb.

Connect an AI client to `https://app.pepline.ai/mcp` (see [Connect an AI assistant](https://docs.pepline.ai/connect-ai-assistant)). Every tool is a **resource** with an `action` field: the bare noun reads, `manage_<noun>` writes. Reads are marked read-only; a manage tool is marked destructive when any of its actions archives. Operator-only tools answer 404 to organization credentials.

Three prompts carry pepline's own playbooks — `publish_agent`, `knowledge_upkeep`, `tune_agent` — and every tool runs the same `/api/v1` call an integration would.

## Organization

The organization itself: profile, credits usage, where it stands with onboarding.

**`organization`**

| action             | params   |                                                                                                                                                                                                      |
| ------------------ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `get`              |          | Who-am-I: name, slug, agent slugs.                                                                                                                                                                   |
| `usage`            | `period` | Credits consumed vs the allowance (conversations, pages, documents at the org's rates).                                                                                                              |
| `onboarding_state` |          | Stage (choosing\_path \| open \| pre\_flow \| handoff\_pending \| completed \| skipped), agent + go-live blockers, extraction state, checklist, what awaits triage, credits, smoke-test eligibility. |

**`manage_organization`**

| action   | params                            |                                                       |
| -------- | --------------------------------- | ----------------------------------------------------- |
| `update` | `name`, `about`, `locale_default` | Edit the profile (the logo stays a dashboard upload). |

## Organizations (operator) (operator only)

OPERATOR credentials only (404 otherwise): every organization on the platform, provisioning, credits, hand-off.

**`organizations`**

| action | params                    |                                                                               |
| ------ | ------------------------- | ----------------------------------------------------------------------------- |
| `list` | `limit`, `starting_after` | Slug, name, dormant — the slugs every org-scoped tool's `organization` takes. |

**`manage_organizations`**

| action             | params                                                                                                        |                                                                                                                                                                                                                                                                                                                            |
| ------------------ | ------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `provision`        | `name*`, `owner_email*`, `owner_name`, `agent_name`, `starter`                                                | Create an organization + owner (+ first agent when agent\_name). A brand-new owner is EMAILED an invitation (invitation\_url in the response as fallback); an existing account is seated directly. Trial allowance granted at once, NO 30-day clock (starts when the owner accepts, or via update\_credits trial started). |
| `update_credits`   | `slug*`, `monthly_credit_allowance`, `platform_daily_credit_budget`, `platform_weekly_credit_budget`, `trial` | Grant or adjust credits: allowance override, burst caps, trial state. Omit a field to leave it untouched; returns the trial + credits state.                                                                                                                                                                               |
| `hand_off`         | `slug*`                                                                                                       | Declare a demo organization READY for its owner: the claimed owner lands on the handoff page (meet the agent, review what it knows, go live). Refused (422) until the org has an agent. Idempotent. Curate first.                                                                                                          |
| `withdraw_handoff` | `slug*`                                                                                                       | Take a hand-off back (the owner lands on conversations again).                                                                                                                                                                                                                                                             |

## Agents

The organization's agents: who exists, their funnel, their widget settings; provisioning and go-live.

**`agents`**

| action           | params   |                                                                                                                                                                                |
| ---------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `list`           |          | Slug, name, status, publishable key.                                                                                                                                           |
| `funnel`         | `agent*` | Event counts per stage (impressions → opened → started → completed → deliverable, then opened / qualified meeting / closed) and the split per attribution source and campaign. |
| `widget_setting` | `agent*` | Widget settings + hosted-page dressing.                                                                                                                                        |

**`manage_agents`**

| action                  | params                                                                                                                                                          |                                                                                                                            |
| ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| `provision`             | `name*`, `starter`                                                                                                                                              | Provision an agent from a catalog starter. Starts PAUSED with empty activations.                                           |
| `update`                | `agent*`, `name`, `status`                                                                                                                                      | Rename and/or set status.                                                                                                  |
| `update_widget_setting` | `agent*`, `consent_text`, `offline_message`, `offline_cta`, `locale_default`, `allowed_domains`, `theme`, `reply_pace`, `hosted_page`, `translations`, `chrome` | Runtime knobs — serve immediately. translations merge per-locale field-by-field; hosted\_page carries headline/intro copy. |

## Knowledge sources

What the agent reads: sources (text, url, file, website) and the pages beneath a website source.

**`knowledge_sources`**

| action    | params                           |                                                                                                                                           |
| --------- | -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| `list`    | `status`, `kind`                 | Status, entries, freshness.                                                                                                               |
| `get`     | `id*`                            | Status, digest, entry counts, body for single-entry kinds.                                                                                |
| `entries` | `id*`, `limit`, `starting_after` | The page-grained truth beneath a source (one per crawled page): title, url, status, failure\_reason, ingested\_at.                        |
| `updates` | `id*`, `limit`, `starting_after` | Refresh runs (trigger, status, stats) — the ledger behind status and freshness.                                                           |
| `pages`   | `id*`, `q`, `limit`              | Discovered-but-unread pages of a website source (what the last refresh mapped but did not read) — the allowlist add\_pages promotes from. |

**`manage_knowledge_sources`**

| action          | params                                                                                                                                  |                                                                                                                                                                                                                                                    |
| --------------- | --------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `create`        | `kind*`, `title`, `body`, `url`, `max_pages`, `external_id`, `language`, `agents`, `reading_brief`, `refresh_every`, `knowledge_gap_id` | kind text (body) \| url (one page) \| website (crawls async — never poll, say what is running) \| file (base64 body). agents activates it for those agents.                                                                                        |
| `update`        | `id*`, `title`, `language`, `body`, `max_pages`, `metadata`, `agents`, `reading_brief`, `refresh_every`                                 | title, language, reading\_brief, refresh\_every, metadata; agents REPLACES the activation set (pass the full list); body only on text sources (re-reads it); max\_pages only on website sources. A brief change re-reads cached pages (0 credits). |
| `refresh`       | `id*`                                                                                                                                   | Re-fetch / re-crawl / re-process (one verb for every kind, async).                                                                                                                                                                                 |
| `archive`       | `id*`                                                                                                                                   | Leaves every agent's world, keeps its history (never destroyed). Idempotent.                                                                                                                                                                       |
| `restore`       | `id*`                                                                                                                                   | Un-archive.                                                                                                                                                                                                                                        |
| `add_pages`     | `id*`, `urls`, `all_matching`, `q`, `note`                                                                                              | Promote discovered pages into read entries: urls, or all\_matching with q. New pages are pinned and read now; pages un-ingested earlier revive with their curation intact.                                                                         |
| `update_entry`  | `id*`, `entry_id*`, `reading_note`, `link_excluded`                                                                                     | Curate one page: reading\_note (what to look for on THIS page), link\_excluded.                                                                                                                                                                    |
| `refresh_entry` | `id*`, `entry_id*`                                                                                                                      | Re-read ONE page now, fresh from the site (goes pending; an unchanged body keeps its chunks).                                                                                                                                                      |
| `archive_entry` | `id*`, `entry_id*`                                                                                                                      | Un-ingest a page: back to the discovered list, chunks drop, facts go dormant (not archived).                                                                                                                                                       |
| `restore_entry` | `id*`, `entry_id*`                                                                                                                      | Re-ingest a page — pinned again, facts reclaimed with their curation intact.                                                                                                                                                                       |

## Knowledge facts

Atomic knowledge the agent reads every turn (source → facts), and the machine-change ledger beneath it.

**`knowledge_facts`**

| action    | params                                                                                             |                                                                                                                                             |
| --------- | -------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| `list`    | `source_id`, `topic`, `core`, `tier`, `origin`, `reviewed`, `view`, `q`, `limit`, `starting_after` | Newest first (to REVIEW pending facts, review(queue) is the front door). Filters: source\_id, topic, core, tier, origin, reviewed, view, q. |
| `changes` | `source_id`, `fact_id`, `kind`, `reverted`, `limit`, `starting_after`                              | Silent machine changes re-reads made: text\_updated, retired (the page stopped saying it), reclaimed (came back), merged. Newest first.     |

**`manage_knowledge_facts`**

| action          | params                         |                                                                                                                                                             |
| --------------- | ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `create`        | `source_id*`, `text*`          | Author an owner fact on a source — never rewritten or retired by later re-reads.                                                                            |
| `update`        | `id*`, `text`, `topic`, `core` | New text makes it owner-curated; topic pins the subject (null clears); core pins the label (made core → always on).                                         |
| `review`        | `id or ids`                    | Mark reviewed (the triage bless — clears the pending queue). id or ids.                                                                                     |
| `archive`       | `id or ids`, `scope`           | The agent stops seeing it AND later re-reads won't re-mint an equivalent (scope). id or ids.                                                                |
| `restore`       | `id*`                          | Un-archive.                                                                                                                                                 |
| `pin`           | `id*`, `tier*`                 | Pin the tier (retrieval only; the core label is update's core). Pinned tiers survive re-reads and the always-on budget.                                     |
| `unpin`         | `id*`                          | Back to the machine's judgment.                                                                                                                             |
| `exclude`       | `id*`, `agent*`                | Switch a fact OFF for one agent (sparse exception beneath the source activation gate).                                                                      |
| `include`       | `id*`, `agent*`                | Switch it back on for that agent.                                                                                                                           |
| `revert_change` | `change_id*`                   | Revert one machine change — owner curation, not plain undo: the restored fact flips to owner origin. Reclaims are never revertible; already reverted → 409. |

## Ingestion instructions

"Look for" asks (D98): what the reader was told to capture on a source (every page), a page, or around a fact. Steering only — a fact still needs a verbatim excerpt; reached pages re-read from cached text (0 credits).

**`ingestion_instructions`**

| action | params                                                                |                                                                                                             |
| ------ | --------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| `list` | `source_id`, `entry_id`, `fact_id`, `view`, `limit`, `starting_after` | Filters: source\_id, entry\_id, fact\_id, view. state: looked \| re-reading \| null (reaches no live page). |

**`manage_ingestion_instructions`**

| action    | params              |                                                                   |
| --------- | ------------------- | ----------------------------------------------------------------- |
| `create`  | `text*`, `targets*` | Ask the reader to look for something on one or more targets.      |
| `update`  | `id*`, `text*`      | Rewrite the ask; every page it reaches re-reads.                  |
| `archive` | `id*`               | It stops steering; its pages re-read without it; never destroyed. |
| `restore` | `id*`               | Un-archive.                                                       |

## Knowledge gaps

What leads asked that the agent visibly could not answer, deduped and counted.

**`knowledge_gaps`**

| action | params                                       |                                                                                                                                                                                                           |
| ------ | -------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `list` | `agent`, `status`, `limit`, `starting_after` | Close one by adding knowledge (a source, pages, a fact): ingestion re-checks open gaps and resolves the answered ones (verified); check runs that on demand; resolve records the owner's word (declared). |

**`manage_knowledge_gaps`**

| action    | params |                                                                                                        |
| --------- | ------ | ------------------------------------------------------------------------------------------------------ |
| `check`   | `id*`  | Run the answer check now: what the agent can reach for the question today and whether that answers it. |
| `resolve` | `id*`  | Mark addressed (the knowledge was added).                                                              |
| `reopen`  | `id*`  | Undo resolve.                                                                                          |
| `archive` | `id*`  | Dismiss ("not worth answering" — it keeps counting but leaves the open list).                          |
| `restore` | `id*`  | Un-dismiss.                                                                                            |

## Services

The service catalog — what the business sells, offer-shaped.

**`services`**

| action | params |                                     |
| ------ | ------ | ----------------------------------- |
| `list` |        | The whole catalog with activations. |

**`manage_services`**

| action        | params                                                                                                                                                                            |                                                                                                                                                                                                                                                                 |
| ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `create`      | `name*`, `description`, `positioning`, `guidelines`, `pricing_unit*`, `price_min`, `price_max`, `currency`, `typical_duration`, `deliverables`, `good_fit_signals`, `agents`      | agents = which agents offer it.                                                                                                                                                                                                                                 |
| `update`      | `id*`, `name`, `description`, `positioning`, `guidelines`, `pricing_unit`, `price_min`, `price_max`, `currency`, `typical_duration`, `deliverables`, `good_fit_signals`, `agents` | By id (key is immutable); agents, when present, replaces the activation set.                                                                                                                                                                                    |
| `review`      | `id or ids`                                                                                                                                                                       | Mark a drafted service reviewed — curation, not activation. id or ids. For a whole pass use review(queue) + manage\_review(apply).                                                                                                                              |
| `archive`     | `id or ids`                                                                                                                                                                       | Leaves every agent's catalog, keeps its history. id or ids.                                                                                                                                                                                                     |
| `restore`     | `id*`                                                                                                                                                                             | Un-archive.                                                                                                                                                                                                                                                     |
| `consolidate` | `umbrella*`, `fragment_ids*`, `reason*`                                                                                                                                           | Fold FRAGMENTS into one offer-shaped service (an audit, its strategy and its monthly plan are one "SEO" offer). The umbrella inherits the fragments' deliverables, signals and activations; fragments are archived (restorable). One receipt (service\_merged). |

## Fit criteria

Qualification standards the agent judges leads by.

**`fit_criteria`**

| action | params |                     |
| ------ | ------ | ------------------- |
| `list` | `kind` | Optionally by kind. |

**`manage_fit_criteria`**

| action    | params                                                       |                                                 |
| --------- | ------------------------------------------------------------ | ----------------------------------------------- |
| `create`  | `kind*`, `description*`, `guidance`, `weight`, `agents`      | Without agents, ALL current agents judge by it. |
| `update`  | `id*`, `kind`, `description`, `guidance`, `weight`, `agents` | By id.                                          |
| `archive` | `id*`                                                        | No agent judges by it any more; history kept.   |
| `restore` | `id*`                                                        | Un-archive.                                     |

## Voice profiles

How agents speak: named profiles, each SELECTED by agents (selection, not activation).

**`voice_profiles`**

| action | params |                                            |
| ------ | ------ | ------------------------------------------ |
| `list` |        | Profiles and which agents speak with each. |

**`manage_voice_profiles`**

| action    | params                                                                                                                   |                                                                                                         |
| --------- | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------- |
| `create`  | `name*`, `languages`, `formality`, `tone_rules`, `banned_phrases`, `preferred_phrases`, `sign_off_style`, `agents`       | agents selects it for those agents.                                                                     |
| `update`  | `id*`, `name`, `languages`, `formality`, `tone_rules`, `banned_phrases`, `preferred_phrases`, `sign_off_style`, `agents` | By id; agents switches those agents to this voice.                                                      |
| `archive` | `id*`                                                                                                                    | Refused while an agent still speaks with it (switch that agent first) or a running experiment draws it. |
| `restore` | `id*`                                                                                                                    | Un-archive.                                                                                             |

## Identities

Sender personas agents act AS for outward operations (email): name = From display name.

**`identities`**

| action | params |                                          |
| ------ | ------ | ---------------------------------------- |
| `list` | `view` | Identities and which agents act as each. |

**`manage_identities`**

| action    | params                                                                    |                                                                                   |
| --------- | ------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
| `create`  | `name*`, `from_local`, `reply_to`, `copy_to`, `signature`, `agents`       | agents ASSIGNS wearers — an agent leaves an identity by being claimed on another. |
| `update`  | `id*`, `name`, `from_local`, `reply_to`, `copy_to`, `signature`, `agents` | By id; agents assigns those agents to it.                                         |
| `archive` | `id*`                                                                     | Refused while an agent still wears it.                                            |
| `restore` | `id*`                                                                     | Un-archive.                                                                       |

## Conversation flow

An agent's conversation flow: phases (prose, turn budget, tools) and slots (the visitor-facing chips). Every write trial-compiles and reaches NEW conversations only.

**`flow`**

| action | params   |                                              |
| ------ | -------- | -------------------------------------------- |
| `get`  | `agent*` | idle\_minutes + phases + each phase's slots. |

**`manage_flow`**

| action          | params                                                                                                                             |                                                                                                                                                                                                            |
| --------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `update`        | `agent*`, `idle_minutes`                                                                                                           | Flow-level: idle\_minutes (silence pause; conversations stay reopenable 7 days).                                                                                                                           |
| `author_state`  | `agent*`, `title*`, `objective*`, `exit_criteria*`, `max_turns*`                                                                   | Add a phase (key minted from title; lands just before the closing phase — move\_state after).                                                                                                              |
| `update_state`  | `agent*`, `id*`, `title`, `objective`, `exit_criteria`, `max_turns`, `tools`, `tool_settings`                                      | A phase's prose, its tools (FULL replacement set; removing capture\_slots is refused while the phase has required answers) and/or tool\_settings (`{offer_navigation: {max_links}}`; the tool must be on). |
| `archive_state` | `agent*`, `id*`                                                                                                                    | Refuses the last live phase.                                                                                                                                                                               |
| `restore_state` | `agent*`, `id*`                                                                                                                    | Un-archive a phase.                                                                                                                                                                                        |
| `move_state`    | `agent*`, `id*`, `direction*`                                                                                                      | Swap a phase with the one above (up) or below (down); the closing phase stays last.                                                                                                                        |
| `create_slot`   | `agent*`, `flow_state_id*`, `key*`, `data_type*`, `title`, `description`, `required`, `enum_values`, `enum_labels`, `translations` | Add a slot (chip) to a phase: enum\_values required for enum/band; enum\_labels value→label; translations locale→`{title, enum_labels}`. 16-slot budget.                                                   |
| `update_slot`   | `agent*`, `id*`, `key`, `data_type`, `title`, `description`, `required`, `enum_values`, `enum_labels`, `translations`              | Edit a slot's chips/copy — this is how you fix wrong chips.                                                                                                                                                |
| `archive_slot`  | `agent*`, `id*`                                                                                                                    | Archive a slot.                                                                                                                                                                                            |
| `restore_slot`  | `agent*`, `id*`                                                                                                                    | Un-archive a slot.                                                                                                                                                                                         |

## Prompt templates

An agent's prompt versions per kind — never edited in place; new conversations compile the active one.

**`prompt_templates`**

| action | params                                                        |                                                   |
| ------ | ------------------------------------------------------------- | ------------------------------------------------- |
| `list` | `agent*`, `kind`, `view`, `bodies`, `limit`, `starting_after` | Newest first; bodies 'false' for a light listing. |

**`manage_prompt_templates`**

| action     | params                     |                                                                                                        |
| ---------- | -------------------------- | ------------------------------------------------------------------------------------------------------ |
| `author`   | `agent*`, `kind*`, `body*` | Version N+1 of a kind, activated (unknown `{{references}}` warn, never block).                         |
| `activate` | `agent*`, `id*`            | Point a kind back at any unarchived prior version (rollback).                                          |
| `archive`  | `agent*`, `id*`            | The active version refuses (activate another first); a version a running experiment draws refuses too. |
| `restore`  | `agent*`, `id*`            | Un-archive.                                                                                            |

## Deliverable templates

The wrap-up document's variants (A/B): title mints the immutable version key; sections in document order.

**`deliverable_templates`**

| action | params           |                      |
| ------ | ---------------- | -------------------- |
| `list` | `agent*`, `view` | An agent's variants. |

**`manage_deliverable_templates`**

| action    | params                                              |                                                                                          |
| --------- | --------------------------------------------------- | ---------------------------------------------------------------------------------------- |
| `create`  | `agent*`, `title*`, `description`, `sections`       | Kind follows the agent's flow.                                                           |
| `update`  | `agent*`, `id*`, `title`, `description`, `sections` | In place (the version key never changes).                                                |
| `archive` | `agent*`, `id*`                                     | Refused while a running experiment draws it, or when it's the flow's last live template. |
| `restore` | `agent*`, `id*`                                     | Un-archive.                                                                              |

## Catalog drafts

Machine-drafted proposals (services, voice, fit criteria, flow) from the organization's knowledge, and the runs that produced them.

**`catalog`**

| action       | params                                    |                                                                                                                                                                           |
| ------------ | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `drafts`     | `kind`, `status`, `catalog_generation_id` | Proposals (to REVIEW them, review(queue) is the front door). fit\_criterion payloads carry kind and basis (stated = the site says it; inferred = deduced from the offer). |
| `generation` | `id*`                                     | Poll a regeneration run: status (running \| completed \| attention \| failed) and per-kind result.                                                                        |

**`manage_catalog`**

| action       | params                   |                                                                                                                                                                                                                                                                                |
| ------------ | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `regenerate` | `kind*`, `agent`, `mode` | Re-draft one kind from the knowledge, forced past the no-nag gate, or re-read the facts (kind fact) from the pages already held. mode names what is cleared first (add \| replace\_pending \| start\_over). One flow proposal per agent. Async — poll generation, then accept. |
| `accept`     | `id or ids`              | Creates the real catalog row through the normal authoring path. id or ids.                                                                                                                                                                                                     |
| `dismiss`    | `id or ids`              | Permanent per fingerprint — a later regeneration never re-proposes it. id or ids.                                                                                                                                                                                              |
| `edit`       | `id*`, `payload*`        | Rewrite a PENDING proposal's fields before accepting it (merge; the no-nag identity never moves). Receipted. A flow edit is trial-compiled.                                                                                                                                    |

## Conversations

The work surface: what leads said, what the agent captured and judged, the documents it handed them.

**`conversations`**

| action         | params                                                       |                                                                                                                             |
| -------------- | ------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------- |
| `list`         | `agent*`, `status`, `fit_verdict`, `limit`, `starting_after` | An agent's conversations, newest first (title, summary, status, fit verdict).                                               |
| `get`          | `id*`                                                        | One conversation in full: transcript (grounding included), captured answers, lead assessment, delivered document link.      |
| `deliverables` | `agent*`, `limit`, `starting_after`                          | An agent's deliverables (briefs/recaps), newest first, with verdict, matched service, delivery, the lead's grade.           |
| `deliverable`  | `id*`                                                        | One deliverable in full: sections in template order, email framing, opened count, the lead's grade and comment, public URL. |

**`manage_conversations`**

| action              | params          |                                                                                |
| ------------------- | --------------- | ------------------------------------------------------------------------------ |
| `record_lead_event` | `id*`, `event*` | A lead outcome only a human knows (one per conversation; a repeat is a no-op). |

## Review surface

START HERE to review an organization: everything awaiting a decision in one read, decisions in one call, receipts behind them.

**`review`**

| action     | params                                     |                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| ---------- | ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `queue`    | `kinds`, `limit`                           | Everything awaiting a decision before the agent can honestly go live: unkept services and service proposals, unreviewed facts (core first), fit and flow proposals (fit carries basis stated\|inferred), the voice choice while it is open (each proposal as a voice\_proposal row, the voice in use as a voice row), discovered pages not yet read. Each row names its actions. counts = the full queue; rows capped per kind (limit). |
| `receipts` | `kind`, `actor`, `limit`, `starting_after` | The record of every decision applied (kind, actor operator \| agent \| owner, reason, subject, before/after). Newest first.                                                                                                                                                                                                                                                                                                             |

**`manage_review`**

| action     | params                                       |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| ---------- | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `apply`    | `decisions*`                                 | Up to 200 decisions in ONE call, each through the dashboard's own verb, each receipted with your reason. decisions `[{kind, id, action, reason?, fields?}]`: service keep\|dismiss\|restore\|edit(fields: name, positioning, guidelines, pricing\_unit, price\_min, price\_max, currency…); service\_proposal \| fit\_proposal \| flow\_proposal \| voice\_proposal accept\|dismiss\|reconsider\|edit(fields: the proposal's payload keys, merged); fact keep\|dismiss(fields.scope source\|organization)\|restore\|edit(fields: text, topic); criterion dismiss\|restore\|edit(fields: kind, description, guidance, weight); voice keep(id = the voice in use; fields optional: name, formality, sign\_off\_style, tone\_rules, languages — the open proposals close; to pick a proposal instead, voice\_proposal accept); page read(id = source id, fields.urls = discovered urls). Decisions are independent: the response says per row what applied and what failed. |
| `triage`   |                                              | Resolve what needs no judgment, mechanically: exact duplicate services archived (the reviewed or oldest one kept), proposed services already in the catalog dismissed. A receipt per resolution; returns counts. Run it before queue on a fresh crawl.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `decision` | `question*`, `options`, `answer*`, `reason*` | Record a judgment call resolved by inference — the question, the options weighed, the answer taken and why — as a receipt (kind decision): what the owner reads on the handoff page.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |

`*` = required. Every tool also takes `organization` (the slug) with an operator key; an organization key or connector is already bound.
