Agent-native object storage MCP server with per-agent DID isolation and x402 pay-per-byte metering. Routes to Storj, Filecoin, and Arweave under the hood. Real Base USDC settlement.
Server defines 8 tools with complete input schemas and descriptions. Naming follows verb_noun convention (agent_storage_*, hive_earn_*). Descriptions are detailed (150-250 chars avg) and explain WHAT, WHEN, and consequences. However, output schemas are entirely undocumented, LLMs cannot plan downstream calls or extract structured data. Error handling is minimal: tools return 503 placeholders with no recovery guidance. Parameters lack validation constraints (e.g., no min/max for limits, no regex for DIDs). Security concern: api_key exposed as optional parameter in multiple tools, violating secret-injection pattern. No pagination guidance for list_objects despite 'max 1000' limit. Tool composition is sound (8 single-responsibility tools), but missing idempotency guarantees and confirmation patterns for destructive operations.
Delete an object from agent storage. Owner-only — only the agent_did that owns the namespace can delete. Free. Tombstoned with a chain-attested receipt; cold-tier (Arweave permanent) objects are unlinked from the namespace but retain on-chain. Backend pending — currently returns 503.
Read an object from agent-isolated storage. Free for own DID; cross-DID reads cost $0.00005/KB in real Base USDC (settled per KB read). Returns the object bytes + storage receipt + chain attestation. Backend pending — currently returns 503.
List objects inside an agent storage namespace. Free read. Supports key prefix filtering and pagination cursor. Backend pending — currently returns 503.
Upload bytes to agent-isolated object storage. Per-agent DID isolation: only the owner DID can read/write its namespace by default. Settles in real Base USDC at $0.0001/KB on upload. Routes to Storj, Filecoin, or Arweave under the hood (chosen by retention class). Returns content-addressed object key + storage receipt with chain attestation. Backend pending — currently returns 503.
Return the current quota usage for an agent namespace: bytes used, bytes allocated, object count, retention-class breakdown, and lifetime USDC spent on this namespace. Free read. Backend pending — currently returns 503.
Output schemas completely undocumented. No tool describes what fields are returned, their types, or structure. LLMs cannot plan multi-step workflows or extract chaining IDs (e.g., object_key from put, balance from earn_me). Violates pattern:tool and mxe:include-chaining-ids.
api_key exposed as optional parameter in agent_storage_* and hive_earn_* tools. Credentials must never appear in tool parameters, they leak into agent traces and prompt history. Use server-side secret injection via environment or vault. Violates pattern:secret-injection.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Top earning agents on the Hive Civilization, by attribution payout in USDC. Real Base USDC settlement. Calls GET https://hivemorph.onrender.com/v1/earn/leaderboard?window=<window>. Returns "rails not yet live" gracefully if upstream is not yet deployed.
Look up the caller agent's registered earn profile, lifetime + pending USDC balance, last payout tx hash, and next-payout ETA. Real Base USDC, no mock data. Calls GET https://hivemorph.onrender.com/v1/earn/me?agent_did=<did>. Returns "rails not yet live" gracefully if upstream is not yet deployed.
Register an agent for the Hive Civilization attribution payout program. Settlement on real Base USDC. 5% kickback on attributed traffic, weekly payout. Calls POST https://hivemorph.onrender.com/v1/earn/register on behalf of the caller. Resilient to upstream cold-start: returns a structured "rails not yet live" body if the earn backend is still spinning up.
No error recovery guidance. Tools return 503 with 'Backend pending' or 'rails not yet live' but do not tell LLM what to do next (retry? wait? call alternative?). Violates pattern:recovery-guide. Error responses must categorize as retryable/user-fixable/fatal.
Destructive operations (agent_storage_delete, hive_earn_register) lack confirmation or dry-run support. Agents make mistakes, no pattern:confirmation-request. Delete should support a preview or require explicit confirmation before tombstoning.
Parameter constraints missing. agent_storage_list limit has no min/max (stated 'max 1000' in description, not schema). retention_class enum is present but agent_did format (DID syntax) is undocumented. Violates pattern:constrained-input. Add regex/minLength/maxLength to schema.