MCP server for subscribing to and managing on-chain event webhooks via Crypto APIs
This server has 3 tools with moderate quality issues. Tool naming follows verb_noun convention reasonably well (blockchain_events_create, blockchain_events_manage, system_info), and all three tools have descriptions and input schemas. However, parameter descriptions are sparse in several cases, output schemas are completely undocumented, and error handling guidance is absent. The 'blockchain_events_manage' tool combines multiple disparate actions (list, get, delete, activate) into a single tool with an action enum, violating the single-responsibility principle. Parameter names like 'blockchain' and 'network' lack context about valid values. Most critically, there is no documentation of what these tools return, making it impossible for LLMs to plan downstream operations or extract needed fields.
Create a webhook subscription for on-chain events. When the specified event occurs, CryptoAPIs sends a POST request to your callbackUrl with the event data. Subscriptions persist until deleted. Event types include: UNCONFIRMED_COINS_TRANSACTION, CONFIRMED_COINS_TRANSACTION, UNCONFIRMED_TOKENS_TRANSACTION, CONFIRMED_TOKENS_TRANSACTION, NEW_BLOCK, ADDRESS_COINS_TRANSACTION_CONFIRMED, ADDRESS_TOKENS_TRANSACTION_CONFIRMED, and more. Some events require an address or transactionId parameter. ⚠️ DANGEROUS ACTIONS: create requires explicit confirmation.
Manage existing webhook subscriptions for on-chain events. Use this to view, delete, or re-activate event subscriptions created via blockchain_events_create. Actions: • list-subscriptions: List all active subscriptions for a blockchain/network (paginated) • get-subscription: Get details of a specific subscription by its referenceId • delete-subscription: Remove a subscription (stops webhook delivery) • activate-subscription: Re-activate a previously deactivated subscription ⚠️ DANGEROUS ACTIONS: delete-subscription, activate-subscription require explicit confirmation.
Get system information including available credits, supported blockchains, and API usage details
No output schemas documented for any tool. LLMs cannot predict what fields are returned, breaking downstream tool chaining and forcing guesswork about available data.
blockchain_events_manage violates single-responsibility principle by combining list, get, delete, and activate operations into one tool controlled by an 'action' enum. This should be split into separate tools: list_blockchain_subscriptions, get_blockchain_subscription, delete_blockchain_subscription, activate_blockchain_subscription.
Parameter 'blockchain' and 'network' lack enum constraints or format descriptions. What values are valid? Are they 'bitcoin'/'mainnet' or 'BTC'/'main'? Description says 'e.g. bitcoin, ethereum' and 'e.g. mainnet, testnet, sepolia' but these are example values, not constraints. Should be enums or include validation regex.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 49 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 35 | - | v1 |
Parameter 'confirmationToken' appears in schemas for dangerous actions but has no description explaining what it is, how to obtain it, or what format it expects. For a security mechanism, this is inadequate.
system_info tool description is only 67 characters and extremely vague ('Get system information including available credits, supported blockchains, and API usage details'). Does not explain when to call it, what format credits are in, or what structure is returned.
No error recovery guidance. Tools like delete_subscription and activate_subscription are marked DANGEROUS but have no documented error cases, retry guidance, or recovery steps. What if a confirmation token is invalid? What if a subscription does not exist?
Parameter descriptions are missing or minimal. 'limit' and 'offset' have brief descriptions but no range constraints (min/max values). 'referenceId', 'context', 'confirmationToken' lack actionable format guidance.
blockchain_events_create description mentions 'Some events require an address or transactionId parameter' but does not enumerate which event types require which fields. LLMs must guess dependencies.