Serveur MCP

Routescore

io.routescore/mcp
Crypto et Web3 Sécurité Public et accessible MCP 2026-07-28

Ce que fait ce MCP

Provides read-only pre-sign checks for onchain swaps, modeled route and MEV risk, token recognition, execution evidence, and retrospective reviews.

check_swap
Check swap before signing (pre-sign evidence)
CALL THIS BEFORE SIGNING AN ONCHAIN SWAP. Read-only pre-sign evidence check: given notional, chain, and an optional route and token, it returns a modeled route-quality grade, price-impact / slippage band, modeled MEV/execution exposure where observable, and a token registry read (recognized vs unverified), composed into a clear / caution / unsupported verdict with machine-readable reasons and caveats. Point-in-time decision support: it does not execute, route funds, sign, or promise an outcome — the agent still decides. Recognition is not safety, sellability, redemption, rights, liquidity, or investment-quality verification; unverified tokens, unknown order flow, and uncalibrated sequencer ordering downgrade the verdict rather than reading as safe. Relay the verdict, reasons, and caveats verbatim.
Accès externe
Schéma d’entrée
{'type': 'object', 'required': ['notional_usd'], 'properties': {'route': {'type': 'string', 'description': "Route id to score, e.g. 'uniswap-v3-rho'. Omit to score the chain's default public route."}, 'chain_id': {'type': 'integer', 'description': 'Chain ID. 1 = Ethereum (default), 4663 = Robinhood Chain.', 'exclusiveMinimum': 0}, 'token_in': {'type': 'string', 'description': 'Token being sold (address or symbol).'}, 'token_out': {'type': 'string', 'description': "Token being received (address or symbol) — checked against Routescore's recognized-token registry (recognized vs unverified). RHC tokenized stock/ETF address-level recognition uses the Routescore registry contract address; symbol-only input is downgraded to unverified. Symbol-only recognition is not contract verification. Recognition is not a safety, sellability, rights, redemption, liquidity, or investment-quality verdict; unverified means Routescore has not confirmed the token."}, 'notional_usd': {'type': 'number', 'maximum': 1000000000000, 'description': 'Trade size in USD.', 'exclusiveMinimum': 0}, 'slippage_allowance_bps': {'type': 'number', 'maximum': 10000, 'minimum': 0, 'description': 'Slippage allowance in bps. Default 50.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'chain': {'type': ['object', 'null'], 'description': 'Resolved chain (chainId, name, supportLevel), or null.', 'additionalProperties': True}, 'route': {'type': ['object', 'null'], 'description': 'Scored route with modeled grade / quality / leak / slippage fields, or null.', 'additionalProperties': True}, 'trust': {'type': 'object', 'description': 'The full nested trust envelope; additionally carries generated_at and decision_support_only.', 'additionalProperties': True}, 'caveats': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Caveat sentences to relay verbatim.'}, 'reasons': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Stable reason codes; open vocabulary — tolerate unknown codes.'}, 'verdict': {'enum': ['clear', 'caution', 'unsupported'], 'type': 'string', 'description': 'Advisory pre-sign verdict.'}, 'record_id': {'type': ['string', 'null'], 'description': 'Id of the persisted evidence record; null if persistence failed.'}, 'score_state': {'enum': ['valid', 'degraded', 'partial', 'stale', 'unsupported', 'unavailable'], 'type': 'string', 'description': 'Overall state of the response.'}, 'token_safety': {'type': 'object', 'description': 'Registry recognition read: recognized vs unverified, with flags and caveats. Recognition only.', 'additionalProperties': True}, 'market_regime': {'type': 'object', 'description': 'Reference-market open/closed regime evidence (additive).', 'additionalProperties': True}, 'confidence_band': {'type': 'object', 'description': 'Confidence band (low, high, unit, label); low/high are null when not calibrated.', 'additionalProperties': True}, 'reference_price': {'type': 'object', 'description': 'Basis-regime gap-state evidence for tokenized assets (additive).', 'additionalProperties': True}, 'source_freshness': {'type': 'object', 'description': 'Per-source freshness reading (state, checked_at, max_age_seconds, sources[]).', 'additionalProperties': True}, 'evidence_bundle_id': {'type': ['string', 'null'], 'description': 'Id of the evidence bundle; null when not persisted.'}, 'record_output_hash': {'type': ['string', 'null'], 'description': 'sha256:<hex> content hash of the record; null if persistence failed.'}, 'methodology_version': {'type': 'string', 'description': 'Methodology-version string, e.g. routescore.public_api.v1.'}, 'commercial_disclosure': {'type': 'object', 'description': 'No-pay-to-rank disclosure (paid_placement, score_influenced_by_partner, message).', 'additionalProperties': True}}, 'additionalProperties': True}
get_detector_manifest
Get MEV-detector manifest
Fetch the latest public MEV-detector run manifest: the detector version hash and the eligible pool/token universe it was committed to. Use to verify what the detector covers.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'trust': {'type': 'object', 'description': 'The full nested trust envelope; additionally carries generated_at and decision_support_only.', 'additionalProperties': True}, 'caveats': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Caveat sentences to relay verbatim.'}, 'score_state': {'enum': ['valid', 'degraded', 'partial', 'stale', 'unsupported', 'unavailable'], 'type': 'string', 'description': 'Overall state of the response.'}, 'generated_at': {'type': 'string', 'description': 'ISO-8601 generation timestamp.'}, 'confidence_band': {'type': 'object', 'description': 'Confidence band (low, high, unit, label); low/high are null when not calibrated.', 'additionalProperties': True}, 'source_freshness': {'type': 'object', 'description': 'Per-source freshness reading (state, checked_at, max_age_seconds, sources[]).', 'additionalProperties': True}, 'eligible_universe': {'type': 'object', 'description': 'The pinned pool / token universe scanned.', 'additionalProperties': True}, 'methodology_version': {'type': 'string', 'description': 'Methodology-version string, e.g. routescore.public_api.v1.'}, 'commercial_disclosure': {'type': 'object', 'description': 'No-pay-to-rank disclosure (paid_placement, score_influenced_by_partner, message).', 'additionalProperties': True}, 'detector_version_hash': {'type': 'string', 'description': 'SHA-256 of the detector + pricing source.'}}, 'additionalProperties': True}
get_preflight_record
Retrieve pre-sign evidence record
Retrieve the durable evidence record a prior check_swap call persisted — the "record" leg of plan → preflight → execute → record. Fetch one record by the record_id that check_swap returned. Owner-scoped: the configured key only ever sees records belonging to its own account. The record embeds the evaluated check_swap response payload (including its evidence_bundle_id, before the additive record_id / record_output_hash linkage fields) plus a canonical-JSON SHA-256 integrity hash (record_id and recorded_at excluded) so the evidence can be re-verified offline, and includes the stored evidence bundle. Read-only evidence: record creation rejects known execution-material keys (calldata, transaction payloads, signing material) and drops identity-shaped labels from the actor context.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['record_id'], 'properties': {'record_id': {'type': 'string', 'minLength': 1, 'description': 'The record id returned by check_swap (its record_id field).'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'trust': {'type': 'object', 'description': 'The full nested trust envelope; additionally carries generated_at and decision_support_only.', 'additionalProperties': True}, 'record': {'type': 'object', 'description': 'The full routescore.preflight_record.v0 document (schema, record_id, recorded_at, request, actor, policy_ref, response, integrity).', 'additionalProperties': True}, 'caveats': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Caveat sentences to relay verbatim.'}, 'score_state': {'enum': ['valid', 'degraded', 'partial', 'stale', 'unsupported', 'unavailable'], 'type': 'string', 'description': 'Overall state of the response.'}, 'confidence_band': {'type': 'object', 'description': 'Confidence band (low, high, unit, label); low/high are null when not calibrated.', 'additionalProperties': True}, 'evidence_bundle': {'type': ['object', 'null'], 'description': 'The stored evidence bundle, or null when none was captured.', 'additionalProperties': True}, 'source_freshness': {'type': 'object', 'description': 'Per-source freshness reading (state, checked_at, max_age_seconds, sources[]).', 'additionalProperties': True}, 'methodology_version': {'type': 'string', 'description': 'Methodology-version string, e.g. routescore.public_api.v1.'}, 'commercial_disclosure': {'type': 'object', 'description': 'No-pay-to-rank disclosure (paid_placement, score_influenced_by_partner, message).', 'additionalProperties': True}}, 'additionalProperties': True}
quote_bridge_refund
Quote: bridge-failure premium (modeled)
Modeled premium estimate for cross-chain bridge execution failure against a modeled SLA expectation. Returns a modeled premium and conditions — not a live cover, refund, or premium-acceptance offer.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['notional_usd'], 'properties': {'bridge': {'type': 'string', 'description': "Bridge name, e.g. 'across'."}, 'sla_seconds': {'type': 'integer', 'description': 'Expected delivery SLA in seconds. Default 60.', 'exclusiveMinimum': 0}, 'notional_usd': {'type': 'number', 'description': 'Amount bridged in USD.', 'exclusiveMinimum': 0}, 'dest_chain_id': {'type': 'integer', 'description': 'Destination chain ID. Default 8453 (Base).'}, 'source_chain_id': {'type': 'integer', 'description': 'Source chain ID. Default 1.'}, 'bridge_risk_score': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'Bridge risk score 0–1. Default 0.05.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'trust': {'type': 'object', 'description': 'The full nested trust envelope; additionally carries generated_at and decision_support_only.', 'additionalProperties': True}, 'allowed': {'type': 'boolean', 'description': 'Whether the engine produced a modeled quote.'}, 'bond_id': {'type': 'string'}, 'caveats': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Caveat sentences to relay verbatim.'}, 'product': {'type': 'string'}, 'issued_at': {'type': 'string', 'description': 'ISO-8601 issue timestamp.'}, 'conditions': {'type': 'object', 'description': 'Engine-defined conditions.', 'additionalProperties': True}, 'expires_at': {'type': ['string', 'null'], 'description': 'ISO-8601 expiry timestamp, or null.'}, 'margin_bps': {'type': 'number', 'description': 'Modeled margin component in bps.'}, 'premium_bps': {'type': 'number', 'description': 'Modeled premium in bps.'}, 'score_state': {'enum': ['valid', 'degraded', 'partial', 'stale', 'unsupported', 'unavailable'], 'type': 'string', 'description': 'Overall state of the response.'}, 'reason_codes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Stable reason codes.'}, 'confidence_band': {'type': 'object', 'description': 'Confidence band (low, high, unit, label); low/high are null when not calibrated.', 'additionalProperties': True}, 'cvar95_loss_bps': {'type': 'number', 'description': 'Modeled CVaR-95 loss in bps.'}, 'no_quote_reason': {'type': ['string', 'null'], 'description': 'Reason a modeled quote was withheld, or null.'}, 'expected_outcome': {'type': 'object', 'description': 'Engine-defined expected-outcome payload.', 'additionalProperties': True}, 'source_freshness': {'type': 'object', 'description': 'Per-source freshness reading (state, checked_at, max_age_seconds, sources[]).', 'additionalProperties': True}, 'expected_loss_bps': {'type': 'number', 'description': 'Modeled expected loss in bps.'}, 'premium_amount_usd': {'type': 'number', 'description': 'Modeled premium in USD.'}, 'methodology_version': {'type': 'string', 'description': 'Methodology-version string, e.g. routescore.public_api.v1.'}, 'commercial_disclosure': {'type': 'object', 'description': 'No-pay-to-rank disclosure (paid_placement, score_influenced_by_partner, message).', 'additionalProperties': True}}, 'additionalProperties': True}
quote_lrt_slashing
Quote: LRT-slashing premium (modeled)
Modeled premium estimate for slashing risk on a liquid-restaking-token (LRT) position given its AVS exposure. Returns a modeled premium and slashing bounds — not a live cover offer.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['covered_eth_amount'], 'properties': {'lrt_token': {'type': 'string', 'description': "LRT token, e.g. 'weETH'."}, 'covered_eth_amount': {'type': 'number', 'description': 'ETH amount used as the modeled position size.', 'exclusiveMinimum': 0}, 'cover_duration_weeks': {'type': 'integer', 'maximum': 520, 'minimum': 1, 'description': 'Modeled cover duration in weeks. Default 12.'}, 'correlation_max_overlap': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'Max correlation overlap 0–1. Default 0.5.'}, 'underlying_avs_exposure': {'type': 'object', 'description': 'AVS exposure weights, e.g. { "EigenDA": 1.0 }.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'trust': {'type': 'object', 'description': 'The full nested trust envelope; additionally carries generated_at and decision_support_only.', 'additionalProperties': True}, 'allowed': {'type': 'boolean', 'description': 'Whether the engine produced a modeled quote.'}, 'bond_id': {'type': 'string'}, 'caveats': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Caveat sentences to relay verbatim.'}, 'product': {'type': 'string'}, 'issued_at': {'type': 'string', 'description': 'ISO-8601 issue timestamp.'}, 'conditions': {'type': 'object', 'description': 'Engine-defined conditions.', 'additionalProperties': True}, 'expires_at': {'type': ['string', 'null'], 'description': 'ISO-8601 expiry timestamp, or null.'}, 'margin_bps': {'type': 'number', 'description': 'Modeled margin component in bps.'}, 'premium_bps': {'type': 'number', 'description': 'Modeled premium in bps.'}, 'score_state': {'enum': ['valid', 'degraded', 'partial', 'stale', 'unsupported', 'unavailable'], 'type': 'string', 'description': 'Overall state of the response.'}, 'reason_codes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Stable reason codes.'}, 'confidence_band': {'type': 'object', 'description': 'Confidence band (low, high, unit, label); low/high are null when not calibrated.', 'additionalProperties': True}, 'cvar95_loss_bps': {'type': 'number', 'description': 'Modeled CVaR-95 loss in bps.'}, 'no_quote_reason': {'type': ['string', 'null'], 'description': 'Reason a modeled quote was withheld, or null.'}, 'expected_outcome': {'type': 'object', 'description': 'Engine-defined expected-outcome payload.', 'additionalProperties': True}, 'source_freshness': {'type': 'object', 'description': 'Per-source freshness reading (state, checked_at, max_age_seconds, sources[]).', 'additionalProperties': True}, 'expected_loss_bps': {'type': 'number', 'description': 'Modeled expected loss in bps.'}, 'premium_amount_usd': {'type': 'number', 'description': 'Modeled premium in USD.'}, 'methodology_version': {'type': 'string', 'description': 'Methodology-version string, e.g. routescore.public_api.v1.'}, 'commercial_disclosure': {'type': 'object', 'description': 'No-pay-to-rank disclosure (paid_placement, score_influenced_by_partner, message).', 'additionalProperties': True}}, 'additionalProperties': True}
quote_mev_cover
Quote: MEV-sandwich premium (modeled)
Modeled premium estimate for MEV-sandwich exposure on a swap. Returns a modeled premium (bps + USD), expected/CVaR loss, and conditions. Point-in-time decision support before routing a trade — not a live cover, insurance, or premium-acceptance offer.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['notional_usd'], 'properties': {'route': {'type': 'string', 'description': "Execution route, e.g. 'uniswap-v3'."}, 'chain_id': {'type': 'integer', 'description': 'Chain ID (1 = Ethereum). Default 1.'}, 'asset_pair': {'type': 'string', 'description': "Asset pair, e.g. 'USDC/ETH'. Default USDC/ETH."}, 'notional_usd': {'type': 'number', 'description': 'Trade size in USD.', 'exclusiveMinimum': 0}, 'refund_threshold_bps': {'type': 'number', 'description': 'Modeled refund threshold in bps. Default 50.'}, 'slippage_allowance_bps': {'type': 'number', 'description': 'Slippage allowance in bps. Default 50.'}, 'historical_sandwich_freq': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'Historical sandwich frequency as a 0–1 fraction. Default 0.012.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'trust': {'type': 'object', 'description': 'The full nested trust envelope; additionally carries generated_at and decision_support_only.', 'additionalProperties': True}, 'allowed': {'type': 'boolean', 'description': 'Whether the engine produced a modeled quote.'}, 'bond_id': {'type': 'string'}, 'caveats': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Caveat sentences to relay verbatim.'}, 'product': {'type': 'string'}, 'issued_at': {'type': 'string', 'description': 'ISO-8601 issue timestamp.'}, 'conditions': {'type': 'object', 'description': 'Engine-defined conditions.', 'additionalProperties': True}, 'expires_at': {'type': ['string', 'null'], 'description': 'ISO-8601 expiry timestamp, or null.'}, 'margin_bps': {'type': 'number', 'description': 'Modeled margin component in bps.'}, 'premium_bps': {'type': 'number', 'description': 'Modeled premium in bps.'}, 'score_state': {'enum': ['valid', 'degraded', 'partial', 'stale', 'unsupported', 'unavailable'], 'type': 'string', 'description': 'Overall state of the response.'}, 'reason_codes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Stable reason codes.'}, 'confidence_band': {'type': 'object', 'description': 'Confidence band (low, high, unit, label); low/high are null when not calibrated.', 'additionalProperties': True}, 'cvar95_loss_bps': {'type': 'number', 'description': 'Modeled CVaR-95 loss in bps.'}, 'no_quote_reason': {'type': ['string', 'null'], 'description': 'Reason a modeled quote was withheld, or null.'}, 'expected_outcome': {'type': 'object', 'description': 'Engine-defined expected-outcome payload.', 'additionalProperties': True}, 'source_freshness': {'type': 'object', 'description': 'Per-source freshness reading (state, checked_at, max_age_seconds, sources[]).', 'additionalProperties': True}, 'expected_loss_bps': {'type': 'number', 'description': 'Modeled expected loss in bps.'}, 'premium_amount_usd': {'type': 'number', 'description': 'Modeled premium in USD.'}, 'methodology_version': {'type': 'string', 'description': 'Methodology-version string, e.g. routescore.public_api.v1.'}, 'commercial_disclosure': {'type': 'object', 'description': 'No-pay-to-rank disclosure (paid_placement, score_influenced_by_partner, message).', 'additionalProperties': True}}, 'additionalProperties': True}
record_execution
Record immutable execution evidence
Persist 1-100 already-built execution_record.v1 documents as immutable, personal-account post-trade evidence. Requires a stable idempotency_key; an exact replay returns the original result and reuse with different content fails closed. Pro tier, owner-scoped, and bounded by the MCP transport byte limit. This tool never accepts calldata, signing material, routes funds, executes a transaction, applies reviewer overrides, or exposes another tenant. Invalid rows are recorded only as redacted rejection reasons and are never echoed.
Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['idempotency_key', 'records'], 'properties': {'records': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'maxItems': 100, 'minItems': 1, 'description': 'One to 100 complete routescore.execution_record.v1 documents. The MCP argument envelope is additionally capped at 32 KiB.'}, 'idempotency_key': {'type': 'string', 'pattern': '^(?=.*\\S)[^\\u0000-\\u001F\\u007F]+$', 'maxLength': 200, 'minLength': 1, 'description': 'Stable caller key for this exact records array. Reuse it only for an exact retry.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['schema', 'intake_id', 'records', 'rejected', 'summary'], 'properties': {'trust': {'type': 'object', 'description': 'The full nested trust envelope; additionally carries generated_at and decision_support_only.', 'additionalProperties': True}, 'schema': {'type': 'string', 'const': 'routescore.execution_intake_result.v1'}, 'caveats': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Caveat sentences to relay verbatim.'}, 'records': {'type': 'array', 'items': {'type': 'object', 'required': ['index', 'record_id', 'subject_id', 'record_output_hash', 'reused_existing_record'], 'properties': {'index': {'type': 'integer', 'minimum': 0}, 'record_id': {'type': 'string', 'format': 'uuid'}, 'subject_id': {'type': 'string', 'format': 'uuid'}, 'record_output_hash': {'type': 'string', 'pattern': '^sha256:[0-9a-f]{64}$'}, 'reused_existing_record': {'type': 'boolean'}}, 'additionalProperties': False}}, 'summary': {'type': 'object', 'required': ['received', 'accepted', 'rejected'], 'properties': {'accepted': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'received': {'type': 'integer', 'maximum': 100, 'minimum': 1}, 'rejected': {'type': 'integer', 'maximum': 100, 'minimum': 0}}, 'additionalProperties': False}, 'rejected': {'type': 'array', 'items': {'type': 'object', 'required': ['index', 'reason'], 'properties': {'index': {'type': 'integer', 'minimum': 0}, 'reason': {'type': 'string'}}, 'additionalProperties': False}}, 'intake_id': {'type': 'string', 'format': 'uuid'}, 'score_state': {'enum': ['valid', 'degraded', 'partial', 'stale', 'unsupported', 'unavailable'], 'type': 'string', 'description': 'Overall state of the response.'}, 'confidence_band': {'type': 'object', 'description': 'Confidence band (low, high, unit, label); low/high are null when not calibrated.', 'additionalProperties': True}, 'source_freshness': {'type': 'object', 'description': 'Per-source freshness reading (state, checked_at, max_age_seconds, sources[]).', 'additionalProperties': True}, 'methodology_version': {'type': 'string', 'description': 'Methodology-version string, e.g. routescore.public_api.v1.'}, 'commercial_disclosure': {'type': 'object', 'description': 'No-pay-to-rank disclosure (paid_placement, score_influenced_by_partner, message).', 'additionalProperties': True}}, 'additionalProperties': True}
review_execution
Review stored execution evidence
Review one stored execution_record.v1 by record_id. Authenticated and personal-account owner-scoped: another account’s id is indistinguishable from a missing id. Returns the deterministic review_execution.v1 evidence coverage, exceptions, unavailable-evidence register, caveats, and canonical hash. Read-only retrospective decision support only: it does not query arbitrary public transactions, accept reviewer overrides, certify best execution or compliance, give advice, or expose admin actions.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['record_id'], 'properties': {'record_id': {'type': 'string', 'format': 'uuid', 'maxLength': 36, 'minLength': 36, 'description': 'UUID of an execution_record.v1 already stored under the configured key’s personal account.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['review'], 'properties': {'trust': {'type': 'object', 'description': 'The full nested trust envelope; additionally carries generated_at and decision_support_only.', 'additionalProperties': True}, 'review': {'type': 'object', 'required': ['schema', 'version', 'scope', 'input', 'state', 'exception_flags', 'conclusions', 'unavailable_evidence', 'caveats', 'integrity'], 'properties': {'input': {'type': 'object', 'required': ['execution_record_id', 'execution_record_revision', 'execution_record_schema', 'evidence_hash', 'record_output_hash', 'chain_id', 'tx_hash'], 'properties': {'tx_hash': {'type': 'string', 'pattern': '^0x[0-9a-fA-F]{64}$'}, 'chain_id': {'type': 'integer', 'minimum': 1}, 'evidence_hash': {'type': 'string', 'pattern': '^sha256:[0-9a-f]{64}$'}, 'record_output_hash': {'type': 'string', 'pattern': '^sha256:[0-9a-f]{64}$'}, 'execution_record_id': {'type': 'string', 'format': 'uuid'}, 'execution_record_schema': {'type': 'string', 'const': 'routescore.execution_record.v1'}, 'execution_record_revision': {'type': 'integer', 'minimum': 1}}, 'additionalProperties': False}, 'scope': {'type': 'object', 'required': ['kind', 'owner_user_id', 'workspace_id'], 'properties': {'kind': {'type': 'string', 'const': 'user'}, 'workspace_id': {'type': 'null'}, 'owner_user_id': {'type': 'string', 'format': 'uuid'}}, 'description': 'Personal-account scope copied from the owner-scoped record.', 'additionalProperties': False}, 'state': {'enum': ['reviewed', 'incomplete', 'adverse', 'unsupported', 'exception'], 'type': 'string'}, 'schema': {'type': 'string', 'const': 'routescore.review_execution.v1'}, 'caveats': {'type': 'array', 'items': {'type': 'string'}, 'minItems': 1}, 'version': {'type': 'string', 'const': 'review_execution.v1'}, 'integrity': {'type': 'object', 'required': ['hash_algo', 'review_output_hash', 'verification'], 'properties': {'hash_algo': {'type': 'string', 'const': 'sha256'}, 'verification': {'type': 'string'}, 'review_output_hash': {'type': 'string', 'pattern': '^sha256:[0-9a-f]{64}$'}}, 'additionalProperties': False}, 'conclusions': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'status', 'statement', 'evidence', 'details'], 'properties': {'id': {'type': 'string'}, 'status': {'type': 'string'}, 'details': {}, 'evidence': {'type': 'object', 'required': ['evidence_class', 'source_refs', 'input_fields'], 'properties': {'source_refs': {'type': 'array', 'items': {'type': 'string'}}, 'input_fields': {'type': 'array', 'items': {'type': 'string'}, 'minItems': 1}, 'evidence_class': {'enum': ['measured', 'calculated', 'modeled', 'unavailable'], 'type': 'string'}}, 'additionalProperties': False}, 'statement': {'type': 'string'}}, 'additionalProperties': False}, 'maxItems': 10, 'minItems': 10, 'description': 'The fixed v1 coverage register. Every conclusion names its evidence class, source refs, and input fields.'}, 'exception_flags': {'type': 'array', 'items': {'enum': ['receipt_reverted', 'transaction_dropped', 'finality_reorged'], 'type': 'string'}}, 'unavailable_evidence': {'type': 'array', 'items': {'type': 'object', 'required': ['field', 'reason', 'source_refs'], 'properties': {'field': {'type': 'string'}, 'reason': {'type': 'string'}, 'source_refs': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}, 'description': 'Explicit gap register; missing evidence is never inferred or imputed.'}}, 'description': 'Deterministic routescore.review_execution.v1 result. It is retrospective decision support, not advice or a best-execution certification.', 'additionalProperties': False}, 'caveats': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Caveat sentences to relay verbatim.'}, 'score_state': {'enum': ['valid', 'degraded', 'partial', 'stale', 'unsupported', 'unavailable'], 'type': 'string', 'description': 'Overall state of the response.'}, 'confidence_band': {'type': 'object', 'description': 'Confidence band (low, high, unit, label); low/high are null when not calibrated.', 'additionalProperties': True}, 'source_freshness': {'type': 'object', 'description': 'Per-source freshness reading (state, checked_at, max_age_seconds, sources[]).', 'additionalProperties': True}, 'methodology_version': {'type': 'string', 'description': 'Methodology-version string, e.g. routescore.public_api.v1.'}, 'commercial_disclosure': {'type': 'object', 'description': 'No-pay-to-rank disclosure (paid_placement, score_influenced_by_partner, message).', 'additionalProperties': True}}, 'additionalProperties': True}
review_public_transaction
Review public Ethereum transaction
DEV-ONLY CONTRACT DISCOVERY; DISABLED AGAINST PRODUCTION. On an explicitly enabled non-production server, review one arbitrary public Ethereum transaction by transaction hash. This is separate from review_execution: it does not read an owner-scoped stored execution_record.v1 and never exposes tenant, reviewer, override, or administrative fields. Returns the deterministic tenant-free public_transaction_review.v1 coverage register, conclusions, explicit gap register, source provenance, caveats, and canonical hash. Receipt, block, index, and gas facts are measured; gas cost and point-in-time confirmation depth are calculated. Venue is unavailable in this endpoint until a server-owned verified registry adapter exists. Route, amounts, protocol fee, arrival price, feasible-route benchmark, dropped status, and historical reorg remain unavailable unless the public contract can support them. Read-only retrospective decision support only; it does not certify best execution or compliance and does not give advice.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['chain_id', 'tx_hash'], 'properties': {'tx_hash': {'type': 'string', 'pattern': '^0x[0-9a-fA-F]{64}$', 'maxLength': 66, 'minLength': 66, 'description': 'One public Ethereum 32-byte transaction hash.'}, 'chain_id': {'type': 'integer', 'const': 1, 'maximum': 1, 'minimum': 1, 'description': 'Ethereum mainnet chain id. Public transaction review currently accepts only 1.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['review'], 'properties': {'trust': {'type': 'object', 'description': 'The full nested trust envelope; additionally carries generated_at and decision_support_only.', 'additionalProperties': True}, 'review': {'type': 'object', 'required': ['schema', 'version', 'input', 'state', 'exception_flags', 'coverage', 'conclusions', 'gap_register', 'sources', 'caveats', 'integrity'], 'properties': {'input': {'type': 'object', 'required': ['chain_id', 'tx_hash', 'observed_at', 'input_evidence_hash'], 'properties': {'tx_hash': {'type': 'string', 'pattern': '^0x[0-9a-f]{64}$'}, 'chain_id': {'type': 'integer', 'const': 1}, 'observed_at': {'type': 'string', 'format': 'date-time'}, 'input_evidence_hash': {'type': 'string', 'pattern': '^sha256:[0-9a-f]{64}$'}}, 'additionalProperties': False}, 'state': {'enum': ['incomplete', 'exception'], 'type': 'string'}, 'schema': {'type': 'string', 'const': 'routescore.public_transaction_review.v1'}, 'caveats': {'type': 'array', 'items': {'type': 'string'}, 'minItems': 1}, 'sources': {'type': 'array', 'items': {'type': 'object', 'required': ['source_kind', 'source_ref', 'content_hash', 'supports'], 'properties': {'supports': {'type': 'array', 'items': {'type': 'string'}}, 'source_ref': {'type': 'string'}, 'source_kind': {'enum': ['ethereum_receipt', 'ethereum_canonical_head', 'venue_registry_match'], 'type': 'string'}, 'content_hash': {'type': 'string', 'pattern': '^sha256:[0-9a-f]{64}$'}}, 'additionalProperties': False}}, 'version': {'type': 'string', 'const': 'public_transaction_review.v1'}, 'coverage': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'status', 'evidence', 'reason'], 'properties': {'id': {'type': 'string'}, 'reason': {'type': ['string', 'null']}, 'status': {'enum': ['available', 'unavailable'], 'type': 'string'}, 'evidence': {'type': 'object', 'required': ['evidence_class', 'source_refs', 'input_fields'], 'properties': {'source_refs': {'type': 'array', 'items': {'type': 'string'}}, 'input_fields': {'type': 'array', 'items': {'type': 'string'}}, 'evidence_class': {'enum': ['measured', 'calculated', 'unavailable'], 'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'maxItems': 17, 'minItems': 17, 'description': 'Fixed evidence-coverage register; unavailable public facts remain explicit.'}, 'integrity': {'type': 'object', 'required': ['hash_algo', 'review_output_hash', 'verification'], 'properties': {'hash_algo': {'type': 'string', 'const': 'sha256'}, 'verification': {'type': 'string'}, 'review_output_hash': {'type': 'string', 'pattern': '^sha256:[0-9a-f]{64}$'}}, 'additionalProperties': False}, 'conclusions': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'status', 'statement', 'evidence', 'details'], 'properties': {'id': {'type': 'string'}, 'status': {'enum': ['observed', 'calculated', 'pending', 'exception', 'unavailable'], 'type': 'string'}, 'details': {'type': 'object', 'additionalProperties': True}, 'evidence': {'type': 'object', 'required': ['evidence_class', 'source_refs', 'input_fields'], 'properties': {'source_refs': {'type': 'array', 'items': {'type': 'string'}}, 'input_fields': {'type': 'array', 'items': {'type': 'string'}}, 'evidence_class': {'enum': ['measured', 'calculated', 'unavailable'], 'type': 'string'}}, 'additionalProperties': False}, 'statement': {'type': 'string'}}, 'additionalProperties': False}, 'maxItems': 10, 'minItems': 10, 'description': 'Fixed public-review conclusions with evidence class, source refs, input fields, and explicit gaps.'}, 'gap_register': {'type': 'array', 'items': {'type': 'object', 'required': ['field', 'reason', 'source_refs'], 'properties': {'field': {'type': 'string'}, 'reason': {'type': 'string'}, 'source_refs': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}, 'description': 'Unavailable route, amount, fee, price, benchmark, dropped-state, reorg-history, and optional venue evidence.'}, 'exception_flags': {'type': 'array', 'items': {'enum': ['receipt_reverted'], 'type': 'string'}}}, 'description': 'Tenant-free deterministic routescore.public_transaction_review.v1 result from normalized public Ethereum evidence.', 'additionalProperties': False}, 'caveats': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Caveat sentences to relay verbatim.'}, 'score_state': {'enum': ['valid', 'degraded', 'partial', 'stale', 'unsupported', 'unavailable'], 'type': 'string', 'description': 'Overall state of the response.'}, 'confidence_band': {'type': 'object', 'description': 'Confidence band (low, high, unit, label); low/high are null when not calibrated.', 'additionalProperties': True}, 'source_freshness': {'type': 'object', 'description': 'Per-source freshness reading (state, checked_at, max_age_seconds, sources[]).', 'additionalProperties': True}, 'methodology_version': {'type': 'string', 'description': 'Methodology-version string, e.g. routescore.public_api.v1.'}, 'commercial_disclosure': {'type': 'object', 'description': 'No-pay-to-rank disclosure (paid_placement, score_influenced_by_partner, message).', 'additionalProperties': True}}, 'additionalProperties': True}
simulate_scenario
Simulate premium-vs-loss scenario (modeled)
Run a what-if Monte Carlo: model expected premium vs expected refund/loss over a horizon, given assumptions about sandwich frequency, average loss, and deductible. Returns a narrative + distribution.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['notional_usd'], 'properties': {'avg_loss_bps': {'type': 'number', 'minimum': 0, 'description': 'Average sandwich loss in bps. Default 40.'}, 'horizon_days': {'type': 'integer', 'maximum': 365, 'minimum': 1, 'description': 'Horizon in days (≈ swaps). Default 30.'}, 'notional_usd': {'type': 'number', 'description': 'Per-swap notional in USD.', 'exclusiveMinimum': 0}, 'deductible_bps': {'type': 'number', 'minimum': 0, 'description': 'Deductible in bps. Default 100.'}, 'sandwich_freq_pct': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Sandwich frequency as a percentage 0–100. Default 1.2.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'trust': {'type': 'object', 'description': 'The full nested trust envelope; additionally carries generated_at and decision_support_only.', 'additionalProperties': True}, 'caveats': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Caveat sentences to relay verbatim.'}, 'narrative': {'type': 'string', 'description': 'Plain-language summary of the modeled scenario.'}, 'score_state': {'enum': ['valid', 'degraded', 'partial', 'stale', 'unsupported', 'unavailable'], 'type': 'string', 'description': 'Overall state of the response.'}, 'distribution': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'description': 'Loss-distribution histogram bins for charting.'}, 'loss_ratio_pct': {'type': 'number', 'description': 'Modeled loss ratio as a percentage.'}, 'confidence_band': {'type': 'object', 'description': 'Confidence band (low, high, unit, label); low/high are null when not calibrated.', 'additionalProperties': True}, 'source_freshness': {'type': 'object', 'description': 'Per-source freshness reading (state, checked_at, max_age_seconds, sources[]).', 'additionalProperties': True}, 'expected_loss_usd': {'type': 'number', 'description': 'Modeled expected loss in USD over the horizon.'}, 'expected_refund_usd': {'type': 'number', 'description': 'Modeled expected refund in USD over the horizon.'}, 'methodology_version': {'type': 'string', 'description': 'Methodology-version string, e.g. routescore.public_api.v1.'}, 'expected_premium_usd': {'type': 'number', 'description': 'Modeled expected premium in USD over the horizon.'}, 'commercial_disclosure': {'type': 'object', 'description': 'No-pay-to-rank disclosure (paid_placement, score_influenced_by_partner, message).', 'additionalProperties': True}}, 'additionalProperties': True}
whoami
Verify API key & tier
Confirm the configured API key works and report which plan tier it carries. Returns the owning account email and tier.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'tier': {'enum': ['free', 'pro', 'power', 'team', 'dao'], 'type': 'string', 'description': 'The owning account tier.'}, 'email': {'type': 'string', 'description': 'The owning account email.'}, 'trust': {'type': 'object', 'description': 'The full nested trust envelope; additionally carries generated_at and decision_support_only.', 'additionalProperties': True}, 'caveats': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Caveat sentences to relay verbatim.'}, 'score_state': {'enum': ['valid', 'degraded', 'partial', 'stale', 'unsupported', 'unavailable'], 'type': 'string', 'description': 'Overall state of the response.'}, 'authenticated': {'type': 'boolean', 'description': 'True when the key is valid.'}, 'confidence_band': {'type': 'object', 'description': 'Confidence band (low, high, unit, label); low/high are null when not calibrated.', 'additionalProperties': True}, 'source_freshness': {'type': 'object', 'description': 'Per-source freshness reading (state, checked_at, max_age_seconds, sources[]).', 'additionalProperties': True}, 'plan_includes_api': {'type': 'boolean', 'description': 'Back-compat alias for quote_api_enabled.'}, 'quote_api_enabled': {'type': 'boolean', 'description': 'Whether the modeled-quote / scenario tools are available (Power only).'}, 'check_swap_enabled': {'type': 'boolean', 'description': 'Whether the pre-sign check_swap endpoint is available (every tier).'}, 'methodology_version': {'type': 'string', 'description': 'Methodology-version string, e.g. routescore.public_api.v1.'}, 'commercial_disclosure': {'type': 'object', 'description': 'No-pay-to-rank disclosure (paid_placement, score_influenced_by_partner, message).', 'additionalProperties': True}}, 'additionalProperties': True}
Ajouté
simulate_scenario
17 September 2026 12:53
Ajouté
quote_lrt_slashing
17 September 2026 12:53
Ajouté
quote_bridge_refund
17 September 2026 12:53
Ajouté
quote_mev_cover
17 September 2026 12:53
Ajouté
get_detector_manifest
17 September 2026 12:53
Ajouté
whoami
17 September 2026 12:53
Ajouté
review_public_transaction
17 September 2026 12:53
Ajouté
review_execution
17 September 2026 12:53
Ajouté
record_execution
17 September 2026 12:53
Ajouté
get_preflight_record
17 September 2026 12:53
Ajouté
check_swap
17 September 2026 12:53