agent-interop-runtime
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CODEX_HOME | No | Path to Codex configuration directory when using a nonstandard location. | |
| FREEBUFF_CLI_PATH | No | Absolute path to the Freebuff executable (e.g., freebuff.exe on Windows). Used in CLI mode. | |
| INTEROP_READ_ONLY | No | Set to '1' to enable read-only mode. | 0 |
| OPENCODE_AUTO_START | No | Set to 'false' to disable automatic starting of the OpenCode local server. | true |
| OPENCODE_SERVER_URL | No | URL for an existing OpenCode server. Set to another local port or remote URL. | |
| FREEBUFF_MCP_CLI_MODE | No | Set to 'pty' for explicit Freebuff CLI mode. CLI mode always wins over Desktop discovery. | |
| FREEBUFF_PROJECT_ROOT | No | Absolute path to the project root for CLI mode. | |
| INTEROP_TOOLS_PROFILE | No | Toolset profile: 'core', 'legacy', or 'full' (default 'full'). | full |
| OPENCODE_SERVER_PASSWORD | No | Password for remote OpenCode server. | |
| OPENCODE_SERVER_USERNAME | No | Username for remote OpenCode server. | |
| FREEBUFF_CLI_READY_PATTERN | No | Custom regular expression for Freebuff CLI readiness detection. | |
| INTEROP_ALLOW_VERIFICATION | No | Set to '1' to allow local verification (disabled by default). | 0 |
| INTEROP_HANDOFF_TOKEN_BUDGET | No | Token budget for handoff packets (default 2000). | 2000 |
| FREEBUFF_DESKTOP_READINESS_FILE | No | Path to a readiness file containing a loopback URL/port and a current launch ID for Freebuff Desktop. Records older than ten minutes are ignored. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| freebuff_statusB | Detect Freebuff and bridge capabilities. |
| list_projectsA | List discovered Freebuff projects. |
| list_threadsC | List Freebuff Desktop threads. |
| get_threadB | Read thread metadata. |
| get_thread_messagesA | Read visible messages for a thread. |
| get_active_workC | Read visible active work. |
| get_thread_progressC | Read live Desktop progress events for a thread. Results are bounded and read-only. |
| watch_threadB | Wait up to 30 seconds for live progress events, then return the bounded read-only snapshot. |
| get_thread_progress_summaryA | Return a simple user-facing live progress summary without raw event details. |
| watch_active_threadsA | Return the latest live progress summary for each active Desktop thread. |
| list_project_filesC | List safe project files. |
| read_project_fileC | Read one safe project file. |
| list_modelsA | List models exposed by the installed bridge. |
| list_agentsA | List provider adapters and their real capability grades. |
| list_agent_sessionsA | Discover native sessions across configured providers. Provider failures are returned separately from an empty session list. |
| get_work_graphA | Return the provider independent session and evidence graph, including any durable state recovery warning. |
| get_agent_diffB | Read native diff evidence while preserving provider identity. |
| events_readA | Read bounded native events from one shared per-session stream. Legacy array response; events_page is preferred for reconnect/gap metadata. |
| events_pageB | Read bounded native events with a registry-owned monotonic cursor, stream epoch, and retention-gap metadata across provider reconnects. |
| evidence_listA | List evidence captured by the runtime. Metadata only: contents are addressable by evidence ID. |
| evidence_getA | Read one exact evidence record by ID. Use this after handoffs/reviews instead of inlining large diffs or logs. |
| work_listA | List durable work records with objective previews and criteria counts. |
| work_getB | Read a durable work record and its evidence. |
| handoff_packetA | Read the bounded delivery packet for a handoff: fields kept within the token budget plus explicit omissions and how to request them. |
| conversation_listA | List shared conversations; metadata only unless detail:true. |
| conversation_readA | Read a cursor-paged transcript page; pass next back for exactly-once reads. |
| claim_listC | List durable resource ownership claims. Active claims are runtime-enforced coordination state, not chat suggestions. |
| permission_pendingA | List provider permission requests awaiting an explicit human decision. Never auto-approved. |
| send_messageA | Send a text prompt to an existing Freebuff thread. |
| stop_threadB | Stop a running Freebuff turn. |
| resume_threadC | Resume a paused Freebuff thread. |
| set_modelC | Set the model for an existing thread when supported. |
| set_reasoningC | Set the reasoning effort for an existing thread when supported. |
| agent_sendB | Send a message to a provider native session. Model, agent, and reasoning are separate controls. For OpenCode, accepted means transport queued the prompt and does not mean completion. |
| agent_cancelC | Cancel work in a provider native session. |
| session_createC | Create a native provider session when supported. |
| session_resumeC | Resume or reattach to an exact native session. |
| permission_respondC | Respond to a provider permission request when supported. |
| session_set_modelC | Change the model for an exact native session when supported. OpenCode accepts providerID and modelID. |
| session_set_reasoningB | Change reasoning effort for an exact native session when supported. |
| conversation_createC | Create a local shared conversation coordinator record. |
| conversation_reconcileA | Recover interrupted outbound sends after a crash: reclassify stuck queued/unknown records and close them with caller-verified provider receipts (never auto-resends). |
| conversation_joinC | Attach an exact native provider session to a shared conversation. |
| conversation_sendA | Persist before delivery; receipt distinguishes queued/rejected/delivery_unknown. Pass idempotencyKey (e.g. workId/handoffId) to make retries safe. Replies need another explicit send. |
| work_createA | Create a durable work item with acceptance criteria and optional dependencies on existing work. |
| handoff_createC | Create a structured work handoff between exact native sessions. The durable record keeps every field; the bounded delivery packet preserves deterministic continuation state and explicit omissions. |
| handoff_update_statusA | Advance a handoff through the explicit lifecycle created → accepted → applied → verified → completed, with blocked/superseded escape states. |
| review_createB | Record a review; caller submissions are agent_claim, never provider observations. |
| claim_acquireA | Atomically claim a file, directory, interface, or workspace for a work item. Conflicting exclusive claims are rejected by the runtime. |
| claim_releaseA | Release a durable resource claim. Supplying sessionId prevents one agent from releasing another agent's claim. |
| review_requestB | Send an evidence-backed review request; the repository-diff fallback requires the subject session workspace and never guesses process.cwd(). |
| work_verifyB | Run all accepted verification commands (max 8) inside an explicit or provider-verified workspace. Requires INTEROP_ALLOW_VERIFICATION=1. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 52 tools
Most tools have clearly distinct purposes, but there is some overlap in the progress/events area (get_thread_progress, watch_thread, get_thread_progress_summary, watch_active_threads) and events_read vs events_page. Descriptions are detailed enough to reduce confusion, but the close relationships could still cause misselection in some cases.
Naming conventions are inconsistent: many tools use verb_noun (list_models, send_message, set_model) but many also use noun_verb (conversation_create, work_list, evidence_get). There is also mixed use of get_, list_, read_, and watch_ for similar operations (e.g., get_thread, list_threads, read_project_file). This inconsistency makes it harder to predict tool names.
At 52 tools, the server is on the high end and may be overwhelming for agents. The broad domain (sessions, conversations, work, handoffs, claims, evidence, permissions, threads) justifies many tools, but the sheer count risks agent confusion and increased cognitive load. Each tool seems to serve a specific purpose, so it is borderline appropriate.
The tool surface appears comprehensive for an agent interop runtime. It covers session lifecycle (create, resume, cancel, set model/reasoning), conversation coordination (create, join, list, read, send, reconcile), durable work (create, list, get, verify), handoffs (create, update status, packet), claims (acquire, release, list), evidence (get, list), reviews (create, request), and permissions (pending, respond). Thread operations and provider interactions are also covered. No obvious dead ends or major gaps are apparent.