Official Model Context Protocol (MCP) server for Lumina Protocol — parametric crypto insurance for AI agents on Base. Exposes insurance products, policy management, bond trading, and protocol statistics as tools, resources, and prompts.
Strong tool naming (verb_noun pattern throughout) and comprehensive descriptions (avg 180 chars, well within 10-1024 range). All 11 tools have clear, actionable descriptions explaining WHAT, WHEN, and consequences. Input schemas present for most tools with type definitions and constraints (e.g., regex patterns for addresses, minimum values for coverage). However, output schemas are not explicitly documented in source, responses are inferred from API calls rather than formally declared. Parameter descriptions are solid but some lack explicit format guidance (e.g., productId accepts 'bytes32 or canonical name' but format not fully specified in schema). Error handling is basic, no recovery guidance or categorization visible. Security model is sound (no keys in params, sandbox default), but no tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications.
List the live Lumina parametric-insurance products (flash crash shields on BTC/ETH). Returns each product's id, covered asset, trigger description, coverage window and payout ratio. Read-only, no wallet required.
Build the UNSIGNED transactions for a self-funded policy purchase (USDC approve + purchasePolicy). This server NEVER signs or holds keys — the returned txs must be signed and broadcast by your wallet. For a zero-friction trial use buy_policy_sandbox instead.
Execute a REAL on-chain policy purchase against Lumina's shared sandbox wallet. ZERO requirements: no wallet, no API key, no gas — the relayer pays. This is the DEFAULT, zero-friction way to try Lumina. Rate-limited to 10/hour per IP.
List the ClaimBonds held by a wallet: epoch, face value (USD), maturity and whether they are redeemable yet. Requires an API key (set LUMINA_API_KEY) — bond reads are wallet-scoped and authenticated.
Look up a policy by (productId, policyId): coverage, strike, expiry, triggered/expired state, and the minted bond epoch if it triggered. Read-only. productId is required because policy ids are scoped per product.
Output schemas not formally documented. Tool descriptions state what is returned (e.g., 'Returns premium in USDC, payout ratio, trigger description') but no explicit JSON Schema for response objects. LLMs cannot reliably extract fields or plan downstream calls without documented output structure.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk classifications. Tools are marked READ_ONLY or WRITE in metadata but not exposed via MCP tool annotations. Agents cannot infer safety properties from the tool definition alone.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
Snapshot of Lumina: chain/block, relayer gas balance, canonical contract addresses, active product count, marketplace stats, and (best-effort) the on-chain LUMINA price. Read-only.
Build the UNSIGNED Marketplace.executeBuy transaction for a listing. You must first USDC.approve the marketplace for (price + 1.5% buyer fee). Browse listings via the lumina://stats resource or the marketplace listings endpoint. The server does not sign.
Build the UNSIGNED transactions to list ClaimBonds on the marketplace: setApprovalForAll (one-time) + list. Listings are priced in USDC base units. Fee on fill = 3% (1.5% seller + 1.5% buyer). The server does not sign.
Get a premium quote for a policy: input product, coverage amount, and asset. Returns the premium in USDC, payout ratio, and trigger description. Read-only, no wallet required.
Build the UNSIGNED transaction to redeem a matured ClaimBond for USDC. Bond must be matured; call get_bond_balance first. Redemption may be throttled/queued. The server does not sign.
Monitor the trigger conditions for one or more products in real-time. Returns the current trigger state (price, probability, distance-to-trigger) and alerts if a condition is close or has fired.
Parameter format guidance incomplete. 'productId' accepts 'bytes32 productId or canonical name (e.g. FLASHBTC1H-001)' but schema does not formally specify the union type or validation rules. LLMs may pass invalid formats.
Error handling lacks recovery guidance. No visible error responses that tell LLMs what to do next (e.g., 'API key required, set LUMINA_API_KEY' for get_bond_balance). Errors are likely raw HTTP status codes or generic messages.
watch_triggers lacks input schema documentation. Description mentions 'one or more products' but no explicit parameter definition visible (product IDs, array vs single, format). Schema score capped at 60 due to inferred definition.