entangled-mcp
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., "@entangled-mcplock src/auth.py, then message Claude that my tests pass"
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.
⚛️ Entangled-MCP
Instant Quantum Entanglement for Heterogeneous AI Agent CLIs
The sovereign, zero-daemon inter-agent nervous system.
Connect Claude Code, Antigravity CLI, Opencode, Cursor, and DeepSeek into a single synchronized hive-mind with shared memory, inter-agent messaging, and codebase-aware mutex locks.
Key Features • Architecture • Quickstart • Tools Reference • Examples
🌌 The Problem: Isolated AI Islands
Modern developers frequently run different AI coding agents across multiple terminal sessions:
Claude Code for complex refactoring and reasoning.
Antigravity CLI (Gemini 3 Flash) for high-speed frontend and multimodal design.
Opencode / DeepSeek CLI for test-driven validation, security audits, and backend engineering.
However, each agent operates as an isolated island:
❌ Amnesia Across Terminals: Agent B has no idea what Agent A just modified or discovered.
❌ Merge Conflicts & Clobbering: Two agents editing the same file concurrently corrupt code.
❌ No Direct Task Delegation: You have to manually copy-paste prompt outputs from one CLI to another.
❌ Bloated Infrastructure: Existing multi-agent frameworks require heavy Redis, Kafka, or Docker servers just to pass a simple message.
Related MCP server: agent-bus-mcp
⚛️ The Solution: Entangled-MCP
Entangled-MCP bridges all your AI agent CLIs using the Model Context Protocol (MCP) and a high-performance SQLite Write-Ahead Logging (WAL) shared-state bus.
┌──────────────────────┐ ┌──────────────────────┐ ┌──────────────────────┐
│ Antigravity CLI │ │ Opencode CLI │ │ Claude Code │
│ (Frontend Builder) │ │ (Backend / DBRE) │ │ (Adversarial QA) │
└──────────┬───────────┘ └──────────┬───────────┘ └──────────┬───────────┘
│ │ │
│ (stdio / MCP JSON-RPC) │ (stdio / MCP JSON-RPC) │ (stdio / MCP)
▼ ▼ ▼
┌────────────────────────────────────────────────────────────────────────────┐
│ ENTANGLED-MCP │
│ Universal Telepathic Gateway │
└─────────────────────────────────────┬──────────────────────────────────────┘
│
┌──────────────────┴──────────────────┐
▼ ▼
┌───────────────────────────┐ ┌───────────────────────────┐
│ Shared Knowledge Bus │ │ Concurrency Mutex │
│ - Cross-CLI Findings │ │ - File-Level Locks (TTL) │
│ - Architecture Decisions│ │ - Task Collision Defense │
│ - Real-Time Swarm State │ │ - Inbox/Outbox Messages │
└───────────────────────────┘ └───────────────────────────┘
▲ ▲
└──────────────────┬──────────────────┘
│
┌──────────────┴──────────────┐
│ SQLite WAL Mode Engine │
│ Sub-millisecond latency │
│ Zero external daemon │
└─────────────────────────────┘✨ Key Features
1. 📬 Inter-Agent Direct Messaging (Agent Inbox/Outbox)
Agents can send direct, asynchronous messages or task requests to specific peers (or broadcast to all).
Antigravity finishes building an API client ➔ sends a message to Opencode requesting an automated test run.
2. 🧠 The Shared Brain (Knowledge Bus)
When an agent diagnoses an elusive bug or settles an architectural decision, it broadcasts the finding to the collective knowledge bus. Other agents can query this knowledge immediately without human re-prompting.
3. 🔒 Codebase-Aware Concurrency (Resource Mutex Locks)
Avoid disastrous file clobbering! Agents acquire exclusive locks with automatic Time-To-Live (TTL) expiration before modifying sensitive source files. If Agent A holds a lock on auth.py, Agent B is warned and politely waits.
4. ⚡ 100% Native MCP (Zero Shell Hacks)
Unlike competing tools that inject brittle shell wrappers (setup-claude-hooks.sh), Entangled is 100% native MCP tools. It works out of the box with any MCP client—Claude, Gemini, Cursor, Windsurf, or custom scripts.
5. 🪶 Zero-Daemon / Near-Zero Footprint
Powered by SQLite WAL mode. No Redis server. No Kafka broker. No cloud fees. Runs directly on your developer workstation with sub-millisecond local queries.
🚀 Quickstart
Installation
git clone https://github.com/sinergiefek/entangled-mcp.git
cd entangled-mcp
pip install -e .Or run directly without installation using python -m entangled.cli.
🔌 Client Configurations
Add Entangled-MCP to your favorite agent configuration files:
1. Claude Code CLI
Add to ~/.claude/mcp.json or run:
claude mcp add entangled-mcp python -m entangled.cli2. Opencode CLI
Add to ~/.config/opencode/opencode.json:
{
"mcp": {
"servers": {
"entangled-mcp": {
"type": "local",
"command": ["python", "-m", "entangled.cli"]
}
}
}
}3. Antigravity CLI / Gemini CLI
Add to ~/.gemini/config/mcp_config.json:
{
"mcpServers": {
"entangled-mcp": {
"command": "python",
"args": ["-m", "entangled.cli"],
"disabled": false
}
}
}4. Cursor / Windsurf / Codex
Add to your project's .cursor/mcp.json or global MCP settings:
{
"mcpServers": {
"entangled-mcp": {
"command": "python",
"args": ["-m", "entangled.cli"]
}
}
}🛠️ Tools Reference
Tool Name | Parameters | Description |
|
| Registers agent presence and updates heartbeat in the swarm. |
| None | Discovers all active agents, workspaces, and current assignments. |
|
| Publishes a finding, architecture decision, or bug fix to the shared brain. |
|
| Searches the shared brain across past and current agent sessions. |
|
| Dispatches an asynchronous message or task delegation to another agent. |
|
| Checks inbox for incoming instructions or notifications. |
|
| Acquires an exclusive mutex lock on a file or module. |
|
| Releases a previously acquired mutex lock. |
| None | Lists all currently active and unexpired resource locks. |
|
| Returns the unified chronological timeline of all swarm actions. |
🔄 Real-World Workflow Example (The Adversarial Review Loop)
Terminal 1 (Antigravity CLI):
> "Antigravity, announce yourself to the swarm and start refactoring the Login component."Antigravity acquires lock on
Login.tsx, writes modern responsive code, and releases the lock. Antigravity sends a message: `"opencode: please audit git diff for security and type safety."*Terminal 2 (Opencode CLI / Claude Code):
> "Check inbox and audit the latest work from Antigravity."Opencode checks inbox, reads Antigravity's request, audits the changes, runs tests, and broadcasts the pass report to the shared brain!
🧪 Testing
Run the automated test suite locally:
python tests/test_telepathy.py📄 License
Distributed under the MIT License. See LICENSE for details.
Crafted with 💖 by Sinergi Mitra Visitama
Scale, License, and Automate.
Available Tools
10 toolsentangled_acquire_lockB
[ENTANGLED] Acquires an exclusive mutex lock on a file, directory, or critical task. Prevents multiple agent CLIs from editing the same file concurrently and causing merge conflicts. Locks automatically expire after ttl_seconds (default 30 minutes).
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | ||
| ttl_seconds | No | ||
| resource_path | Yes | ||
| task_description | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It usefully discloses exclusivity and automatic expiry after ttl_seconds (default 30 minutes), but says nothing about contention behavior (block, error, or return current holder), whether acquisition is idempotent for the same agent, 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?
Three tight sentences, front-loaded with the action before the rationale and the expiry detail. Slight noise from the '[ENTANGLED]' prefix, which duplicates the tool-name namespace.
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?
An output schema exists and annotations do not, so the description is the sole source of behavioral context, yet it omits contention semantics and three of four parameter meanings. It covers purpose and lifetime adequately but is not complete for a locking primitive.
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 covers one of four parameters (ttl_seconds and its default, which merely restates the schema default). resource_path, agent_id, and task_description — all required — get no explanation of expected format or purpose.
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 verb and resource: 'Acquires an exclusive mutex lock on a file, directory, or critical task.' The acquire/release/list distinction from siblings like entangled_release_lock and entangled_list_locks is implicit in the verb but never called out.
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 merge-conflict rationale implies when to reach for this tool (before concurrent edits), but there is no explicit when-to-use, no mention of the release_lock counterpart that must eventually be called, and no guidance for the case where the lock is already held.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
entangled_announceC
[ENTANGLED] Announces or heartbeats this agent CLI in the shared swarm. Example: entangled_announce(agent_id='antigravity-gemini', client_type='antigravity-cli', current_workspace='/path', active_task='Refactor')
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | ||
| active_task | No | ||
| client_type | Yes | ||
| current_workspace | 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, the description carries the full behavioral burden but only implies 'announce/heartbeat' semantics. It doesn't disclose whether announces are idempotent, how often heartbeats should fire, whether re-announcing overwrites prior state, or any output/error behavior.
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, purpose first then a compact example, with no wasted prose. The bracket tag is noise, but the body is well 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?
An output schema exists so return values needn't be explained, but for a no-annotation presence/heartbeat tool with 0% schema coverage the description is thin. It omits trigger conditions, cadence, and per-parameter meaning that an agent needs to invoke it correctly.
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, and it does so only via a call example that names all four parameters with sample values (agent_id, client_type, current_workspace, active_task). That gives useful shape but no real semantic explanation of each field.
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 and target: announcing/heartbeating this agent CLI into a shared swarm. The verb+resource is clear enough to distinguish it from siblings like send_message or broadcast_knowledge, though the description never explicitly contrasts itself against them.
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 when-to-use or when-not-to-use guidance is given, and no alternatives are named. The example shows how to call it but not the conditions (e.g. startup, periodic heartbeat) that should trigger it, leaving the agent to guess among nine siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
entangled_broadcast_knowledgeB
[ENTANGLED] Shares knowledge, findings, bug root-causes, or architecture decisions across ALL agent CLIs. Once broadcasted, Opencode, Antigravity, Claude Code, or DeepSeek can read and leverage it.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| title | No | ||
| topic | Yes | ||
| content | Yes | ||
| workspace | No | ||
| author_agent | No | agent |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It usefully discloses the broadcast scope (reaches all agent CLIs) and persistence ('once broadcasted... can read and leverage it'), but says nothing about permissions, overwrite/conflict behavior, deduplication, or whether the write is reversible.
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 short sentences, front-loaded with the bracketed tag and the core action, with the second sentence adding the effect. No filler, though the branding tag consumes space without adding agent-relevant meaning.
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?
An output schema exists so return values need not be explained, but with zero annotation coverage and zero parameter descriptions, the definition leaves an agent without guidance on the six input fields, permissions, or how this differs from entangled_send_message or entangled_query_knowledge.
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% across 6 parameters, so the schema provides no field-level meaning. The description only loosely hints at what content should contain; it says nothing about topic, tags, title, workspace, or author_agent, nor which fields are required versus optional.
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 verb and resource ('shares knowledge... across ALL agent CLIs') and names concrete content types (findings, bug root-causes, architecture decisions). It implicitly contrasts with the read-side sibling entangled_query_knowledge by emphasizing that other agents can read what is broadcast, though it never names that alternative directly.
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?
Usage is implied by the listed content types (findings, root causes, architecture decisions), which suggest when to broadcast. However there is no explicit when-to-use/when-not guidance and no mention of the sibling tools (send_message, query_knowledge) that an agent must choose between.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
entangled_check_inboxB
[ENTANGLED] Checks the inbox for incoming messages or instructions sent to this agent CLI. Call this at the beginning of a session or task to see if another agent requested work.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| agent_id | Yes | ||
| unread_only | No | ||
| mark_as_read | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 behavioral burden. It says nothing about the significant side effect that mark_as_read defaults to true (the call mutates inbox state), nor about auth requirements, rate limits, or what happens on an empty inbox – critical omissions for a tool that is read-and-mutate by default.
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 short sentences with the resource and the action front-loaded and no filler. The bracket tag is trivial overhead, but the second sentence is genuinely load-bearing usage guidance rather than padding.
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?
An output schema exists, so return values need not be described. However, with four parameters at 0% schema coverage, no annotations, and an undisclosed default mutation (mark_as_read=true), the definition is not complete enough for an agent to invoke it safely or predictably.
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% across four parameters, and the description adds nothing about any of them – not the required agent_id, the limit default of 10, the unread_only default, or the consequential mark_as_read default. It leaves parameters that materially change behavior (a destructive-ish state mutation) entirely undocumented.
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 verb (checks) and resource (inbox) plus the subject (messages or instructions sent to this agent CLI). It is distinguishable from the send/broadcast siblings by implication, but it never names an alternative or explicitly contrasts itself with them, so it stops 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?
"Call this at the beginning of a session or task" gives a clear triggering context, which is exactly the guidance an agent needs for a polling tool. It offers no exclusions or named alternatives among the ten siblings, so it is clear-context-without-alternatives rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
entangled_get_activity_feedC
[ENTANGLED] Retrieves the unified chronological activity feed of what all agents in the swarm have done.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. 'Retrieves' implies a read operation, but nothing is said about pagination, ordering guarantees, permissions, or whether the feed is filtered by caller. The one behavioral trait stated (chronological/unified) is thin for an annotation-free tool.
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 tight sentence that front-loads the verb and resource. The '[ENTANGLED]' prefix is minor noise but the sentence itself has no wasted words; it is only slightly under-specified rather than verbose.
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?
An output schema exists, so return-value shape need not be explained, and this is a simple read tool with one optional parameter. However, the undocumented limit parameter and the absence of any usage or behavioral context leave gaps, so it is only minimally adequate.
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 single parameter 'limit' is never mentioned in the description, so its default (15), valid range, and effect on the feed are undocumented everywhere. The description does nothing to compensate for the coverage gap.
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 gives a specific verb ('Retrieves') and a well-defined resource: a 'unified chronological activity feed of what all agents in the swarm have done.' That implicitly separates it from per-agent siblings like check_inbox or get_swarm, but it never names an alternative explicitly.
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 when-to-use or when-not-to-use guidance and no mention of sibling tools such as check_inbox or get_swarm. The agent must infer that this is a monitoring/log-reading call from the purpose statement alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
entangled_get_swarmA
[ENTANGLED] Discovers all active agent CLIs in the entangled swarm, their client type, current workspace, last heartbeat, and active task. Use this to see who else is working.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose the shape of the returned data. However, it never states that this is a read-only/no-side-effect operation, nor anything about freshness, auth, or limits on the swarm listing. Adequate but with a real gap given zero annotation coverage.
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, zero filler, and the core purpose is front-loaded before the usage hint. Every clause carries information.
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?
Zero parameters and a full output schema mean the description needn't explain return values, and it correctly stays high-level while naming the fields available. What's missing is any statement of the operation's read-only nature, which no annotation supplies.
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 takes zero parameters, so there is nothing for the description to disambiguate; the schema is trivially complete at 100% coverage. Baseline 4 applies since no parameter guidance is needed.
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 verb ('Discovers') and resource ('all active agent CLIs in the entangled swarm') and enumerates the fields returned (client type, workspace, heartbeat, task), so an agent knows exactly what it retrieves. It does not, however, differentiate itself from the similar-sounding sibling entangled_get_activity_feed, which also surfaces agent activity.
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 this to see who else is working' gives a clear when-to-use context, which is better than nothing. But it offers no exclusions or alternatives, so an agent choosing between this and entangled_get_activity_feed (or entangled_list_locks) gets no routing help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
entangled_list_locksA
[ENTANGLED] Lists all currently active resource locks across the entire workspace.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It at least discloses that this is a read-style listing and that the scope is the whole workspace with no filtering, but it says nothing about permissions/auth requirements, rate limits, or whether the result can be paginated — all relevant for an agent operating in a concurrent lock environment.
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 front-loaded sentence with no filler, naming the verb, resource, and scope immediately. The [ENTANGLED] prefix tags the family cheaply without padding the description.
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?
A no-parameter read tool with an output schema that already documents the return shape, so return-value explanation is unnecessary. The remaining gap is behavioral (auth/pagination), which is small but not negligible for a workspace-wide listing.
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 takes zero parameters, so per the baseline there is nothing for the description to disambiguate. Schema coverage is 100% regardless, and no compensating parameter prose is needed.
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 verb (Lists) and resource (currently active resource locks) with an explicit scope (across the entire workspace). The read verb naturally separates it from sibling mutations like entangled_acquire_lock and entangled_release_lock, though it never names those siblings to make the distinction airtight.
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?
Usage is only implied: a listing tool is obviously used to inspect current lock state, and 'across the entire workspace' hints that no filtering is offered. There is no explicit when-to-use guidance, no prerequisites, and no pointer to entangled_acquire_lock/entangled_release_lock for the write-side operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
entangled_query_knowledgeA
[ENTANGLED] Searches shared knowledge across all agent sessions by topic, tag, or keyword. Use this before tackling a task to check if another agent CLI has already investigated or solved it.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | ||
| limit | No | ||
| query | No | ||
| topic | 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, the description carries the full disclosure burden. It usefully reveals the scope (shared across all agent sessions, read-oriented) but says nothing about permissions, pagination, or how results are ranked or truncated, so it adds only partial behavioral 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?
Two tight sentences that are front-loaded: the search scope first, the trigger condition second. Nothing is wasted, aside from the bracketed [ENTANGLED] namespace marker that adds little semantic value.
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 output schema covers return values, so the description need not explain them, and it supplies the core search purpose and trigger. It remains thin on the four undocumented parameters and on default limit behavior, but is adequate to call the tool.
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. The phrase "by topic, tag, or keyword" maps to the topic, tag, and query parameters, but it leaves limit undocumented and never explains whether multiple filters combine or what an empty string returns.
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 verb (searches) and a well-defined resource (shared knowledge across all agent sessions), plus the three axes it can search on (topic, tag, keyword). This clearly contrasts with the write-side sibling entangled_broadcast_knowledge, though it never names an alternative explicitly.
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 this before tackling a task to check if another agent CLI has already investigated or solved it" gives an explicit trigger condition for invocation. There is no when-not guidance or named alternative to prefer in specific cases, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
entangled_release_lockB
[ENTANGLED] Releases an exclusive lock once an agent CLI has finished modifying a resource.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | ||
| resource_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 behavioral burden. It discloses the exclusivity of the lock and the trigger condition, but says nothing about failure modes (e.g., releasing a lock not held), whether release is idempotent, or what permissions/ownership are required.
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 that is front-loaded with the verb and resource. It is efficient, though the bracketed '[ENTANGLED]' prefix is noise that does not earn 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?
An output schema exists, so return values need not be explained, and the core operation is conveyed. However, for a lock-mutation tool with no annotations and 0% parameter coverage, the definition omits the ownership and error semantics an agent needs to call it correctly.
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% for both required parameters (resource_path, agent_id). The description only alludes to 'a resource' and 'an agent CLI' at a conceptual level, giving no guidance on path format or how the agent_id is matched to the lock holder.
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 verb and resource — releasing an exclusive lock — and scopes it to a finished agent CLI modification. It is clearly distinguishable from the acquire_lock sibling, though it never names that counterpart explicitly.
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 gives an implied trigger ('once an agent CLI has finished modifying a resource'), which tells the agent when to call it. It does not name the acquire_lock alternative, state prerequisites (must the caller be the lock holder?), or note when not to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
entangled_send_messageC
[ENTANGLED] Sends an asynchronous direct message or task delegation to another agent CLI (or 'all'). Example: Antigravity sends an action_request to 'opencode' to run a backend test.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| message | Yes | ||
| priority | No | normal | |
| payload_json | No | {} | |
| sender_agent | No | agent | |
| target_agent | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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. It discloses one meaningful trait — the call is asynchronous — but says nothing about delivery guarantees, whether the message is persisted, failure behavior, permissions, or rate limits for a tool that mutates shared swarm state.
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 short sentences, front-loaded with the core action and followed by a concrete example. The '[ENTANGLED]' tag is minor noise, but no sentence is wasted.
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 6-parameter, no-annotation mutation tool with 0% schema coverage, the description is too thin. An output schema exists so return values need not be explained, but priority semantics, payload_json format, sender_agent use, and delivery/error behavior are all absent.
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?
All six parameters have 0% schema description coverage (titles only), so the description must compensate and largely does not. It adds semantics for target_agent ('all' broadcast) and hints at an action value via 'action_request', but priority, payload_json, and sender_agent are entirely unexplained.
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 verb (sends) and resource (asynchronous direct message or task delegation) with a named recipient type (another agent CLI, or 'all'). It implicitly contrasts direct messaging with the sibling broadcast/announce tools, but never names them, so it stops 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?
The concrete example ('Antigravity sends an action_request to opencode to run a backend test') implies the usage context of cross-agent task delegation, which is useful. However, it never states when to prefer this over entangled_announce or entangled_broadcast_knowledge, leaving the agent to infer the distinction.
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.
10 tool updates
v1.0.0- First observed
entangled_acquire_lock - First observed
entangled_announce - First observed
entangled_broadcast_knowledge - First observed
entangled_check_inbox - First observed
entangled_get_activity_feed - First observed
entangled_get_swarm - First observed
entangled_list_locks - First observed
entangled_query_knowledge - First observed
entangled_release_lock - First observed
entangled_send_message
TDQS
Scored across 10 tools
Each tool has a distinct purpose: presence (announce, get_swarm), knowledge (broadcast, query), messaging (send, check), locks (acquire, release, list), and activity feed. Descriptions clarify boundaries, and no two tools overlap significantly.
All tools use consistent snake_case with an 'entangled_' prefix and a verb_noun pattern (e.g., acquire_lock, send_message). 'announce' is a verb-only outlier but still fits the predictable action-oriented style.
10 tools cover the multi-agent coordination domain well without redundancy; each tool earns its place. The set is well-scoped for the server's stated purpose.
Core operations are covered: knowledge sharing (broadcast/query), messaging (send/check), locks (acquire/release/list), presence, and activity feed. Minor gaps include no update/delete for knowledge or messages, and no explicit leave-swarm or lock-renew operation.
Maintenance
Related MCP Connectors
Agent swarm coordination: find funded work, form teams, run tasks, message E2E, get paid on verify.
Durable agent-to-agent handoffs and shared scratchpad for multi-agent workflows.
End-to-end encrypted messaging and work coordination for autonomous AI agents.
The team layer for AI coding agents: shared contracts, collision alerts, E2EE sessions.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables peer-to-peer communication, discovery, shared state, and file coordination between AI coding agents across machines and sessions.16 npm17Elastic 2.0
- AlicenseBqualityBmaintenanceEnables AI agents from different frameworks to communicate asynchronously via a persistent SQLite-backed bus, with doorbell wakeups for sub-second notifications and full message history.6MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents and tools to share durable, approved knowledge, current decisions, task ownership, and handoffs from a local-first workspace kept outside any single AI product. Markdown holds human-readable rules, goals, and narratives while SQLite tracks agents, sessions, tasks, leases, and audit events behind one transport-independent core.2MIT
- AlicenseNot gradedqualityBmaintenanceEnables coding agents in different editors and MCP clients to share messages, project context, notes, task ownership, handoffs, and advisory file claims through a local SQLite-backed coordination server. Supports MCP stdio, MCP Streamable HTTP, a JSON HTTP API, and a local CLI for multi-project agent collaboration.MIT