MCP server that lets AI agents store and fetch data on the Autonomi network through the antd daemon
Five tools with complete input schemas and detailed descriptions. Naming follows verb_noun pattern (store_data, retrieve_data, upload_file, download_file, stream_download_file). Descriptions are comprehensive (150-300 chars), explaining WHAT, WHEN, and RETURN values. All parameters have types and descriptions. However, no output schemas are documented, LLMs cannot predict response structure. Error handling is mentioned but not detailed. No tool annotations (readOnlyHint/destructiveHint). Missing idempotency guidance for write operations.
Download a file from the Autonomi network to a local path. Args: address: The on-network address (public) or the caller-held DataMap (private). dest_path: Local path to save to. private: If True, download as private (decrypted). Default: public. Returns: JSON confirming success, or error details.
Retrieve data from the Autonomi network by address. Args: address: The on-network address (public) or the caller-held DataMap (private). private: If True, retrieve as private (decrypted). Default: public. Returns: JSON with the retrieved text, or error details.
Store text on the Autonomi network. Args: text: The text content to store. private: If True, store as private (encrypted). The returned ``address`` is the caller-held DataMap and is NOT itself stored on-network — keep it safe. Default: public (DataMap stored on-network at ``address``). payment_mode: Payment strategy — "auto" (default, uses merkle for 64+ chunks), "merkle" (force batch payments, min 2 chunks), or "single" (per-chunk payments). Returns: JSON with ``address`` (on-network address when public, caller-held DataMap when private), ``chunks_stored``, ``payment_mode_used``, or error details.
Download a network object to a local path, streaming with constant memory. Unlike ``download_file`` (which asks the daemon to write the file server-side, requiring the daemon and this MCP server to share a filesystem), this tool streams the raw bytes back to the MCP server process and writes them to ``dest_path`` on **this** host, one chunk at a time. It never buffers the whole object in memory, so it suits large objects. Args: address: The on-network address (public) or the caller-held DataMap (private). dest_path: Local path (on the MCP server host) to write the bytes to. private: If True, treat ``address`` as a caller-held DataMap and stream the private object. Default: public. Returns: JSON with ``status``, ``dest_path``, and ``bytes_written``, or error details.
No output schemas documented. LLMs cannot predict response structure (e.g., JSON fields, types, presence of error details). Descriptions mention 'JSON with...' but no formal schema is provided.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Write operations (store_data, upload_file, download_file, stream_download_file) should declare destructiveHint=true; retrieve_data should declare readOnlyHint=true. Agents cannot distinguish safe from unsafe calls.
Error handling guidance is absent. Descriptions mention 'or error details' but do not explain what errors are possible, how to recover, or what the LLM should do next. No recovery guides per pattern:recovery-guide.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 67 | 2026-07-28+ | v2 |
Upload a local file to the Autonomi network. Args: path: Absolute path to the local file. private: If True, upload as private (encrypted). The returned ``address`` is the caller-held DataMap and is NOT stored on-network — keep it safe. Default: public (DataMap stored on-network at ``address``). payment_mode: Payment strategy — "auto" (default, uses merkle for 64+ chunks), "merkle" (force batch payments, min 2 chunks), or "single" (per-chunk payments). Returns: JSON with ``address`` (on-network address when public, caller-held DataMap when private), ``storage_cost_atto``, ``gas_cost_wei``, ``chunks_stored``, and ``payment_mode_used``, or error details.
Idempotency not documented. Write operations (store_data, upload_file) do not state whether repeated calls with identical inputs produce the same result or duplicate side effects. Agents retry on ambiguous failures, non-idempotent tools risk duplicate charges or records.
Parameter 'payment_mode' in store_data and upload_file lacks enum constraint. Description lists valid values ('auto', 'merkle', 'single') as prose, not as a formal enum. LLMs may hallucinate invalid values.