Professional-grade MCP server for decentralized file storage on Filecoin Onchain Cloud. Powered by the FOC-Synapse SDK, this server provides AI agents with seamless access to Filecoin's distributed storage network. Upload files with automatic payment handling, organize content in datasets, monitor storage balances, and manage providers - all through intuitive MCP tools. Supports both standard storage and CDN-enabled fast retrieval. Perfect for building AI applications that need persistent, censorship-resistant storage.
Strong foundation with 9 well-described tools covering Filecoin storage operations. All tools have descriptions (10+ chars), input schemas with typed parameters, and explicit file references. Naming follows verb_noun convention (get*, create*, process*, upload*). Critical weakness: output schemas are defined in types but NOT visible in source; unclear if they are fully documented. Per-tool descriptions are verbose (200-500+ chars) with good context about prerequisites and critical warnings (e.g., insolvency thresholds), but descriptions are overly long in places and include embedded agent instructions that should be separate from tool purpose. Tool annotations (readOnlyHint, destructiveHint, idempotentHint) are declared in metadata but NOT visible in tool registration code. Parameters are mostly well-described with types, but some lack explicit constraints (e.g., depositAmount in processPayment has no minimum/maximum bounds despite financial implications). Error handling exists but lacks structured recovery guidance.
Create a new dataset container on Filecoin for organizing related files with consistent storage settings. Datasets define storage parameters (CDN enabled/disabled, provider selection) that apply to all files added to them. Creating datasets upfront allows for better file organization and consistent retrieval performance. Provider ID is required - use getProviders to list available providers. Required Synapse v1 create-dataset fees, lockups, deposits, and service approval are estimated from the live price list before creation. Returns dataset ID, transaction hash, and progress tracking through validation, funding, and creation steps.
Calculate storage costs for Filecoin OnchainCloud and explain Synapse v1 pricing. Provides: (1) recurring monthly/total breakdowns, (2) one-time create-dataset/add-pieces fees, (3) lockup and deposit readiness, and (4) CDN egress pricing from the live price list. ⚠️ CRITICAL: When explaining budgeting, ALWAYS warn that storage providers consider accounts with less than 30 days of remaining balance as INSOLVENT and may refuse service. Recommend maintaining at least 45 days of balance for safety margin. Use when users ask about storage costs, pricing models, CDN fees, or need to budget for storage.
Check wallet balances (FIL and USDFC tokens) and comprehensive storage metrics including available funds, required deposits, days of storage remaining, and allowance status. Returns both human-readable formatted values and raw data with progress log showing calculation parameters used. ⚠️ CRITICAL: Storage providers consider accounts with less than 30 days of available balance as INSOLVENT and may refuse service. Default notice period is 45 days to ensure safe margin. IMPORTANT AGENT INSTRUCTIONS: (1) Before calling this tool, ASK the user if they want to calculate based on default storage requirements (150 GiB capacity, 365 days persistence, 45 days notice period) or if they have specific requirements. (2) After showing results, ALWAYS ASK the user if they want to see calculations for different storage configurations. (3) If days remaining falls below 45, WARN the user that they are approaching insolvency threshold (30 days) and should deposit funds immediately. Use this before upload operations to verify sufficient balance, or to monitor storage budget and plan deposits.
Output schemas not visible in source code. Types defined in @/types but actual schema validation code not shown. Cannot verify if return types match tool descriptions or if pagination/error structures are documented.
Tool annotations (readOnlyHint, destructiveHint, idempotentHint) declared in metadata but NOT visible in tool registration. Tools like processPayment and processWithdrawal are marked WRITE but no destructiveHint annotation is visible in the createTool() call, only in the feature metadata.
Financial parameters lack explicit constraints. depositAmount in processPayment has no minimum/maximum bounds; withdrawalAmount in processWithdrawal is required but no validation that it is > 0 is visible in the schema (only mentioned in description). This invites LLM to pass invalid amounts.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-21 | C | 60 | 2025-06-18+ | v2 |
| 2026-03-09 | D | 52 | - | v1 |
Retrieve detailed information about a specific dataset by its ID, including all pieces (files), their CIDs, sizes, retrieval URLs, and metadata. Returns the same comprehensive data structure as getDatasets but for a single dataset. Use this when you know the dataset ID and need detailed information about its contents.
Retrieve all datasets owned by the connected wallet with comprehensive information including piece CIDs, file sizes, provider details, and retrieval URLs. Filter by CDN status or view all datasets. Each dataset contains complete metadata about stored files and their blockchain storage proofs. Use this to inventory files, check storage status, or locate specific uploads.
List storage providers available on the Filecoin network with their service details, product offerings, and endpoint URLs. By default returns only approved providers for reliability. Use this to discover available providers, select specific providers for dataset creation, or verify provider availability before operations. Provider information includes service URLs needed for file retrieval.
Deposit USDFC tokens (not in base units) and configure storage service allowances in a single transaction using EIP-2612 gasless permits. Sets both rate allowance (per-epoch spending limit) and lockup allowance (total committed funds) to unlimited for seamless storage operations. Use this to fund your storage account before uploads or when balance is insufficient. Validates wallet balance before processing to prevent failed transactions.
Withdraw an explicit USDFC amount (not in base units) from the storage account back to your wallet. Reduces storage service allowances and available balance. Use this to retrieve unused funds from the storage account only after the user has chosen a specific amount. Returns transaction hash for verification and progress tracking through conversion, initiation, and confirmation steps.
Upload files to decentralized Filecoin storage with automatic payment handling and progress tracking. Supports both standard storage and CDN-enabled storage for frequently accessed files. The upload process is tracked through 8 phases with detailed progress logging. Prerequisites: Valid file path, PRIVATE_KEY environment variable. Returns pieceCid for retrieval and transaction hash for verification.
Tool descriptions contain embedded agent instructions ('IMPORTANT AGENT INSTRUCTIONS', 'CRITICAL', multi-paragraph guidance) rather than pure tool purpose. getBalances description is 600+ chars and mixes 'what' with 'how to use in an agent'. Descriptions should state WHAT the tool does; usage guidance belongs in agent prompts, not tool definitions.
No explicit error recovery guidance in tool descriptions. Tools like createDataset and uploadFile mention they track progress through phases but don't explain what to do if a phase fails (retry? call a specific recovery tool? manual intervention?).
getDatasets includes optional filters but no pagination parameters (limit, offset, cursor). Filecoin datasets could be numerous; large result sets risk blowing context window. Tool should accept limit/offset and return total count or next_cursor.
Private key required via environment variable (PRIVATE_KEY) but no validation that it's loaded before uploadFile or payment tools run. Silent failures or cryptic crypto errors if env is missing.