Transports
Decisions, part 2 of 2 MCP tools
The 18 tools /mcp offers for Decisions, part 2 of 2, what each needs and an example call.
Your spaces and their RFCs, PRDs, ADRs and studies: read, draft, comment and ask for review. These are 18 tools of the 36 tools of the decisions backend (part 2 of 2; the others are part 1); all MCP tools lists the other backends.
decisions_list_pull_requests
List pull requests. The pull requests linked to a document (PRDs, RFCs, ADRs and studies), or with an empty document_id to every document of the space (paged, 0 means 50, at most 200), newest link first, with their state as last read from GitHub: title, author, draft, open, closed or merged, the review decision, the checks, merged at and the merge commit, the document, and counts by state. document_id is the id or what people call it ("rfc 12.1", "prd-39"). Narrow by repo (owner/name) and state (unknown, draft, open, closed, merged, or active for draft and open); compact gives each as id, repo, number, url, state, title and document only.
Scopes: mcp:read, decisions:read · reads only
| Argument | Type | What it is |
|---|---|---|
compact | boolean | Each pull request as its id, repository, number, url, state, title and document only. |
document_id | string | The document's id, or what people call it ("prd-39"); empty for every document of the space the caller reads (members only), paged. |
page_size | integer | For the whole space: 0 means 50, at most 200. A document's list is not paged. |
page_token | string | The next_page_token of the page before. |
repo | string | Only this repository ("owner/name"); empty for all. |
space_id | string | The space's whole id (lab_ and a ULID; decisions_list_spaces names them). May be left out when document_id is an ldoc_ id: the document names its own space. |
state | string | Only this state ("unknown", "draft", "open", "closed" or "merged"), or "active" (draft or open); empty for all. |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "decisions_list_pull_requests",
"arguments": {
"document_id": "<document_id>",
"space_id": "<space_id>"
}
}
}decisions_list_questions
List questions. A space's questions, newest first: open (the default), answered or all, with their answers. 0 means 50, at most 200.
Scopes: mcp:read, decisions:read · reads only
| Argument | Type | What it is |
|---|---|---|
page_size | integer | |
page_token | string | The next_page_token of the page before. |
space_id | string | The space's whole id (lab_ and a ULID, never shortened); decisions_list_spaces names the caller's spaces. |
status | string | "open" (the default), "answered" or "all". |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "decisions_list_questions",
"arguments": {
"space_id": "<space_id>"
}
}
}decisions_list_review_queue
My review queue. The caller's review queue across an account's spaces: what waits for them (status "waiting", the default) or what they asked of others and is still unanswered ("asked"). Newest first; 0 means 50, at most 200.
Scopes: mcp:read, decisions:read · reads only
| Argument | Type | What it is |
|---|---|---|
account_id | string | The account; empty is the caller's own. |
page_size | integer | |
page_token | string | The next_page_token of the page before. |
status | string | "waiting" (the default) or "asked". |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "decisions_list_review_queue",
"arguments": {}
}
}decisions_list_reviews
List reviews. The document's review requests and answers, newest first. 0 means 50, at most 200.
Scopes: mcp:read, decisions:read · reads only
| Argument | Type | What it is |
|---|---|---|
document_id | string | The document's id (decisions_list_documents). |
page_size | integer | |
page_token | string | The next_page_token of the page before. |
space_id | string | The space's whole id (lab_ and a ULID; decisions_list_spaces names them). May be left out when document_id is an ldoc_ id: the document names its own space. |
status | string | "pending", "approve", "changes", "waiting" (pending and asked of the caller) or empty for all. |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "decisions_list_reviews",
"arguments": {
"document_id": "<document_id>",
"space_id": "<space_id>"
}
}
}decisions_list_spaces
List spaces. The spaces where PRDs, ADRs, RFCs and studies live, newest first. With account_id, that account's. Empty: the account your sign-in names, or else every account you belong to (your own and each team), each space saying its account (account_id, account_name). A space's id is its space_id. 0 means 50, at most 200.
Scopes: mcp:read, decisions:read · reads only
| Argument | Type | What it is |
|---|---|---|
account_id | string | The account. Empty: the account the caller's token names (the one they chose), or, for a person whose token names none, every account they belong to (their own and each team), each space naming its account. |
department | string | Only this department. |
kind | string | Only spaces of this kind: space, department or project. |
page_size | integer | |
page_token | string | The next_page_token of the page before. |
parent_id | string | Only the spaces directly under this one. |
query | string | Narrows to spaces whose name or slug contains this, any case. |
top_level | boolean | Only spaces at the top, with no parent. |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "decisions_list_spaces",
"arguments": {}
}
}decisions_list_timeline
Read the timeline. The space's timeline: every status log line of every document's current version, newest date first (one document's when document_id names it). 0 means 100, at most 500.
Scopes: mcp:read, decisions:read · reads only
| Argument | Type | What it is |
|---|---|---|
document_id | string | One document's lines (the path form); empty for the whole space. |
from | string | YYYY-MM-DD, inclusive; empty for no bound. |
page_size | integer | |
page_token | string | The next_page_token of the page before. |
space_id | string | The space's whole id (lab_ and a ULID; decisions_list_spaces names them). May be left out when document_id is an ldoc_ id: the document names its own space. |
to | string |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "decisions_list_timeline",
"arguments": {
"document_id": "<document_id>",
"space_id": "<space_id>"
}
}
}decisions_list_versions
List versions. The document's versions, newest first, without their text. 0 means 50, at most 200.
Scopes: mcp:read, decisions:read · reads only
| Argument | Type | What it is |
|---|---|---|
document_id | string | The document's id (decisions_list_documents). |
page_size | integer | |
page_token | string | The next_page_token of the page before. |
space_id | string | The space's whole id (lab_ and a ULID; decisions_list_spaces names them). May be left out when document_id is an ldoc_ id: the document names its own space. |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "decisions_list_versions",
"arguments": {
"document_id": "<document_id>",
"space_id": "<space_id>"
}
}
}decisions_request_review
Ask for a review. Ask members of the account to review the document's current version.
Scopes: mcp:write, decisions:write · changes something · safe to repeat
| Argument | Type | What it is |
|---|---|---|
document_id | string | The document's id (decisions_list_documents). |
reviewers | list of string | Subjects of members of the space's account, 1 to 20; never the caller. |
space_id | string | The space's whole id (lab_ and a ULID; decisions_list_spaces names them). May be left out when document_id is an ldoc_ id: the document names its own space. |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "decisions_request_review",
"arguments": {
"document_id": "<document_id>",
"space_id": "<space_id>"
}
}
}decisions_resolve_comment
Resolve a thread. Resolve a thread (or reopen it with resolved false).
Scopes: mcp:write, decisions:write · changes something · safe to repeat
| Argument | Type | What it is |
|---|---|---|
comment_id | string | A thread's first comment. |
document_id | string | The document's id (decisions_list_documents). |
resolved | boolean | False reopens the thread. |
space_id | string | The space's whole id (lab_ and a ULID; decisions_list_spaces names them). May be left out when document_id is an ldoc_ id: the document names its own space. |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "decisions_resolve_comment",
"arguments": {
"document_id": "<document_id>",
"space_id": "<space_id>"
}
}
}decisions_save_diagram
Save a diagram. Save a new version of a diagram made from base_version. When someone saved since, the call fails with conflict and the current version's number: nothing is overwritten and nothing is retried.
Scopes: mcp:write, decisions:write · changes something · safe to repeat
| Argument | Type | What it is |
|---|---|---|
base_version | integer | |
diagram_id | string | The diagram's id (decisions_list_diagrams). |
message | string | At most 500 characters, on one line. |
model | string | As in CreateDiagram. |
name | string | Empty keeps it. |
space_id | string | The space's whole id (lab_ and a ULID, never shortened); decisions_list_spaces names the caller's spaces. |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "decisions_save_diagram",
"arguments": {
"space_id": "<space_id>"
}
}
}decisions_save_document
Save a draft. Save a new version of a document made from base_version, the version read. When someone saved since, the call fails with conflict and the current version's number: nothing is overwritten and nothing is retried. Read the document again, apply the change there and save on that version. The findings are returned; a draft is never refused for them.
Scopes: mcp:write, decisions:write · changes something · safe to repeat
| Argument | Type | What it is |
|---|---|---|
base_version | integer | The version the text was made from: the current one, or ABORTED. |
document_id | string | The document's id (decisions_list_documents). |
message | string | What changed, at most 500 characters, on one line. |
space_id | string | The space's whole id (lab_ and a ULID; decisions_list_spaces names them). May be left out when document_id is an ldoc_ id: the document names its own space. |
text | string | The whole document, at most 512 KiB. |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "decisions_save_document",
"arguments": {
"document_id": "<document_id>",
"space_id": "<space_id>"
}
}
}decisions_set_access
Keep a document private. Narrow who reads a document: "team" (the account and the people named on it) or "internal" (the account's managers). Making a document public, preview or partner is a person's act in the console and is refused here.
Scopes: mcp:write, decisions:write · changes something · safe to repeat
| Argument | Type | What it is |
|---|---|---|
access (required) | team or internal | "public", "preview", "partner", "team" or "internal". |
document_id | string | The document's id (decisions_list_documents). |
space_id | string | The space's whole id (lab_ and a ULID; decisions_list_spaces names them). May be left out when document_id is an ldoc_ id: the document names its own space. |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "decisions_set_access",
"arguments": {
"access": "team",
"document_id": "<document_id>",
"space_id": "<space_id>"
}
}
}decisions_set_status
Move a document's status. Move a document to a status of its kind (for example into review, naming a decider and a review-by day; or decided once its approvals are in). Made from base_version: someone saving since fails with conflict. Deciding needs the space's approvals on the current version. An assistant decides only where the space's ai_approval allows it, or accepts (publishes a study) with approval_id, an approved document ask for the current version that a person decided on their device: the decision is then that person's, once per ask.
Scopes: mcp:write, decisions:write · changes something · safe to repeat
| Argument | Type | What it is |
|---|---|---|
approval_id | string | An approved document ask: lets an assistant accept (or publish a study) where the space's ai_approval does not, on behalf of the person who decided the ask on their device, once. Never for "rejected" or "superseded". Empty: the space's ai_approval decides. |
base_version | integer | The version the caller saw: the current one, or ABORTED. |
decider | string | For "in_review" (an RFC or a PRD): who decides, a subject of the account (default: the decider already named). Needed with review_by. |
document_id | string | The document's id (decisions_list_documents). |
review_by | string | For "in_review": the day the decision is due, YYYY-MM-DD, today or later (default: the day already named). |
space_id | string | The space's whole id (lab_ and a ULID; decisions_list_spaces names them). May be left out when document_id is an ldoc_ id: the document names its own space. |
status | string | A status of the document's kind. |
successor_id | string | For "superseded": the document that replaces this one, in the same space. |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "decisions_set_status",
"arguments": {
"document_id": "<document_id>",
"space_id": "<space_id>"
}
}
}decisions_submit_review
Approve or ask for changes on a document. Answer a review of a version of a document: decision "approve" or "changes". An assistant (an app a person signed in to, or an agent) is refused unless the space's ai_approval is auto for the document's kind (decisions_get_settings); then the answer is recorded on behalf of the person. Elsewhere it may approve with approval_id, an approved document ask for this version that a person decided on their device: the review is then that person's, once per ask.
Scopes: mcp:write, decisions:write · changes something
| Argument | Type | What it is |
|---|---|---|
approval_id | string | An approved document ask: lets an assistant approve where the space's ai_approval does not, on behalf of the person who decided the ask on their device, once. Empty: the space's ai_approval decides. |
decision (required) | approve or changes | "approve" or "changes". |
document_id | string | The document's id (decisions_list_documents). |
space_id | string | The space's whole id (lab_ and a ULID; decisions_list_spaces names them). May be left out when document_id is an ldoc_ id: the document names its own space. |
version | integer | The version reviewed; it exists. |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "decisions_submit_review",
"arguments": {
"decision": "approve",
"document_id": "<document_id>",
"space_id": "<space_id>"
}
}
}decisions_unlink_document
Stop listing a linked document. Stop listing a document in a space it was linked into. The document itself is untouched.
Scopes: mcp:write, decisions:write · changes something · safe to repeat
| Argument | Type | What it is |
|---|---|---|
document_id | string | The document's id (decisions_list_documents). |
space_id | string | The document's home space. |
target_space_id | string | The space it is no longer listed in. |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "decisions_unlink_document",
"arguments": {
"document_id": "<document_id>",
"space_id": "<space_id>"
}
}
}decisions_unlink_job
Unlink a coordinator job. Unlink a coordinator job from a document. The link's history is kept; linking it again brings it back.
Scopes: mcp:write, decisions:write · changes something · safe to repeat
| Argument | Type | What it is |
|---|---|---|
document_id | string | The document's id (decisions_list_documents). |
job_id | string | |
space_id | string | The space's whole id (lab_ and a ULID; decisions_list_spaces names them). May be left out when document_id is an ldoc_ id: the document names its own space. |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "decisions_unlink_job",
"arguments": {
"document_id": "<document_id>",
"space_id": "<space_id>"
}
}
}decisions_unlink_pull_request
Unlink a pull request. Unlink a pull request from a document, named by pull_request_id, or repo and number, or url. The link's history is kept; linking it again brings it back.
Scopes: mcp:write, decisions:write · changes something · safe to repeat
| Argument | Type | What it is |
|---|---|---|
document_id | string | The document's id (decisions_list_documents). |
number | integer | |
pull_request_id | string | The link to remove: its pull_request_id, or repo and number, or url. |
repo | string | |
space_id | string | The space's whole id (lab_ and a ULID; decisions_list_spaces names them). May be left out when document_id is an ldoc_ id: the document names its own space. |
url | string |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "decisions_unlink_pull_request",
"arguments": {
"document_id": "<document_id>",
"space_id": "<space_id>"
}
}
}decisions_update_space
Rename or describe a space. Rename a space (name; empty keeps it) or replace its description (description with set_description true). The old description is replaced, not kept: read it first (decisions_get_space) and check with the person before replacing it. The slug, the documents and the settings stay. Needs the right to manage the space (its account's owner or an admin). Deleting a space, its settings and its people stay in the console.
Scopes: mcp:write, decisions:write · changes something · safe to repeat
| Argument | Type | What it is |
|---|---|---|
access_floor | string | Replaces its own access floor, empty included, when set_access_floor is true. Raising it raises the documents below it; lowering it lowers none. |
department | string | |
description | string | Replaces it, empty included, when set_description is true. |
kind | string | Empty keeps it; otherwise "space", "department" or "project", with department naming one when it is "department". |
name | string | Empty keeps it. |
parent_id | string | Move it under this space of the same account when set_parent is true; empty with set_parent moves it to the top. |
set_access_floor | boolean | |
set_description | boolean | |
set_parent | boolean | |
space_id | string | The space's whole id (lab_ and a ULID, never shortened); decisions_list_spaces names the caller's spaces. |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "decisions_update_space",
"arguments": {
"space_id": "<space_id>"
}
}
}