bokken
This server runs and governs Bokken Design Thinking sessions (founder or dojo mode), including creating, advancing, gating, journaling, and finalizing deliverables.
Create a Design Thinking session with a brief, mode, panel size, seed, gate policy, and token budget.
Run or step sessions through the empathize → define → ideate → prototype → test loop, halting at gates and resuming later.
Stop a session while keeping it resumable; list sessions and get status on what blocks progress.
Approve or reject pending gates (with reasons) and request loopbacks to earlier stages.
Submit answers to founder-mode questions when the session asks for human input.
Query the journal ledger with filters like event type, stage, actor, sequence number, and limit.
Generate the two final deliverables: the Session Dossier and the OpenSpec MVP handoff specifications (refused for killed concepts).
Enables conducting real user interviews via Twilio SMS/WhatsApp channels, supporting the bokken validate workflow to gather human evidence and rescore assumption registers.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@bokkenRun a dojo session for onboarding and show me the dossier"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Bokken
An agentic harness for Design Thinking — one executable, instrumented loop. Test with wood; commit steel when it counts.
Bokken encodes the Empathize → Define → Ideate → Prototype → Test loop as an executable, event-sourced, governed process. Point it at something tangible — an app repository, business and performance metrics, interview transcripts — and it runs the loop either with you in it (Founder mode, interactive at the terminal) or fully autonomously against a governed synthetic persona panel (the Dojo). Every step lands in the Journal, an append-only, hash-chained process ledger, and a finished run produces two deliverables:
The Session Dossier — outcomes, the process narrative with receipts, and the full machine-readable evidence graph.
The handoff — build-ready OpenSpec specifications for the validated concept's MVP, ready for a coding agent to ingest and implement.
Terminal-first and MCP-consumable. Python. No GUI.
A finished run: verdict-first report, simulated-run banner, receipts on every number (live example).
Why
Meeting AI documents the past; canvas tools hold sticky notes; app generators build artifacts without the understanding. Bokken is a harness, not a bot: it owns the process state, the method library, the evidence, and the audit trail — so every output can answer how do you know, who said so, what did we reject, and why. In an era of "AI did it", the defensible asset is a replayable account of the reasoning. That account is the Journal, and it is built in, not bolted on.
Related MCP server: machine-maintenance-agent
How it works
brief + inputs ──► intake ► empathize ► define ► ideate ► prototype ► test ► complete
(repo, metrics, │ ▲ ▲ │ │
interviews) │ └──────────┴───────── loop-backs ────────┘ │
▼ ▼
the Journal (append-only, hash-chained JSONL; state = replay) │
│ │
├──► Session Dossier (outcomes · narrative · evidence graph)
├──► OpenSpec handoff (MVP specs for a coding agent)
├──► Reports (PPTX deck + portable HTML with OST view)
└──► bokken validate ► real-human interviews (terminal/Twilio)
rescore the register with reported evidenceStages are a real state machine with entry/exit criteria and first-class loop-backs; every transition is journaled with the evidence that justified it.
Facilitation is auditable: every intervention is a named, budgeted move from the Kata (reframes, assumption flags, timebox pivots, devil's advocate, loop-back proposals…), logged like a tool call — executed or suppressed, with reasons.
The Dojo is governed simulation: personas are cast with documented sampling and role agents (skeptic, feasibility, viability), answer only from the ingested corpus with citations or abstain (abstentions become research debt), never see the sponsor's preferred answer, and never evaluate work they helped create (contamination firewall). Runs stop on budgets, novelty floors, or criteria — never on "the answer looked good".
Honesty is enforced in code: synthetic contributions are labeled at the record level; decisions resting on simulated or assumed evidence carry
requires real validation; the Dossier states what the run did not do; and the handoff turns contradicted assumptions into exclusions and validation debt into mandatory tasks. None of this is configurable away.The code is read before anyone is asked: when the corpus includes code, Empathize opens with a citation-validated map of current capabilities (journaled as
current_capabilityinterpretations) that targets the UI feature tests; every corpus source carries its evidence role — code establishes implemented behavior, never desired intent.The product is tested, not assumed: with
--app-urlthe run walks the real UI (SPA-aware), functionally exercises every inventoried feature with works/broken/unclear verdicts, andwireframe_htmlprototypes are generated on the repo's own CSS tokens and exercised in a browser before the test panel judges them.The market is on the record: after the concept is chosen, an explicitly authorized web research pass (
--allow-web-research) produces competitors with overlap, sourced signals, regulatory notes, and risks — journaled asreportedevidence that feeds the assumption register.Real humans close the loop:
bokken validateturns the research debt into an interview guide and an agentic interviewer moderates real participants (terminal, or Twilio SMS/WhatsApp behind the[interview]extra) — consent is asked first, once, and journaled before any question goes out; every exchange isreportedhuman evidence, and the register is rescored against it.The run travels:
bokken packproduces one portable archive with an honest manifest (verdict, cost, sha256 index);--deliverables-onlyfor external sharing states exactly what was omitted.The output executes:
bokken handoff --emit claude-code|cursor|codexrenders the OpenSpec package as an execution prompt your coding agent follows directly — evidence pointers included.The deliverables are yours:
bokken export --theme acme.jsonwhite-labels the report (brand color, label, footer) without touching a single journal-derived claim.Learnings compound: every finalized run feeds the insights library; the next run on the same product starts knowing what was supported, contradicted, or broken — with session provenance on every borrowed line.
Fusion cost architecture: frontier lanes judge (Fable 5 / Opus 5), a cached Sonnet 5 sidekick lane reads;
bokken costsreports spend, cache hit-rate, and grounding health (abstentions forced by unresolved citations) from the journal.Crash-safe by construction: sessions are durable, named, and resumable; kill the process anywhere and
bokken runcontinues from the ledger.
Quickstart
See a complete run first — no API key, no network, no cost (sample output):
uvx bokken demo
# halt: completed - dossier generated; handoff specs generated; report exported
# (pptx + html)
# you were charged $0.00 - 0 network calls, 0 real tokens; the journaled
# usage is an illustrative live-run profile: ~$8 list price across 48 callsWith the [ui] extra installed, the demo also walks a bundled mock of the
product in a real browser: per-feature functional tests, screenshots, and an
honest broken finding land in the journal and both reports (the receipt
then reads ~$10 across 63 calls — the profile the published gallery shows).
Then point it at something real. Requires uv and a provider API key — Anthropic is the default, OpenAI via the extra:
uvx bokken doctor # one-screen environment check, every gap with its fix
uvx bokken init --from-repo . --yes # or draft the brief FROM your repo
# (templates still available: saas-retention,
# consumer-app, internal-tool)
# default provider
export ANTHROPIC_API_KEY=...
# OpenAI provider
uvx --from 'bokken[openai]' bokken version
export OPENAI_API_KEY=...
uv run bokken new retention --provider openai --model gpt-5 \
--reasoning-effort high --brief bokken-brief.json --mode dojoEvery bokken run states the typical cost and the session's token guardrail
before spending, and prints a receipt ($ · model calls) whenever it halts;
bokken costs <name> breaks it down per stage × prompt × class.
Claude Desktop: install natively with the one-click bundle —
bokken-<version>.mcpb
(double-click; prompts for key/workspace/roots; the demo needs no key).
Optional extras: uvx --from 'bokken[ui]' bokken ... unlocks the UI
walkthrough and per-feature tests (plus uvx playwright install chromium
once); bokken[interview] unlocks the Twilio interview channel.
Development mode (the repo is the runtime — what the maintainers use):
git clone https://github.com/maglionejm/bokken && cd bokken
make install
export ANTHROPIC_API_KEY=...Run the loop autonomously against your product, your numbers, and your research:
uv run bokken new retention \
--mode dojo \
--brief brief.json \
--repo ./myapp \
--metrics data/kpis.csv \
--discussion research/interview-ana.md
uv run bokken run retention # halts at each stage gate
uv run bokken gate retention approve
uv run bokken run retention # ... approve gates until:
# halt: completed (stage: complete)
# finalization: dossier generated; handoff specs generated; report exported (pptx + html)
uv run bokken journal retention --type decision # every decision, with dissent
open .bokken/sessions/retention/dossier/dossier.md
ls .bokken/sessions/retention/handoff/openspec/changes/Or be the counterpart yourself: --mode founder and Bokken interviews you,
you pick the winning option, and you score the assumption register.
The deliverables
Session Dossier (dossier/): Part A — outcomes with ledger receipts on
every claim; Part B — the process narrative (pivotal moments, why the losers
lost, dissent and how it was handled, loop-backs with triggers); Part C —
dossier.json, the full evidence graph (insights↔evidence, idea lineage, IBIS
decision records, persona provenance cards, model traces).
Reports (report/): a strategic PPTX deck (decision tables, HILL banner,
verdict-colored register) and a portable single-file HTML (chaptered, agent
deliberation, per-feature UI test cards, Opportunity Solution Tree, next
actions) — deterministic renderings of the Journal.
OpenSpec handoff (handoff/): a strict OpenSpec change package
(proposal.md, design.md, capability specs with SHALL requirements and
WHEN/THEN scenarios, tasks.md) plus traceability.json mapping every
requirement to the ledger events it rests on. Copy it into any repo's
openspec/changes/, run openspec validate --strict, and hand it to your
coding harness. See docs/handoff.md.
Surfaces
CLI |
|
MCP |
|
Documentation
Doc | What it covers |
The layer stack, runtime loop, design invariants, blueprint mapping | |
Setup, creating and driving runs, gates, budgets, auditing, deliverables, troubleshooting | |
The Journal: envelope, hash chain, and the full event taxonomy v1 | |
The OpenSpec handoff contract and ingestion workflow | |
MCP tools, resources, and client setup | |
The agent registry: every actor, its lane, its model, and what it may never do |
Project structure
bokken/
├── src/bokken/
│ ├── journal/ # the ledger: schema, store, replay, queries (the moat)
│ ├── orchestrator/ # the DT state machine, runner, gates, budgets
│ ├── stages/ # the five stage engines (both modes)
│ ├── kata/ # the facilitation move library
│ ├── panel/ # persona casting, typed corpus, grounding, firewall
│ ├── models/ # model routing, journaled invocations, prompts
│ ├── dossier/ # Session Dossier generation
│ ├── handoff/ # OpenSpec MVP-spec generation
│ ├── cli/ # the terminal surface
│ ├── mcp/ # the MCP surface
│ └── contract.py # one result contract for both surfaces
├── openspec/ # bokken's own spec-driven development (13 capabilities)
├── docs/ # documentation + the GitHub Pages site
├── tests/ # 334 tests; the whole loop runs offline against a fake provider
└── scripts/ # live smoke runDevelopment
make check # ruff + pytest + openspec validate --strict — the definition of doneBokken is built spec-first with OpenSpec
— the same format it hands off. Every behavior change starts as a change under
openspec/changes/ and is archived into openspec/specs/ when implemented.
See CONTRIBUTING.md and CLAUDE.md (the project
constitution).
Once a concept is selected, an authorized deep web research pass
(--allow-web-research) produces a structured market record — competitors
with overlap, sourced signals, regulatory notes, risks — that feeds the
assumption register and the reports.
The full actor roster — lanes, models, and what each agent may never do — lives in docs/agents.md.
Models: claude-fable-5 (effort high, Opus fallback) for research and challenge
agents, claude-opus-5 (adaptive, effort high) for execution and documentation,
claude-sonnet-5 for the delegated sidekick lane (verbatim corpus reads,
mechanical UI stepping), claude-haiku-4-5 for lightweight signal extraction —
every call journaled with prompt version, token
usage, and request id. The entire test suite runs offline.
Naming
A bokken is the wooden practice sword: you rehearse with wood until failure is boring, and commit steel only when the risk is understood. Inside the harness: the Journal (the faithful record of how understanding was earned), the Kata (named, drilled, repeatable moves), the Dojo (where practice runs full-contact with no client in the room), and sparring sessions (runs against synthetic participants).
Stability and support
As of v1.0, these surfaces are stable: the Journal event taxonomy (v1,
with schema_version on every event and bokken_version in each session's
config snapshot), the CLI verbs and their --json shapes, the MCP tools and
resources, and the deliverable formats (Dossier, handoff package, reports).
Experimental and subject to change: tuning knobs (ideation.*,
empathize.*, ui_tests.*, walkthrough.*), the Twilio interview channel,
and the insights-library record shape.
Active development is currently paused while we gather real-user
feedback: issues are triaged, pull requests are welcome, and the spec-first
workflow (openspec/) is the front door for contributions — see
CONTRIBUTING.md.
License
Apache-2.0. Copyright 2026 Juan Martín Maglione and Marc Puig.
Created and maintained by Juan Martín Maglione and Marc Puig.
Available Tools
14 toolscost_reportC
Cost report from the journaled model calls (list-price estimate, cache hit rate).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, but it only names report content. It does not state whether the tool is read-only, whether it requires a session, what response shape to expect, or what the required `name` refers to. The phrase 'list-price estimate' hints at a non-authoritative estimate, but that is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loads the domain ('journaled model calls') with no filler. However, it is a fragment and omits necessary context, so its brevity is more under-specification than effective conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one required parameter and no output schema, the description omits the meaning of `name` and any usage context. It names the source and two metrics, but an agent cannot reliably determine how to invoke the tool or what to expect in return.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description never mentions the required `name` parameter. The agent is left to guess whether `name` is a session name, a report name, or a model-call identifier.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource ('cost report from the journaled model calls') and the report contents ('list-price estimate, cache hit rate'), so an agent can infer what the tool does. However, it is a noun phrase rather than a verb-headed action sentence, and it does not explicitly distinguish this tool from sibling `export_report`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a data source ('journaled model calls') but no when-to-use guidance. It never mentions alternatives such as `query_journal` or `export_report`, nor does it state any conditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_session_toolB
Create a Design Thinking session. The brief needs problem_space, target_segments, success_criteria, risk_tolerance, and may declare inputs (repo path, metrics/discussion/document files). Input paths are resolved on the server and confined to the authorized input root(s): traversal, escaping symlinks, and outside absolute paths are refused.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | dojo | |
| name | Yes | ||
| seed | No | ||
| brief | Yes | ||
| model | No | ||
| provider | No | anthropic | |
| panel_size | No | ||
| gate_policy | No | ||
| reasoning_effort | No | ||
| total_token_budget | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. It discloses that input paths are resolved server-side and restricted to authorized roots, which is a useful behavioral constraint. However, it does not mention side effects like whether a session ID is returned or if persistent state is created.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loading the primary purpose and then adding key constraints. There is no redundant or extraneous content, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 10 parameters including a nested brief object, the description is undercomplete. It explains the brief's required fields and path restrictions, but omits details about other parameters, expected output, and potential errors, leaving significant gaps for an agent to navigate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero description coverage, so the description must compensate. It explains that the brief requires problem_space, target_segments, success_criteria, and risk_tolerance, and may include input paths. However, it leaves many other parameters (mode, provider, panel_size, gate_policy, reasoning_effort, total_token_budget) without semantic explanation, requiring the agent to rely on names and enums.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a Design Thinking session, which is a specific verb and resource. However, it does not explicitly distinguish it from sibling tools like run_session or step_session, so it falls slightly short of a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool compared to alternatives such as run_session or step_session. There is no indication of the appropriate context or conditions for invoking this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_reportB
Export the run report (PPTX deck + self-contained HTML) and return the paths.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It states the operation (export), the exact artifacts produced (PPTX and HTML), and the return value (paths), but it does not disclose whether the export overwrites files, where paths point, whether a run must be complete, or any permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence conveys the action, the output formats, and the returned data with no filler. The essential information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool, the description covers the core action and return, but it omits the parameter meaning and any usage context. It is adequate for a minimal invocation yet leaves an agent guessing about prerequisites and what 'name' should contain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the only parameter, `name`, has no description in the schema. The description references a 'run report' but never explicitly states whether `name` is the run's name, a report name, or an output filename, leaving the parameter ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete action and resource ('Export the run report') and specifies the two output formats (PPTX deck + self-contained HTML). It does not explicitly contrast with the 13 sibling tools, so it falls short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to call export_report versus siblings such as run_session, get_status, cost_report, or generate_handoff. The agent must infer that a run report exists before exporting; there are no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_dossierC
Generate the Session Dossier and return the export paths.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, but it only reveals that a dossier is generated and paths are returned. It does not disclose side effects, whether it mutates session state, idempotency, required permissions, or what 'export paths' refer to.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence that leads with the action and immediately states the return value. There is no filler or redundant restatement of structured fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool this might be close, but with no output schema, no annotations, and no naming context for the parameter, the description leaves too much for the agent to infer: what a Session Dossier is, what the name refers to, and what happens to the session.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The lone parameter 'name' is listed in the schema but the description adds no meaning to it; there is 0% schema coverage. It is not clear whether 'name' is the dossier name, session name, or export prefix, making the parameter under-specified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete action ('Generate'), a specific resource ('the Session Dossier'), and the expected result ('return the export paths'). It does not, however, explicitly differentiate this from the sibling generate_handoff, which an agent might confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to call generate_dossier versus run_session, generate_handoff, or other siblings. The description gives no context, prerequisites, or exclusions, so an agent must infer usage from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_handoffA
Generate OpenSpec MVP specifications for the validated concept, ready to be ingested by a coding harness (refused for killed concepts).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior itself. It does reveal a conditional refusal and the output's intended ingestion format, but it does not say whether the tool returns the spec, writes files, or errors on refusal, so an agent is left guessing about side effects and response shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense sentence contains the purpose, output consumer, and refusal behavior without filler. The parenthetical is compact, though the sentence could be split for easier scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no annotations or output schema, the description covers the core contract but leaves the parameter mapping implicit and does not describe what a successful/refused call returns. Sibling differentiation is present through the artifact type but not named.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, 'name', has no schema description, and the description only indirectly ties it to 'the validated concept'. This gives a reasonable inference that name identifies the concept, but it does not explicitly define the expected value format or scope.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Generate') and a specific resource ('OpenSpec MVP specifications'), and adds a concrete consumer ('coding harness') plus an exclusion condition ('refused for killed concepts'). This is enough to distinguish it from siblings like generate_dossier, which produces a dossier rather than handoff specs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states the tool applies to 'validated concept' work and will refuse 'killed concepts', giving an explicit when-to-use and when-not-to-use. It does not name an alternative tool for killed concepts, but it still provides actionable selection context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statusC
Where the session is and what blocks progress.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies a read-only observation ('where the session is') and adds that the tool surfaces blocking issues. But it doesn't explicitly state side-effect freedom, required permissions, or behavior when the named session doesn't exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded, and avoids filler. It could be slightly more complete as a full sentence with an explicit verb, but as written it is economical and not bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, no annotations, a single undocumented required parameter, and only a ten-word description, the agent has too little to reliably invoke the tool. The description conveys the concept of status/blockers but not the calling contract. The sibling list provides surrounding context, but the description itself remains incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one required parameter, 'name', with no description and 0% schema deck cover. The tool description never directly explains what 'name' should be, though the word 'session' implies it is a session identifier. Valid sources for the name and format are left unstated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description says what get_status reports: the session's current position and what blockers are present. It is clear enough to distinguish from action-oriented siblings like run_session and step_session. However, it doesn't differentiate from list_sessions_tool, which may also surface session state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to call this tool versus list_sessions_tool, resolve_gate, or step_session. There are no stated prerequisites, such as the session needing to exist or be running. Usage is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sessions_toolA
List sessions in the workspace.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. It communicates a read-only listing action, but does not disclose return format, pagination, session-state filtering, or whether it covers all sessions in the workspace. This is minimally adequate for a simple list operation but thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no filler. The scope modifier 'in the workspace' adds useful context and is front-loaded effectively.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter listing operation, the description is nearly complete. The lack of an output schema and any mention of returned session fields or defaults leaves a minor gap, and the existence of get_status creates mild ambiguity about which tool answers which session-related need.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline of 4 applies. There is no parameter information to add beyond what the empty input schema already shows, and the description does not need to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource ('List sessions') and adds a workspace scope. The verb 'list' distinguishes it from action-oriented siblings like run_session, create_session_tool, step_session, and stop_session, though it does not explicitly point to any alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus get_status or the other session-related siblings. There are no exclusions, conditions, or alternative suggestions, leaving the agent to rely on naming inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_journalB
Read ledger events with the same filters and canonical form as the CLI.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| type | No | ||
| actor | No | ||
| limit | No | ||
| stage | No | ||
| since_seq | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It does communicate that the operation is a read and that output follows a 'canonical form', which is useful. However, it does not explain pagination, ordering, error behavior, filtering semantics, or whether since_seq/limit behave as expected. The CLI reference is opaque without additional context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every phrase—'Read', 'ledger events', 'same filters', 'canonical form'—contributes meaning. This is appropriately terse for the dimension, though the terseness hurts completeness elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has six parameters, an output schema, and no annotations, yet the description provides almost no parameter semantics, no usage context, and no behavioral detail beyond 'read' and 'CLI-compatible'. An agent would struggle to know what 'name' refers to or how filters are combined. The presence of an output schema does not compensate for these gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for six undocumented parameters. It only says 'same filters' but does not define what filter values are expected for name, type, actor, stage, limit, or since_seq. The reference to the CLI hints at semantics but does not give the agent enough information to construct a correct call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb+resource: 'Read ledger events'. It distinguishes this from sibling session-control tools like run_session or get_status by focusing on ledger events rather than session lifecycle. However, it does not explicitly explain what a 'ledger event' is or how this differs from list_sessions_tool, so it falls just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'with the same filters and canonical form as the CLI' implies a familiar command-line workflow and suggests this tool is the read/query counterpart to session actions. But there is no explicit when-to-use guidance, no exclusions, and no mention of when a sibling like get_status would be a better fit. Usage is implied rather than articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_loopbackC
Loop back to an earlier stage (test->define, test->empathize, define->empathize).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| reason | Yes | ||
| to_stage | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden of behavioral disclosure. It only states the backward move and allowed stage pairs, without explaining side effects on the current session, whether prior work is preserved, or how the loopback request is resolved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence with the action front-loaded and a dense transition list. It is concise and free of filler, though it is terse enough that it under-serves the required parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a state-changing tool with no annotations and no output schema, this description is incomplete. It identifies allowed transitions but leaves required parameters unexplained, effects unspecified, and sibling-tool relationships unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only mildly hints at valid values for to_stage through the examples. It provides no meaning for the required name and reason parameters, leaving an agent unable to construct a correct call confidently.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('Loop back to an earlier stage') and enumerates allowed transitions (test->define, test->empathize, define->empathize), which clarifies what the tool does. It does not explicitly distinguish itself from siblings like step_session or resolve_gate, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus siblings such as step_session or submit_input. The transition list implies it is for backward movement, but there are no exclusions, triggers, or alternative-routing instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_gateB
Approve or reject the pending gate (rejection requires a reason).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| reason | No | ||
| resolution | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses that rejecting requires a reason, which is a useful non-schema constraint, and the approve/reject wording makes it clear this changes state. However, it does not describe side effects, irreversibility, or what happens to the session after resolution.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word contributes: the action, the target, and the critical rejection-reason rule.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of annotations and output schema, the description is too thin. It leaves the meaning of the required 'name' parameter ambiguous and does not explain what happens after the gate is resolved, which an agent would need to safely invoke the tool in a session workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies that rejection requires a reason, but it does not explain what 'name' refers to or how it should be supplied. 'resolution' is understandable from the enum, yet two of the three parameters remain under-specified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Approve or reject') and the resource ('the pending gate'), and the resolution enum makes the two possible outcomes explicit. It is distinguishable from the sibling tools, none of which mention gates, though the term 'gate' is left somewhat domain-specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Use when a gate is pending is implied by 'the pending gate', but the description does not explicitly explain when this tool should be chosen over alternatives or when it should not be used. There is no mention of prerequisites or workflow position.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_sessionB
Advance the session to its next halt (gate, input, stop, or completion). Completed runs are finalized automatically: Dossier, then handoff specs.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden and does add meaningful behavior: the session advances until a halt type and completed runs are finalized automatically in a specific order. It does not mention errors, asynchrony, or state-mutation side effects, but the core behavioral contract is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the main action and outcome, with no filler. The halt list and finalization sequence are compact but high-value details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description must explain parameter meaning, return behavior, and halt handling, but it explains none of those. The finalization note is useful, yet an agent still lacks enough to know what to expect after an 'input' halt or what the call returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has a single 'name' property with only a title, and schema description coverage is 0%. The description never mentions 'name' or what it identifies, so the agent receives no semantic help for the only parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Advance') and resource ('the session') and defines the target outcome via halt types. It conveys the tool's role among sibling session tools, though it does not explicitly distinguish it from step_session.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to choose run_session versus step_session, stop_session, resolve_gate, or submit_input. The behavior is described, but there are no conditions, exclusions, or alternative routing cues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
step_sessionB
Advance the session by at most one stage.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does reveal the 'at most one stage' constraint, but it does not mention side effects, failure behavior, reversibility, or whether the operation is idempotent. For a state-mutating action, this is a significant transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no filler. The core verb and constraint are front-loaded, and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one undocumented required parameter, no output schema, no annotations, and a large sibling toolset, the description is too thin. It lacks the meaning of 'name' and says nothing about return values or errors, making it difficult for an agent to call correctly in all situations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description does not explain the meaning of the required 'name' parameter. The agent must guess that 'name' identifies the session, which is not explicitly stated anywhere. The description adds no value over the raw schema for parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('advance'), identifies the resource ('session'), and adds a precise qualifier ('by at most one stage') that distinguishes it from siblings like run_session or resolve_gate. An agent can confidently tell what action this tool performs and how it differs from related operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (whenever a session should progress by one stage), but it does not explicitly state when to choose it over alternatives such as run_session or submit_input, nor does it mention any exclusions or prerequisites. The usage context is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_sessionA
Stop the run (journaled human-initiated stop); the session stays resumable.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| reason | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does a good job: it discloses that the stop is journaled, human-initiated, and non-destructive since the session stays resumable. It omits possible error states or idempotency, but the core behavioral profile is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense sentence with no filler. Key qualifiers ('journaled', 'human-initiated', 'stays resumable') are packed in without redundancy, and the core action is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter stop operation, the key behavioral promise is present, but there is no output or error information and no parameter clarification. It is minimally adequate but leaves room for the agent to guess details about name resolution and return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate, but it does not explain 'name' or 'reason' beyond their schema titles. An agent must infer that 'name' identifies the session and 'reason' is an optional journaled explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the specific action ('Stop the run'), identifies the target resource ('session'), and adds precise scoping: journaled, human-initiated, and resumable. This clearly distinguishes it from siblings like run_session and step_session.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: use for a deliberate human-initiated stop where the session must remain resumable. It does not explicitly name alternatives or when-not conditions, but the intended usage is inferable and distinct from run/step semantics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_inputC
Answer the session's pending Founder-mode question, then run_session again.
The answer is attributed to this client's handshake identity, so the engine
that consumes it journals agent-supplied (simulated) evidence rather than
human testimony.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| answer | Yes | ||
| question_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses attribution and journaling of simulated evidence, but with no annotations it doesn't mention other side effects or state changes that may occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no excessive detail; the 'then run_session again' instruction is slightly extraneous but not bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Leaves parameter semantics and output/result behavior unexplained; only partial workflow context is given.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has no parameter descriptions and the tool description only hints at 'question'; 'name', 'question_id', and 'answer' are not explicitly defined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool answers a pending Founder-mode session question and references run_session for the next step; however, it doesn't explicitly distinguish from sibling tools beyond that.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Indicates when to use (pending question) and the next step (run_session again), but doesn't spell out when not to use or how it compares to alternatives like run_session or step_session.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v1.4.0- Changed
create_session_tool3 fields changed- added
Input schema / properties / modelAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Model" +} - added
Input schema / properties / providerAdded value: +{ + "default": "anthropic", + "enum": [ + "anthropic", + "openai" + ], + "title": "Provider", + "type": "string" +} - added
Input schema / properties / reasoning_effortAdded value: +{ + "anyOf": [ + { + "enum": [ + "low", + "medium", + "high" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Reasoning Effort" +}
2 tool updates
v0.9.0- Added
cost_report - Added
export_report
12 tool updates
v0.2.0- First observed
create_session_tool - First observed
generate_dossier - First observed
generate_handoff - First observed
get_status - First observed
list_sessions_tool - First observed
query_journal - First observed
request_loopback - First observed
resolve_gate - First observed
run_session - First observed
step_session - First observed
stop_session - First observed
submit_input
TDQS
Scored across 14 tools
Most tools target distinct actions and resources, but run_session and step_session both advance a session and could be confusable depending on intent. get_status and query_journal also overlap somewhat as read-only status/history surfaces, though their descriptions clarify the difference.
The set mostly follows a verb_noun pattern (run_session, stop_session, resolve_gate, generate_handoff), but cost_report is a noun-style command and list_sessions_tool/create_session_tool carry a _tool suffix not present elsewhere. These are minor deviations rather than a systemic naming problem.
14 tools is well-scoped for a Design Thinking session management server. Each tool maps to a meaningful lifecycle action or output, and there is no obvious redundancy or bloat.
The surface covers session creation, status, advancement, stopping, gates, loopbacks, journaling, reporting, and final handoff generation. Minor gaps exist, such as no explicit session update/delete or single-session detail tool, but the core workflows have no dead ends.
Maintenance
Related MCP Connectors
Governed data discovery, exact queries, decisions, simulations, and runtime utilities over MCP.
Remote MCP for A2A caller identity, scope policy, verdict receipts, and audit history.
Generate contextual prompts and reusable agent skills, evaluate prompts with the 16-dimension Prompt Score, and manage saved work in PromptDrive. Twelve MCP tools also provide authorized access to private Memory for source-grounded answers. Connect over Streamable HTTP using OAuth 2.1 and PKCE. Generation consumes account quota and automatically saves successful results; Memory access follows account permissions and plan limits.
Hosted MCP memory and agent control plane for durable conversations, jobs, and operations.
Related MCP Servers
- AlicenseAqualityFmaintenanceProvides 14 MCP tools for AI agent infrastructure, enabling knowledge base queries, skill search, handoffs, blueprint validation, trust scoring, identity verification, SLA validation, and compliance checks.22MIT
- FlicenseNot gradedqualityCmaintenanceEnables agents to inspect machine status and sensor anomalies, search maintenance guidance, and create maintenance tickets through controlled MCP tools.-
- AlicenseNot gradedqualityBmaintenanceEnables agent clients to safely connect to tools and execution resources through MCP with authorization, approvals, audit, chat-context isolation, SSH/Docker access, and long-running command session tracking.MIT
- FlicenseNot gradedqualityBmaintenanceProvides MCP tools that let an agent retrieve customer account, product usage, interaction, and support summaries, and create follow-up tasks after user approval.-