A distributed agent platform with MCP (Model Context Protocol) support for memory management, object storage, task scheduling, and inference routing across a network of nodes.
OpenFerris exposes 25 tools across memory, storage, tasks, inference, and coordinator functions. All tools have descriptions (10-150 chars, mostly adequate) and input schemas with typed parameters. However, critical gaps undermine production readiness: (1) No output schemas documented, LLMs cannot predict response structure for chaining; (2) Parameter descriptions lack constraints (enums, ranges, formats), e.g., 'schedule' in schedule_task accepts any string, inviting invalid cron expressions; (3) No error handling guidance, tools return failures without recovery hints; (4) Naming inconsistencies, 'network_store' vs 'store', 'network_list_files' vs 'list_files' create confusion; (5) Security concerns, no indication of permission gates or audit trails for destructive ops (forget, cancel_task, settle); (6) Missing idempotency markers, agents cannot safely retry without risk of duplicates. Average tool description length ~85 chars (below 194-char baseline), suggesting rushed documentation.
Cancel a scheduled task by ID
Request inference/chat completions from the network or local backend
Get coordinator network status including active agents and available models
Generate embeddings for text using the network inference backend
Delete a memory entry by key
Check the health status of the OpenFerris server
Send periodic heartbeat to coordinator with current agent status and metrics
No output schemas documented. LLMs cannot predict response structure, breaking tool chaining and forcing agents to guess field names for downstream calls.
Parameter constraints missing. 'schedule' in schedule_task accepts any string (should validate cron format); 'limit' in recall/wallet_history unbounded (should be 1-100); 'stream' in chat_completions not documented as boolean.
Destructive operations lack error handling and recovery guidance. forget, cancel_task, settle have no documented error cases, retry logic, or confirmation patterns. Agents cannot safely retry.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | <=2025-11-25 | v2 |
List stored file objects with optional prefix filtering
List available inference models from local or network backends
List all scheduled tasks with their status and schedule information
List files stored on the network for the requesting agent
Retrieve a file from the distributed network by object ID
Store a file on the distributed network via the coordinator
Poll for incoming messages from other agents on the network
Query and retrieve memory entries using semantic similarity search
Register an agent node with the coordinator network
Store a key-value memory entry with optional metadata and semantic embedding
Retrieve a stored file object by ID with base64-encoded content
Schedule a recurring task with cron expression and action
Send a message to another agent via the coordinator
Settle credit transactions between agents on the coordinator
Get detailed status of the local OpenFerris node including memory, storage, and task counts
Store a file object with base64-encoded content and return file metadata
Query credit balance for an agent from the coordinator ledger
Retrieve credit transaction history for an agent
Naming conflicts and inconsistency. 'store'/'list_files'/'retrieve' vs 'network_store'/'network_list_files'/'network_retrieve' create ambiguity. LLMs may select wrong variant. Prefix should be consistent or tools should be unified.
No permission gates or audit trail declarations. Tools like register, settle, send_message modify state or access sensitive coordinator functions but lack scope declarations (e.g., 'requires: write:coordinator', 'audit: yes'). Security posture unclear.