# falcon.sol structures > Structured-note pricing API for crypto, built for agents and desks. Price autocallables, barrier reverse convertibles, range accruals, principal-protected notes and shark fins on BTC, ETH and SOL. Monte Carlo (risk-neutral GBM, daily monitoring, antithetic, common-random-number greeks) on live Deribit implied vol (DVOL) and exchange spot. Paid per call with x402 v2: $0.02 USDC on Solana or Base. No account, no key. ## Endpoints - POST https://falcon-structures.vercel.app/v1/preview (free): fair coupon/participation rounded down to 0.5%, probabilities, payoff diagram. - POST https://falcon-structures.vercel.app/v1/quote ($0.02, x402): exact fair term with Monte Carlo std error, PV decomposition (PV = A + term*B), autocall/coupon probability per observation date, knock-in/knock-out/loss probabilities, expected life, delta/gamma/vega/rho/theta, 5x3 spot x vol scenario grid in USD, payoff diagram, USD cash flows. Malformed term sheets return 400 before payment. - GET https://falcon-structures.vercel.app/v1/market/{BTC|ETH|SOL} (free): spot, implied vol, realized vol, rate used. - MCP (streamable HTTP): https://falcon-structures.vercel.app/mcp - tools preview_note (free), market_snapshot (free), price_note (paid via x402-in-MCP). ## Term sheet JSON Schema: https://falcon-structures.vercel.app/schema/term-sheet.json. Levels are fractions of strike-date spot (0.7 = 70%). Leave the free term (couponPerPeriod / couponPa / participation) empty to solve for it; set it to get PV and implied margin instead. issuerMarginBpsPa (default 200) sets target PV = 1 - margin x tenor. Products: autocallable{tenorDays, obsFreqDays, autocallBarrier, couponBarrier, knockInBarrier, memory, nonCallDays}; reverse_convertible{tenorDays, knockInBarrier, strike}; range_accrual{tenorDays, rangeLow, rangeHigh, protection}; principal_protected{tenorDays, protection, strike, cap}; shark_fin{tenorDays, protection, strike, knockOutBarrier, rebate}. Override market with market:{spot, vol, rate}. Max 730 days, 60k paths. Example: {"underlying":"ETH","notionalUsd":10000,"issuerMarginBpsPa":200,"product":{"type":"autocallable","tenorDays":30,"obsFreqDays":7,"autocallBarrier":1,"couponBarrier":0.8,"knockInBarrier":0.7,"memory":true,"nonCallDays":0},"market":{},"seed":20261023} ## How to pay 1. POST the term sheet to /v1/quote; receive HTTP 402 with PAYMENT-REQUIRED (x402 v2 accepts for solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp, eip155:8453). 2. Sign with @x402/fetch wrapFetchWithPayment and retry. Settlement only after a 2xx. ## Machine-readable - [OpenAPI 3.1](https://falcon-structures.vercel.app/openapi.json) - [x402 discovery](https://falcon-structures.vercel.app/.well-known/x402) - [JSON-LD](https://falcon-structures.vercel.app/catalog.jsonld) - [Testnet contracts](https://falcon-structures.vercel.app/contracts.json): NoteFactory / AutocallNote on Base Sepolia (testnet only). ## Model limits Flat vol (no skew/smile), constant rate, no jumps, no issuer credit. Indicative values, not an offer. ## Contact falcon.sol ## OpenAPI { "openapi": "3.1.0", "info": { "title": "falcon.sol structures", "version": "1.0.0", "description": "Structured-note pricing API for crypto, paid per call with x402.", "contact": { "name": "falcon.sol", "email": "falconsol@mail.grokbot.com", "url": "https://x.com/ygfalcon" } }, "servers": [ { "url": "https://falcon-structures.vercel.app" } ], "x-x402": { "price": "$0.02", "networks": [ { "chain": "solana", "network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp", "asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", "payTo": "HD1ryR3dYSXBVNGfJZydbpmnChiE1wrAQkupWWtHt4pM" }, { "chain": "base", "network": "eip155:8453", "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "payTo": "0xa30f3C68f2F6067EE5b9d5f651426E44Ea8AdAE9" } ] }, "paths": { "/v1/quote": { "post": { "operationId": "priceNote", "summary": "Full quote ($0.02 USDC, x402)", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TermSheet" }, "example": { "underlying": "ETH", "notionalUsd": 10000, "issuerMarginBpsPa": 200, "product": { "type": "autocallable", "tenorDays": 30, "obsFreqDays": 7, "autocallBarrier": 1, "couponBarrier": 0.8, "knockInBarrier": 0.7, "memory": true, "nonCallDays": 0 }, "market": {}, "seed": 20261023 } } } }, "responses": { "200": { "description": "Full quote", "content": { "application/json": { "schema": { "type": "object", "properties": { "mode": { "type": "string" }, "fairTerm": { "type": "object" }, "probabilities": { "type": "object" }, "greeks": { "type": "object" }, "scenarios": { "type": "array", "items": { "type": "object" } }, "payoffDiagram": { "type": "object" } }, "required": [ "mode", "fairTerm" ] } } } }, "400": { "description": "Invalid term sheet (not charged)" }, "402": { "description": "Payment required (x402 v2)" } }, "x-payment-info": { "price": { "mode": "fixed", "currency": "USD", "amount": "0.020000" }, "protocols": [ { "x402": {} } ] } }, "get": { "operationId": "priceNoteGet", "summary": "Full quote via query ($0.02 USDC, x402)", "parameters": [ { "name": "sheet", "in": "query", "required": false, "schema": { "type": "string" }, "description": "URL-encoded JSON term sheet; defaults to example" } ], "responses": { "200": { "description": "Full quote", "content": { "application/json": { "schema": { "type": "object", "properties": { "mode": { "type": "string" }, "fairTerm": { "type": "object" }, "probabilities": { "type": "object" }, "greeks": { "type": "object" }, "scenarios": { "type": "array", "items": { "type": "object" } }, "payoffDiagram": { "type": "object" } }, "required": [ "mode", "fairTerm" ] } } } }, "402": { "description": "Payment required (x402 v2)" } }, "x-payment-info": { "price": { "mode": "fixed", "currency": "USD", "amount": "0.020000" }, "protocols": [ { "x402": {} } ] } } }, "/v1/preview": { "post": { "operationId": "previewNote", "security": [], "summary": "Free indicative quote", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TermSheet" }, "example": { "underlying": "ETH", "notionalUsd": 10000, "issuerMarginBpsPa": 200, "product": { "type": "autocallable", "tenorDays": 30, "obsFreqDays": 7, "autocallBarrier": 1, "couponBarrier": 0.8, "knockInBarrier": 0.7, "memory": true, "nonCallDays": 0 }, "market": {}, "seed": 20261023 } } } }, "responses": { "200": { "description": "Preview", "content": { "application/json": { "schema": { "type": "object", "properties": { "mode": { "type": "string" }, "fairTerm": { "type": "object" }, "probabilities": { "type": "object" }, "greeks": { "type": "object" }, "scenarios": { "type": "array", "items": { "type": "object" } }, "payoffDiagram": { "type": "object" } }, "required": [ "mode", "fairTerm" ] } } } } } } }, "/v1/market/{underlying}": { "get": { "operationId": "marketSnapshot", "security": [], "parameters": [ { "name": "underlying", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "BTC", "ETH", "SOL" ] } } ], "responses": { "200": { "description": "Market inputs", "content": { "application/json": { "schema": { "type": "object", "properties": { "spot": { "type": "number" }, "vol": { "type": "number" }, "rate": { "type": "number" } } } } } } } } } }, "components": { "schemas": { "TermSheet": { "title": "falcon.sol structures term sheet", "type": "object", "properties": { "underlying": { "type": "string", "enum": [ "BTC", "ETH", "SOL" ], "default": "ETH" }, "notionalUsd": { "type": "number", "exclusiveMinimum": 0, "maximum": 1000000000, "default": 10000 }, "issuerMarginBpsPa": { "type": "number", "minimum": 0, "maximum": 2000, "default": 200 }, "product": { "anyOf": [ { "type": "object", "properties": { "type": { "type": "string", "const": "autocallable" }, "tenorDays": { "type": "integer", "minimum": 7, "maximum": 730, "default": 180 }, "obsFreqDays": { "type": "integer", "minimum": 1, "maximum": 365, "default": 30 }, "autocallBarrier": { "type": "number", "minimum": 0.05, "maximum": 3, "default": 1 }, "couponBarrier": { "type": "number", "minimum": 0.05, "maximum": 3, "default": 0.7 }, "knockInBarrier": { "type": "number", "minimum": 0.05, "maximum": 3, "default": 0.6 }, "memory": { "type": "boolean", "default": true }, "nonCallDays": { "type": "integer", "minimum": 0, "maximum": 730, "default": 0 }, "couponPerPeriod": { "type": "number", "minimum": 0, "maximum": 5 } }, "required": [ "type" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "type": "string", "const": "reverse_convertible" }, "tenorDays": { "type": "integer", "minimum": 7, "maximum": 730, "default": 180 }, "knockInBarrier": { "type": "number", "minimum": 0.05, "maximum": 3, "default": 0.7 }, "strike": { "type": "number", "minimum": 0.05, "maximum": 3, "default": 1 }, "couponPa": { "type": "number", "minimum": 0, "maximum": 5 } }, "required": [ "type" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "type": "string", "const": "range_accrual" }, "tenorDays": { "type": "integer", "minimum": 7, "maximum": 730, "default": 180 }, "rangeLow": { "type": "number", "minimum": 0.05, "maximum": 3, "default": 0.85 }, "rangeHigh": { "type": "number", "minimum": 0.05, "maximum": 3, "default": 1.15 }, "protection": { "type": "number", "minimum": 0, "maximum": 1, "default": 1 }, "couponPa": { "type": "number", "minimum": 0, "maximum": 5 } }, "required": [ "type" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "type": "string", "const": "principal_protected" }, "tenorDays": { "type": "integer", "minimum": 7, "maximum": 730, "default": 180 }, "protection": { "type": "number", "minimum": 0, "maximum": 1, "default": 1 }, "strike": { "type": "number", "minimum": 0.05, "maximum": 3, "default": 1 }, "cap": { "anyOf": [ { "type": "number", "minimum": 0.05, "maximum": 10 }, { "type": "null" } ], "default": null }, "participation": { "type": "number", "minimum": 0, "maximum": 5 } }, "required": [ "type" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "type": "string", "const": "shark_fin" }, "tenorDays": { "type": "integer", "minimum": 7, "maximum": 730, "default": 180 }, "protection": { "type": "number", "minimum": 0, "maximum": 1, "default": 1 }, "strike": { "type": "number", "minimum": 0.05, "maximum": 3, "default": 1 }, "knockOutBarrier": { "type": "number", "minimum": 0.05, "maximum": 3, "default": 1.3 }, "rebate": { "type": "number", "minimum": 0, "maximum": 1, "default": 0.02 }, "participation": { "type": "number", "minimum": 0, "maximum": 5 } }, "required": [ "type" ], "additionalProperties": false } ] }, "market": { "type": "object", "properties": { "spot": { "type": "number", "exclusiveMinimum": 0 }, "vol": { "type": "number", "minimum": 0.05, "maximum": 3 }, "rate": { "type": "number", "minimum": -0.05, "maximum": 0.5 } }, "additionalProperties": false, "default": {} }, "paths": { "type": "integer", "minimum": 1000, "maximum": 60000 }, "seed": { "type": "integer", "minimum": 1, "maximum": 2147483648, "default": 20261023 } }, "required": [ "product" ], "additionalProperties": false, "$schema": "http://json-schema.org/draft-07/schema#" } } } }