An AI-powered operating system with integrated MCP Solana blockchain support, tool registry, and multi-application framework
This MCP server exhibits significant quality gaps across naming, descriptions, parameter documentation, and error handling. While 16 tools are declared, the source code provides limited visibility into actual implementation details, schemas, and error handling. Tool descriptions are present but often generic (10-50 chars), parameter schemas are minimally documented, and no evidence of structured error recovery guidance. The server appears to be a hybrid tool management + Solana blockchain interaction system, but tools like 'register' and 'execute_capability' rely on opaque 'object' type parameters without field-level schema definition. No toolAnnotations (readOnlyHint/destructiveHint/idempotentHint) are evident despite the risk classifications provided. High-risk operations (transfer_sol, deploy_contract, delete_tool) lack explicit confirmation/dry-run patterns.
Call a function on a deployed smart contract.
Create a Cross-Program Invocation (CPI) transaction.
Delete a tool.
Deploy a smart contract to the Solana blockchain.
Deserialize account data according to a schema.
Execute a tool capability.
Find a program derived address (PDA).
Opaque parameter schemas: 'manifest' and 'implementation' parameters in register() are typed as 'object' with no field-level schema. LLM cannot determine what fields to provide.
No documented output schemas for any tool. Clients cannot plan downstream tool calls or know what fields to extract.
Missing descriptions for empty-parameter tools: get_wallet_address() has no description of what it returns or when to use it.
No error handling guidance: High-risk operations (transfer_sol, deploy_contract, delete_tool) lack recovery hints or error categorization. LLM receives no guidance on retryability or what to do next.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 49 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 28 | - | v1 |
Get information about a specific account.
Get all accounts owned by a program.
Get all token accounts owned by a wallet.
Get a tool by ID.
Get the wallet address for the current user.
Get the SOL balance of a wallet.
List registered tools with optional filtering.
Register a new tool or update an existing tool.
Send SOL tokens from one wallet to another.
No confirmation/dry-run pattern for irreversible operations. delete_tool and transfer_sol lack a way for agents to preview or confirm before committing.
No toolAnnotations (readOnlyHint/destructiveHint/idempotentHint). Destructive operations are not marked with destructiveHint, breaking agent safety conventions.
Generic parameter descriptions lack format constraints. 'amount' in transfer_sol says 'The amount of SOL to transfer' but does not specify units, decimal precision, minimum, or maximum.
No pagination documented for list tools. list() may return unbounded results, risking context window exhaustion.
Parameters named 'category' and 'tag' in list() lack enum values or examples. LLM cannot know valid values without discovery.
Unclear parameter intent: 'tool_id' could be a UUID, slug, or opaque system ID. No guidance on format or whether the tool accepts human-readable names.