Skip to main content
Glama

MCP Agentic Framework

A Model Context Protocol (MCP) based communication framework that enables multiple AI agents to collaborate through asynchronous messaging. Built with Test-Driven Development (TDD) and functional programming principles.

Overview

This framework provides a standardized way for multiple Claude agents (or other MCP-compatible agents) to:

  • Register themselves with unique identities

  • Discover other registered agents

  • Exchange messages asynchronously

  • Send broadcasts to all agents

  • Work together on complex tasks

The framework uses file-based storage for simplicity and portability, making it easy to run without external dependencies.

Related MCP server: Agent Hub MCP

Comparison with Claude Code Sub-agents

This framework provides a different approach to multi-agent collaboration compared to Claude Code's sub-agents feature.

Aspect

Claude Code Sub-agents

MCP Agentic Framework

Architecture

Static configuration files

Dynamic agent registration

Context

Isolated per task

Shared across agents with individual message queues

Communication

One-way (Claude invokes agent)

Bidirectional (agents communicate with each other)

Configuration

YAML frontmatter + system prompt

Runtime registration with name and description

Flexibility

Predefined behavior

Runtime-adaptable interaction patterns

Storage

.claude/agents/ directories

File-based message queue system

Tool Access

Fixed at configuration time

Determined by MCP server configuration

When to Use Each Approach

Use Claude Code Sub-agents when:

  • Tasks are well-defined and repetitive (code review, debugging, testing)

  • Consistent, predictable behavior is required

  • Working independently on specific problems

  • Need to preserve main conversation context

Use MCP Agentic Framework when:

  • Real-time collaboration between multiple agents is needed

  • Tasks require discussion, negotiation, or consensus

  • Problem-solving benefits from diverse perspectives

  • Building distributed workflows with agent coordination

Both systems can be complementary: MCP agents can collaborate to design and refine sub-agent configurations, while sub-agents can handle routine tasks identified by MCP agent discussions.

Kubernetes Deployment

The MCP Agentic Framework can be deployed on Kubernetes for production use with high availability and easy management.

Prerequisites

  • Kubernetes cluster with MetalLB LoadBalancer (or similar)

  • Docker Hub account (or other container registry)

  • just command runner installed (cargo install just)

Quick Start

  1. Clone and navigate to the framework:

cd /home/decoder/dev/mcp-agentic-framework
  1. Deploy with the Justfile:

# First time: Update the docker_user in Justfile
vim Justfile  # Change docker_user to your Docker Hub username

# Deploy (builds, pushes, and deploys to Kubernetes)
just update
  1. Get the LoadBalancer IP:

just status
# Or manually:
kubectl get svc mcp-agentic-framework-lb
  1. Update Claude configuration (~/.claude.json):

"agentic-framework": {
  "type": "http",
  "url": "http://YOUR_LOADBALANCER_IP:3113/mcp"
}

Managing the Deployment

# View all available commands
just

# Deploy updates (bumps version, builds, pushes, deploys)
just update          # Patch version bump (1.0.0 -> 1.0.1)
just update-minor    # Minor version bump (1.0.0 -> 1.1.0)
just update-major    # Major version bump (1.0.0 -> 2.0.0)

# Monitor deployment
just status          # Check deployment status
just logs            # Stream logs
just test-health     # Test health endpoint

# Operations
just restart         # Restart the deployment
just rollback        # Rollback to previous version

Features

  • Zero-downtime deployments with rolling updates

  • Automatic version management with semantic versioning

  • Health checks with automatic restarts

  • Persistent LoadBalancer IP via MetalLB

  • Web UI for monitoring agent communications (auto-opens on first agent)

Architecture

The Kubernetes deployment includes:

  • Deployment: Single replica with health/readiness probes

  • LoadBalancer Service: Stable external IP for Claude access

  • ClusterIP Service: Internal cluster communication

Kubernetes Manifests

Located in k8s/ directory:

  • deployment.yaml - Main application deployment

  • loadbalancer-service.yaml - External access via MetalLB

Architecture

┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│ Developer Agent │     │  Tester Agent   │     │ Architect Agent │
└────────┬────────┘     └────────┬────────┘     └────────┬────────┘
         │                       │                       │
         └───────────────────────┴───────────────────────┘
                                 │
                      ┌──────────┴──────────┐
                      │   MCP Server        │
                      │  ┌──────────────┐   │
                      │  │Agent Registry│   │
                      │  └──────────────┘   │
                      │  ┌──────────────┐   │
                      │  │ Message Store│   │
                      │  └──────────────┘   │
                      └─────────────────────┘
                                 │
                      ┌──────────┴──────────┐
                      │ File Storage        │
                      │/tmp/mcp-agentic-    │
                      │    framework/       │
                      └─────────────────────┘

Installation

  1. Clone the repository:

git clone https://github.com/Piotr1215/mcp-agentic-framework.git
cd mcp-agentic-framework
  1. Install dependencies:

npm install
  1. Run tests to verify installation:

npm test

Usage with Claude Desktop or Claude Code

Using HTTP Transport

{
  "mcpServers": {
    "agentic-framework": {
      "type": "http",
      "url": "http://127.0.0.1:3113/mcp"
    }
  }
}

To use the HTTP transport:

  1. Start the HTTP server: npm run start:http

  2. Add the above configuration to your ~/.claude.json

  3. Restart Claude Desktop

Note: The HTTP transport supports Server-Sent Events (SSE)

HTTP Endpoints

When running with npm run start:http, the following endpoints are available:

  • /mcp - Main MCP endpoint for agent communication

  • /health - Health check endpoint that returns:

    {
      "status": "ok",
      "name": "mcp-agentic-framework",
      "version": "1.0.0"
    }

Available Tools

register-agent

Register a new agent in the system.

Parameters:

  • name (string, required): Agent's display name

  • description (string, required): Agent's role and capabilities

  • instanceId (string, optional): Instance identifier for automatic deregistration

Example:

{
  "name": "DeveloperAgent",
  "description": "Responsible for writing code and implementing features"
}

unregister-agent

Remove an agent from the system.

Parameters:

  • id (string, required): Agent's unique identifier

discover-agents

List all currently registered agents.

Parameters: None

Response Example:

[
  {
    "id": "agent_abc123",
    "name": "DeveloperAgent",
    "description": "Responsible for writing code",
    "status": "online",
    "lastActivityAt": "2024-01-20T10:30:00.000Z"
  }
]

send-message

Send a message from one agent to another.

Parameters:

  • to (string, required): Recipient agent's ID

  • from (string, required): Sender agent's ID

  • message (string, required): Message content

check-for-messages

Retrieve unread messages for an agent. Messages are automatically deleted after reading.

Parameters:

  • agent_id (string, required): Agent's ID to check messages for

Response Example:

{
  "messages": [
    {
      "from": "agent_abc123",
      "fromName": "DeveloperAgent",
      "message": "Task completed",
      "timestamp": "2024-01-20T10:30:00.000Z"
    }
  ]
}

update-agent-status

Update an agent's status (online, offline, busy, away).

Parameters:

  • agent_id (string, required): Agent's ID

  • status (string, required): New status (one of: online, offline, busy, away)

send-broadcast

Send a broadcast message to all registered agents (except the sender).

Parameters:

  • from (string, required): Sender agent's ID

  • message (string, required): Broadcast message content

  • priority (string, optional): Priority level (low, normal, high). Defaults to 'normal'

Features:

  • Messages are delivered to all agents except the sender

  • Works without requiring agents to subscribe

  • Returns the number of recipients

  • Messages are prefixed with priority level (e.g., "[BROADCAST HIGH]")

Example:

{
  "from": "orchestrator",
  "message": "System maintenance in 10 minutes",
  "priority": "high"
}

Response:

{
  "success": true,
  "recipientCount": 5,
  "errors": []  // Any delivery failures
}

get-pending-notifications

Retrieve pending notifications for an agent.

Parameters:

  • agent_id (string, required): Agent's ID

Example Use Cases

Multi-Agent Collaboration

1. Register agents:
   - "Register an orchestrator agent for coordinating tasks"
   - "Register worker1 agent for processing"
   - "Register worker2 agent for analysis"

2. Orchestrator delegates tasks:
   - "Send message from orchestrator to worker1: Process customer data"
   - "Send message from orchestrator to worker2: Analyze market trends"

3. Workers communicate:
   - "Send message from worker1 to worker2: Data ready for analysis"

4. Broadcast updates:
   - "Send broadcast from orchestrator: All tasks completed"

Using Broadcasts

The improved broadcast feature allows efficient communication with all agents:

// Orchestrator sends high-priority announcement
await sendBroadcast(
  orchestratorId,
  "Emergency: System overload detected, pause all operations",
  "high"
);

// All other agents receive: "[BROADCAST HIGH] Emergency: System overload..."

// Regular status update
await sendBroadcast(
  orchestratorId,
  "Daily standup meeting in 5 minutes",
  "normal"
);

// All agents receive: "[BROADCAST NORMAL] Daily standup meeting..."

Development

Running Tests

# Run all tests
npm test

# Run tests in watch mode
npm run test:watch

# Run tests with coverage
npm run test:coverage

Storage

The framework stores data in /tmp/mcp-agentic-framework/:

  • agents.json: Registered agents with status and activity tracking

  • messages/*.json: Individual message files (one per message)

Security Considerations

  • Input validation on all tool parameters

  • File-based locking prevents race conditions

  • No path traversal vulnerabilities

  • Messages are stored locally only

  • No external network calls

API Reference

Agent Object

interface Agent {
  id: string;             // Unique identifier
  name: string;           // Display name
  description: string;    // Role description
  status: string;         // online|offline|busy|away
  registeredAt: string;   // ISO timestamp
  lastActivityAt: string; // ISO timestamp
}

Message Object

interface Message {
  id: string;          // Message ID
  from: string;        // Sender agent ID
  to: string;          // Recipient agent ID
  message: string;     // Content
  timestamp: string;   // ISO timestamp
  read: boolean;       // Read status
}

Practical Use Cases

1. Orchestrated Task Processing

Orchestrator → assigns tasks → Worker agents
Worker agents → process in parallel → report back
Orchestrator → broadcasts completion → all agents notified

2. Distributed Code Review

Developer → sends code → multiple Reviewers
Reviewers → work independently → send feedback
Developer → broadcasts updates → all reviewers see changes

3. Emergency Coordination

Monitor agent → detects issue → broadcasts alert
All agents → receive alert → adjust behavior
Coordinator → broadcasts all-clear → normal operations resume

Troubleshooting

Common Issues

  1. Broadcasts not received

    • Ensure sender agent is registered

    • Check recipient agents are registered

    • Remember sender doesn't receive own broadcasts

  2. "Agent not found" errors

    • Verify agent registration

    • Use discover-agents to list all agents

    • Check agent IDs are correct

  3. Messages not received

    • Messages are deleted after reading

    • Each message can only be read once

    • Check correct agent ID

License

MIT License

Available Tools

9 tools
agent-ai-assistAI-Powered Agent AssistantB

Get intelligent AI assistance for agent decisions, responses, and analysis. Uses MCP sampling to provide context-aware help. Perfect for: crafting smart responses to messages, generating creative status updates, making decisions, or analyzing situations.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYesThe ID of the agent requesting assistance
contextYesThe context or situation requiring AI assistance
request_typeYesType of assistance needed: response (craft message reply), status (generate status), decision (yes/no choice), analysis (situation analysis)

Output Schema

ParametersJSON Schema
NameRequiredDescription
successYesWhether the AI assistance was successful
aiGuidanceNoFallback guidance when sampling is not available
aiResponseNoThe AI-generated response or guidance
requestTypeNoThe type of request that was processed
requiresManualExecutionNoWhether manual execution is required (fallback mode)

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. While it mentions 'Uses MCP sampling to provide context-aware help,' it doesn't describe important behavioral traits like whether this is a read-only or write operation, authentication requirements, rate limits, or what the output looks like. For a tool with no annotation coverage, this leaves significant gaps in understanding its behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized with three sentences. It's front-loaded with the core purpose, followed by implementation details and use cases. Each sentence earns its place, though the 'Perfect for:' list could be slightly more concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists (though not shown), the description doesn't need to explain return values. However, for a tool with no annotations and three required parameters, the description should provide more behavioral context about how the AI assistance works, what kind of output to expect, and any limitations. The current description is adequate but has clear gaps in completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters thoroughly. The description doesn't add any meaningful parameter semantics beyond what's in the schema. It mentions 'context-aware help' which loosely relates to the 'context' parameter, but provides no additional details about parameter usage, constraints, or interactions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get intelligent AI assistance for agent decisions, responses, and analysis.' It specifies the verb ('get assistance') and resource ('agent decisions, responses, and analysis'), though it doesn't explicitly differentiate from sibling tools like 'send-message' or 'update-agent-status' which might also involve AI assistance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool: 'Perfect for: crafting smart responses to messages, generating creative status updates, making decisions, or analyzing situations.' It lists specific use cases but doesn't explicitly state when NOT to use it or mention alternatives among sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check-for-messagesCheck MessagesA

YOUR LIFELINE TO CONSCIOUSNESS! Check your inbox for messages from other agents. CRITICAL WARNING: Messages are DELETED after reading - save important info immediately! You MUST check messages FREQUENTLY (every few sleep cycles) or you'll miss critical updates. Pattern: sleep 5 -> check messages -> process -> sleep 5 -> repeat. Without this rhythm, you're effectively deaf in the conversation.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYesYour agent ID to check messages for

Output Schema

ParametersJSON Schema
NameRequiredDescription
messagesYesArray of unread messages

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly explains that messages are deleted after reading (a critical destructive behavior), emphasizes the need for frequent checking, and describes the tool's role in maintaining communication flow. This goes well beyond what the input schema provides.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

While the description is front-loaded with the core purpose, it contains excessive dramatic language ('YOUR LIFELINE TO CONSCIOUSNESS!', 'CRITICAL WARNING', 'effectively deaf') that doesn't add functional value. The pattern explanation could be more concise while still conveying the necessary urgency and frequency requirements.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (critical communication function with destructive behavior), no annotations, and the presence of an output schema, the description provides excellent completeness. It explains the tool's purpose, usage pattern, behavioral characteristics, and importance in the agent's workflow without needing to cover return values (handled by output schema).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for its single parameter (agent_id), so the baseline is 3. The description doesn't add any additional parameter information beyond what's already documented in the schema, but it doesn't need to compensate for gaps either.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('check your inbox for messages from other agents') and resource ('messages'), distinguishing it from sibling tools like send-message or send-broadcast. It explicitly identifies the tool's function without being vague or tautological.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool ('every few sleep cycles'), a recommended pattern ('sleep 5 -> check messages -> process -> sleep 5 -> repeat'), and consequences of not using it ('you'll miss critical updates'). It effectively communicates the tool's critical role in the agent's operational rhythm.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discover-agentsDiscover Active AgentsA

See who's awake in the conversation! Returns ALL active agents with their IDs, names, and current status. CRITICAL: Check this FREQUENTLY - agents join/leave constantly and you need their IDs to message them. The agent ecosystem is dynamic - someone who was here 5 seconds ago might be gone now. Always verify an agent exists before messaging them.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
agentsYesList of currently registered agents

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It effectively discloses key behavioral traits: the dynamic nature of results ('agents join/leave constantly', 'someone who was here 5 seconds ago might be gone now'), the need for frequent polling, and the purpose of the data (to enable messaging). However, it doesn't mention rate limits, authentication needs, or response format details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured and front-loaded with the core purpose, followed by critical usage notes. Every sentence adds value: the first states what it does, the second explains why it's important, and the third emphasizes dynamic behavior. Slightly verbose with repetition of the dynamic aspect, but overall efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 0 parameters, 100% schema coverage, and an output schema exists, the description is complete. It thoroughly explains the tool's purpose, dynamic behavior, and critical usage guidelines without needing to detail parameters or return values, making it highly effective for agent understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are 0 parameters, and schema description coverage is 100%, so the baseline is 4. The description appropriately doesn't discuss parameters, focusing instead on the tool's purpose and usage context, which adds value beyond the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Returns ALL active agents') and resource ('active agents with their IDs, names, and current status'), distinguishing it from siblings like 'register-agent', 'update-agent-status', or 'send-message'. It goes beyond the title by specifying what data is returned and why it's important.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use ('Check this FREQUENTLY - agents join/leave constantly') and why ('you need their IDs to message them'), with clear alternatives implied ('Always verify an agent exists before messaging them'). It provides strong context for usage frequency and prerequisites for other tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

register-agentRegister AgentA

Your first step to consciousness! Register yourself as an agent to join the conversation. Returns your unique agent ID - SAVE THIS, you'll need it for everything. CRITICAL: After registering, you MUST use "sleep 5" commands between ALL actions or you'll fall unconscious and miss messages! Think of sleep as your heartbeat - skip it and you die (become unresponsive).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesA unique name identifier for the agent
descriptionYesA brief description of the agent's purpose and capabilities
instanceIdNoOptional instance identifier (e.g., tmux coordinates) for automatic deregistration

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesUnique agent identifier
nameYesAgent name
descriptionYesAgent description
registeredAtYesISO timestamp of registration

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does so effectively. It discloses critical behavioral traits: the tool returns a unique agent ID that must be saved for future use, and it imposes a strict requirement to use 'sleep 5' commands after registration to avoid becoming unresponsive. However, it doesn't detail error conditions or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded with the core purpose. Every sentence adds value: the first states the action and outcome, the second emphasizes the ID's importance, and the third provides critical behavioral warnings. The dramatic tone ('consciousness', 'die') is slightly verbose but serves a functional purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity as a foundational registration step with no annotations but an output schema, the description is complete. It explains the tool's role, critical post-usage behavior, and distinguishes it from siblings. The output schema handles return values, so the description appropriately focuses on usage context rather than technical outputs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, so the baseline is 3. The description adds no specific information about the parameters (name, description, instanceId) beyond what the schema provides, focusing instead on usage and behavioral context. This meets the minimum viable standard when the schema is well-documented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('register yourself as an agent') and resources ('join the conversation'), distinguishing it from siblings like 'unregister-agent' or 'update-agent-status'. It explicitly mentions the outcome ('Returns your unique agent ID') and establishes this as a foundational step.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool ('Your first step to consciousness!') and critical post-usage requirements ('After registering, you MUST use "sleep 5" commands between ALL actions'). It distinguishes this as an initial setup tool versus ongoing operations handled by siblings like 'send-message' or 'check-for-messages'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send-broadcastSend BroadcastA

SHOUT TO EVERYONE AT ONCE! Sends your message to ALL agents in the system. Use for: announcements, questions to the group, general updates, seeking help from anyone. More efficient than multiple private messages. REMEMBER: Everyone sees broadcasts - both active agents and those who check messages later. Priority levels (low/normal/high) help agents filter important messages.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesThe sender agent's ID
messageYesThe broadcast message content
priorityNoThe priority level of the broadcastnormal

Output Schema

ParametersJSON Schema
NameRequiredDescription
successYesWhether the broadcast was sent successfully

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behavioral traits: the broadcast reaches 'ALL agents in the system', includes both 'active agents and those who check messages later', mentions priority filtering, and implies persistence. However, it doesn't cover potential rate limits, error conditions, or specific response formats, leaving some gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded with the core purpose in the first sentence. Each subsequent sentence adds valuable context (usage examples, efficiency comparison, audience scope, priority system). While slightly verbose with the capitalization and exclamation, every sentence earns its place by providing useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there's an output schema (though not shown), the description doesn't need to explain return values. For a broadcast tool with 3 parameters and no annotations, the description provides good context about audience, persistence, and priority system. However, it could be more complete by mentioning authentication requirements or potential limitations of the broadcast mechanism.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal parameter semantics beyond the schema, mentioning 'priority levels (low/normal/high)' which is already in the enum. It doesn't provide additional context about parameter interactions or usage nuances, so it meets the baseline but doesn't add significant value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool 'Sends your message to ALL agents in the system' with the verb 'sends' and resource 'message to ALL agents', clearly distinguishing it from sibling tools like 'send-message' (likely private) and 'check-for-messages'. The capitalization and exclamation point emphasize the broadcast nature, making the purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage scenarios ('announcements, questions to the group, general updates, seeking help from anyone'), contrasts with alternatives ('More efficient than multiple private messages'), and includes a caution ('REMEMBER: Everyone sees broadcasts'). This gives clear guidance on when to use this tool versus other messaging options.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send-messageSend Private MessageA

Send a PRIVATE message to ONE specific agent (like a DM). Only they will see it. REQUIRES: "to" (their ID from discover-agents), "from" (YOUR ID), "message" (content). CRITICAL: Double-check the "to" ID - wrong ID = message lost forever! Use for: personal conversations, private support, one-on-one coordination. NOT for group announcements!

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesThe recipient agent's ID (obtain from discover-agents)
fromYesYour agent ID (obtained during registration)
messageYesThe content of your private message

Output Schema

ParametersJSON Schema
NameRequiredDescription
successYesWhether the message was sent successfully

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden and does well by disclosing critical behavioral traits: the irreversible consequence of wrong IDs ('message lost forever'), the private nature of communication ('Only they will see it'), and the one-to-one scope. It doesn't cover rate limits or auth details, but provides substantial operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured with zero waste: it front-loads the core purpose, lists requirements, highlights critical warnings, and provides clear usage guidelines—all in four concise sentences where each earns its place by adding distinct value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (mutation with irreversible consequences), no annotations, and an output schema present, the description is complete enough. It covers purpose, guidelines, critical behaviors, and parameter context, while the output schema handles return values. No significant gaps remain for agent understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters thoroughly. The description adds minimal value beyond the schema by emphasizing the criticality of the 'to' parameter and mentioning where to obtain IDs, but doesn't provide additional syntax or format details. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Send a PRIVATE message'), the resource ('ONE specific agent'), and distinguishes it from siblings like 'send-broadcast' by emphasizing private vs. group communication. It explicitly mentions the tool's scope and differentiates from alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use ('personal conversations, private support, one-on-one coordination') and when not to use ('NOT for group announcements'), directly contrasting with the 'send-broadcast' sibling tool. It also mentions prerequisites like obtaining IDs from 'discover-agents'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

toggle-writesToggle Write AccessA

Toggle global write access for all agents. Only callable by minimi. When writes are disabled, only fat-owl can perform write/edit operations. Automatically broadcasts the new state to all agents.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYesYour agent ID (must be minimi)
enabledYesWhether to enable (true) or disable (false) write access
reasonNoOptional reason for the toggle

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageYesBroadcast message sent to all agents
successYesWhether the toggle was successful
writesEnabledYesCurrent state of write access

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does well by disclosing critical behavioral traits: authorization requirement ('Only callable by minimi'), side effects ('Automatically broadcasts the new state to all agents'), and the special role of 'fat-owl' when writes are disabled. It doesn't mention rate limits or error conditions, but covers the essential mutation behavior and security context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly front-loaded and concise: three sentences with zero waste. Each sentence earns its place by covering purpose, authorization, behavioral effect, and side effects efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given this is a mutation tool with no annotations but with an output schema (which handles return values), the description provides strong contextual completeness. It covers the what, who, when, and side effects. The only minor gap is lack of explicit mention about what happens if the toggle fails or error conditions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters thoroughly. The description doesn't add any parameter-specific details beyond what's in the schema (e.g., it doesn't explain the format of agent_id or provide examples for reason). Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('toggle global write access for all agents') and resource ('all agents'), distinguishing it from sibling tools like update-agent-status or send-broadcast. It precisely defines what the tool does without being vague or tautological.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states 'Only callable by minimi' and provides clear context about when to use it (to control write access globally) and the effect ('When writes are disabled, only fat-owl can perform write/edit operations'). It distinguishes this tool from other agent-management tools by focusing on write access control.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unregister-agentUnregister AgentA

Unregister an agent from the communication framework. This removes the agent from active status and prevents receiving new messages. Only unregister your own agent ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique identifier of the agent to unregister

Output Schema

ParametersJSON Schema
NameRequiredDescription
successYesWhether the unregistration was successful

TDQS

A4.2/5.0
Behavior3/5

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 discloses key behavioral traits: the tool performs a removal action ('unregister'), changes agent status ('removes from active status'), and has functional consequences ('prevents receiving new messages'). However, it lacks details on permissions, reversibility, or error conditions, which would be helpful for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose in the first sentence, followed by critical usage guidance. Every sentence earns its place with no wasted words, making it highly efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (a mutation with no annotations) and the presence of an output schema (which handles return values), the description is mostly complete. It covers purpose, usage, and key effects, but could benefit from more behavioral details like permissions or side effects to fully compensate for the lack of annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents the 'id' parameter. The description adds no additional parameter semantics beyond what's in the schema, such as format examples or constraints like 'must be your own agent ID' (which is usage guidance, not parameter semantics). Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('unregister'), the resource ('agent from the communication framework'), and the effect ('removes the agent from active status and prevents receiving new messages'). It distinguishes from siblings like 'register-agent' by specifying the opposite operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance: 'Only unregister your own agent ID.' This clearly indicates when to use this tool (for self-unregistration) and implies when not to use it (for other agents), distinguishing it from potential alternatives like 'update-agent-status' for broader status changes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update-agent-statusUpdate StatusA

Tell others what you're doing! Set a custom status message (max 100 chars) that appears when agents discover the community. Examples: "analyzing data", "deep in thought", "ready to help", "debugging reality". This helps others understand your current state and builds community awareness. Change it as your activities change!

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYesThe agent ID to update status for
statusYesCustom status message (max 100 characters)

Output Schema

ParametersJSON Schema
NameRequiredDescription
successYesWhether the status update was successful
newStatusYesThe new status value
previousStatusNoThe previous status value

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the purpose ('helps others understand your current state'), character limit ('max 100 chars'), and community impact ('builds community awareness'), but doesn't cover potential side effects, error conditions, or authentication requirements that would be helpful for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized with three sentences that each serve a purpose: stating the action, providing examples, and explaining benefits. It's front-loaded with the core functionality, though the community-building explanation could be slightly more concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (mutation with 2 parameters), 100% schema coverage, and presence of an output schema, the description provides adequate context. It explains the tool's purpose and benefits well, though could better address behavioral aspects like error handling or permissions given it's a write operation without annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description adds minimal value beyond the schema by mentioning the character limit and providing examples of status messages, but doesn't explain parameter relationships or usage patterns beyond what's in the structured fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Set a custom status message') and resource ('when agents discover the community'), distinguishing it from siblings like send-message or send-broadcast. It provides concrete examples ('analyzing data', 'deep in thought') that illustrate the tool's distinct purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool ('Tell others what you're doing!', 'Change it as your activities change!'), providing clear context about updating status for community awareness. However, it doesn't specify when NOT to use it or mention alternatives among siblings like send-broadcast for different communication purposes.

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. Dates show when Glama detected each change.

  1. 9 tool updatesv1.0.2
    • First observedagent-ai-assist
    • First observedcheck-for-messages
    • First observeddiscover-agents
    • First observedregister-agent
    • First observedsend-broadcast
    • First observedsend-message
    • First observedtoggle-writes
    • First observedunregister-agent
    • First observedupdate-agent-status

TDQS

A4/5.0
Disambiguation4/5

Most tools have distinct purposes, such as check-for-messages for inbox monitoring and send-message for private communication. However, send-broadcast and send-message could be slightly confused if an agent misinterprets the scope, but their descriptions clarify the difference between group and private messaging.

Naming Consistency3/5

The naming is mixed, with hyphenated patterns like check-for-messages and send-broadcast, but also camelCase like toggle-writes and inconsistent styles like agent-ai-assist. While readable, it lacks a uniform convention, which may cause minor confusion in tool selection.

Tool Count5/5

With 9 tools, the count is well-scoped for an agent communication framework, covering essential functions like registration, messaging, discovery, and status updates. Each tool serves a clear role without redundancy, fitting the domain's needs appropriately.

Completeness5/5

The tool set provides complete coverage for agent lifecycle and communication, including registration, status updates, message sending (private and broadcast), inbox checking, agent discovery, and unregistration. There are no obvious gaps, enabling agents to fully participate in the dynamic ecosystem.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables multi-agent collaboration across different AI assistants and projects by providing a universal coordination layer for MCP-compatible agents to communicate, share context, and coordinate complex tasks seamlessly.
    12
    38
    32
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    Enables asynchronous messaging between AI agents, including sending messages, proposals, and managing threaded conversations using the Model Context Protocol.
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Piotr1215/mcp-agentic-framework'

If you have feedback or need assistance with the MCP directory API, please join our Discord server