All guides
Get started
The BLOM method
Agents
Developers
Administration
DocsAgents
The MCP tools
BLOM's MCP server offers eighteen tools, for task work, learning BLOM, drafts, notes, reviews, and feedback. No tool approves anything.
The server
Your agent reaches the MCP server at your organization's own address, sending its key as Authorization: Bearer:
https://blom.boundarylayerlabs.com/o/{organization id}/mcp
The server speaks Streamable HTTP, one POST per message, at MCP protocol revisions 2026-07-28, 2025-11-25, and 2025-06-18. A request is at most 256 KiB.
Every key sees all eighteen tools, and BLOM checks the agent's own access on every call: a Read only key, for example, is refused when it tries to change something. Each tool's description says the access it needs, its side effects, and its preconditions, and ends with an example of its arguments. Use the input schemas discovery returns: a tool refuses a field it doesn't list.
What every call returns
A call either succeeds or is refused, and its status says which:
succeededbrings the answer indata, andprincipal: the agent asactorId, its organization, its accountable owner, and its role. A change also brings areceipt, with itsrequestId, when it was committed, the agent and its accountable owner, the channel, and whether it wasreplayed.refusedbrings anerror, with itscode, amessage, anyfieldErrors, andretry.mode. Most refusals also carryrecovery.instruction, the next step in words.
Every change takes a new requestId, a UUID, and may carry sessionName, the session's own label for it. Retry a lost call with the same requestId and the same input: it returns the first result and changes nothing more.
Task work
Nine tools take a task from the queue to its handoff. Start, refresh, and return puts them in order.
| Tool | What it does | Inputs that matter |
|---|---|---|
blom_read_queue | Reads the next actions waiting on the agent, with their claim state and the IDs and revisions the other tools take, and the latest notes that mention it. | Optional filter by product, type, or claim state; page |
blom_claim | Claims a next action before the agent works on it. On a Job, it assigns the Job to the agent, and takes it over at once from anyone who holds it. | taskId, nextActionId, expected; optional scope, workspace, note; mode resume or takeover, with priorClaimId, for a Stale claim |
blom_renew_claim | Renews the claim's lease while the agent works, with a progress note. | taskId, claimId, expected, note |
blom_complete | Completes a next action with one of its outcomes, ending the claim, and may suggest the next action. | taskId, nextActionId, expected, outcomeId; optional note, reference, suggestion, links, tokenUse; environment on a Release step |
blom_release_claim | Releases the claim unfinished. The next action stays current and returns to the queue. | taskId, claimId, expected, reason |
blom_export_context | Exports the task's context from BLOM's records, checked against what the agent may read, with a manifest of each part. | taskId, mode: initial, page with cursor, refresh with baselineId and contextVersion, or saved with exportId; optional representation, maxBytes |
blom_return_closure | Records the session's handoff: what changed, the checks, the evidence, and the remaining work. | taskId, sessionName, reportedClaimId, and its lists; optional tokenUse |
blom_capture_task | Captures a new task, a Job or a report, in Backlog, with a blank next action. | typeId, title, homeId; for a Job, optional initiativeId, targetItems, parentJobId |
blom_read_work_list | Reads the work list by priority and rank, with the initiative choices for capturing a Job. | Optional filter, page |
Learning BLOM
Three reads teach the agent how BLOM works and what your organization holds. None records anything. What BLOM tells your agent says what they answer.
| Tool | What it does | Inputs that matter |
|---|---|---|
blom_read_primer | Reads BLOM's method in brief, with your organization's products, levels, PDLCs, and adopted standards, and the agent's own name, role, and accountable owner. | None: send {} |
blom_read_items | Reads the Items table, or one item with its ancestors, versions, children, and the levels permitted below it. | None for the table, or productItemId, filters, sort, page; itemId or number, such as 1-2-3, for one item |
blom_read_standards | Reads the standards register, or one standard's text at a named revision. | None for the register; documentId, revisionNumber, and revisionPin for a revision's text |
Drafts and notices
Three tools let the agent draft and propose. Nothing they save takes effect until it's approved or accepted in BLOM.
| Tool | What it does | Inputs that matter |
|---|---|---|
blom_draft_standard | Drafts a new standard, or a standard's next revision. A draft governs nothing until it's approved for Adopt. | markdown; documentId and editedFromPin for a next revision, or categoryId and title for a new standard |
blom_propose_items | Proposes capabilities and features for a product, as one list. Nothing is added until a person accepts it on Product summary. | productItemId; 1 to 200 entries, each with ref, levelId, name, and optional purpose and parent |
blom_dismiss_default_notice | Dismisses a notice that BLOM ships a newer default for a standard, where it doesn't apply, for everyone in the organization. It never accepts the default. | documentId, defaultRevision, and a reason of 1 to 500 characters |
Notes and reviews
| Tool | What it does | Inputs that matter |
|---|---|---|
blom_add_note | Adds a short note to a task's timeline, and can mention people or agents who can read the task. A note never holds work to do, and a correction is a new note. | taskId, a body of at most 500 characters; optional mentions, up to 20, and correctsNoteId |
blom_record_review | Records a review the agent did, whole, on the Job it serves: what it reviewed, its independence, its verdict, and its findings. | taskId of a Job, subjects, independence, verdict, findings |
Feedback about BLOM
blom_send_feedback sends feedback about BLOM itself to Boundary Layer Labs, the company that makes it: yours, when you ask the agent to pass it on, or the agent's own, about how BLOM's tools work for it. It isn't for your organization's work, which belongs in tasks and notes, and it must never carry secrets, keys, code, or your records.
It takes a body of at most 500 characters. The person the agent answers to sees it in BLOM under Help, Your requests, with any reply. An organization's agents can send 20 an hour, and any key may send it, Read only too.
What no tool can do
- No tool approves anything or passes a gate.
- No tool adds an item, or accepts or discards a proposal. A person accepts proposed items on Product summary.
- No tool makes a standard govern. A draft governs nothing until it's approved for Adopt, which no MCP tool can do, and only a person accepts a newer default.
- A review is evidence, not approval. Even a verdict of
approvedgrants nothing, changes no gate, and completes nothing. - No tool registers agents, issues keys or credentials, grants roles or delegations, invites people, or changes settings. People do those in BLOM.
- Your tool's own permissions aren't BLOM's. Allowing a tool in Claude Code or Codex never widens what the agent may do in BLOM, or approves anything there.
The same key also works with the public API, which offers an agent more of BLOM's operations, as its access allows.
When a call is refused
| Code | What it means, and what to do |
|---|---|
invalid_input | A field is missing, wrong, or not one the tool lists; fieldErrors names it. Correct the input, and send it under a new requestId. |
not_found_or_denied | The record doesn't exist, or the agent may not see it. Use identifiers BLOM returned. |
operation_not_permitted, human_only | The agent may not make this change, or only a person can, in BLOM. Ask the agent's accountable owner or an Administrator. |
revision_conflict | The task, its next action, or the claim changed since the agent read it. Read or export again, then decide. |
held, claim_waiting, claim_stale, claim_ended | Someone else holds the step, or the agent's claim is Waiting, Stale, or ended. Read the task again. Take back a Stale claim of the agent's own with blom_claim and mode: "resume"; stop work on an ended one. |
rate_limited | Too many calls this minute. Wait retry.afterMs, then send the same call again with the same requestId. Limits gives the numbers. |
idempotency_conflict | The requestId was used with other input. Read the task to see what the first call did, and send the new input under a new requestId. |
rebaseline_required, cursor_unavailable | The export can't continue. Start a new one with mode: "initial". |
A refused key isn't a tool result: BLOM answers it with HTTP 401 or 403. Connect Codex or Claude Code says what to do.
Related
Write to us, and we'll answer and add it here.