AssetFare USDC Bridge
Non-custodial USDC bridge and cross-chain swap quotes: Solana to Base; unsigned, never signs/submits
¿Debería usar esto?
Calidad y seguridad
Hallazgos (7)
- LOWen assetfare_v2_new_session_capability
- LOWen assetfare_v2_session_observe_source
- LOWen assetfare_v2_session_observe_output
- LOWen assetfare_v2_session_refresh_action
- LOWen assetfare_prepare_source_action
- LOWen assetfare_verify_source_receipt
- LOWen assetfare_prepare_destination_action
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"assetfare-bridge": {
"url": "https://api.assetfare.dev/mcp/bridge"
}
}
}Puntos de conexión remotos
https://api.assetfare.dev/mcp/bridgestreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (22)
🟢assetfare_status
Read legacy v1 compatibility status and original-corridor safety gates. Use only before the unversioned Solana-SOL-to-Base/Arbitrum-ETH workflow; for every six-chain v2 route use assetfare_v2_capabilities instead. Read-only; makes a network request and never authenticates, signs, submits, or advances a session.
Esquema de entrada
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢assetfare_manifest
Read the Ed25519-signed capability, contract, release, and mainnet-evidence manifest.
Esquema de entrada
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢assetfare_v2_capabilities
Read current non-custodial bridge/swap capabilities, route availability, fee policy, and the no-sign/no-submit boundary for 76 routes across six chains and eleven endpoints. Use before assetfare_v2_quote for a new v2 evaluation; do not use legacy assetfare_status to decide v2 availability. Read-only; makes a network request and creates no wallet login, session, or action.
Esquema de entrada
{
"type": "object",
"properties": {},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢assetfare_v2_quote(from_chain, from_token, to_chain, to_token, amount_usd)
Get one fresh read-only AssetFare bridge/swap quote for a selected v2 route, including total token-path cost, live availability, and an unsigned-action handoff. Use for every new six-chain evaluation after assetfare_v2_capabilities; use legacy assetfare_quote only for the unversioned Solana-SOL-to-Base/Arbitrum-ETH workflow. AssetFare charges 1bp plus Circle/provider/network fees. This call makes a network request but never authenticates, creates a session, prepares an action, signs, or submits.
Esquema de entrada
{
"type": "object",
"properties": {
"from_chain": {
"type": "string",
"enum": [
"solana",
"base",
"arbitrum",
"robinhood",
"polygon",
"optimism"
],
"description": "Source chain for the v2 route. Polygon and Optimism are source-only and cannot be used as to_chain."
},
"from_token": {
"type": "string",
"enum": [
"SOL",
"ETH",
"USDC",
"USDG"
],
"description": "Input token symbol on from_chain. The chain-token pair must appear in current v2 capabilities."
},
"to_chain": {
"type": "string",
"enum": [
"solana",
"base",
"arbitrum",
"robinhood"
],
"description": "Destination chain for the v2 route: Solana, Base, Arbitrum, or Robinhood Chain. Polygon and Optimism are not destinations."
},
"to_token": {
"type": "string",
"enum": [
"SOL",
"ETH",
"USDC",
"USDG"
],
"description": "Output token symbol on to_chain. The chain-token pair must appear in current v2 capabilities."
},
"amount_usd": {
"type": "number",
"minimum": 1,
"description": "Requested input value in USD, minimum 1. Obtain a fresh quote because availability, fees, and receive amounts can change."
}
},
"required": [
"from_chain",
"from_token",
"to_chain",
"to_token",
"amount_usd"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢assetfare_v2_new_session_capability
Generate one caller-owned 256-bit session capability for the receipt-driven v2 workflow. Use immediately before assetfare_v2_session_create and reuse it only for that session's get/observe/refresh calls; do not use it with legacy tools or create one for the one-shot assetfare_v2_prepare path. Local-only and non-idempotent: makes no network call or server-side change. The token is a sensitive bearer capability, never a private key.
Esquema de entrada
{
"type": "object",
"properties": {},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"session_token": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{43}$",
"description": "New 256-bit, URL-safe caller-owned bearer capability. Treat as sensitive and never log, share, or persist it in plaintext."
},
"token_bits": {
"type": "number",
"const": 256,
"description": "Entropy size of the generated CSPRNG token in bits."
},
"token_length": {
"type": "number",
"const": 43,
"description": "Length of the unpadded base64url token in characters."
},
"sensitivity": {
"type": "string",
"const": "sensitive_capability",
"description": "Classification showing that the token is a sensitive bearer capability."
},
"is_private_key": {
"type": "boolean",
"const": false,
"description": "Always false: this capability is not a wallet private key and cannot sign transactions."
},
"usage": {
"type": "string",
"minLength": 1,
"description": "Handling and tool-use instructions for the capability."
},
"server_signing": {
"type": "boolean",
"const": false,
"description": "Always false: AssetFare never signs caller transactions."
},
"server_submission": {
"type": "boolean",
"const": false,
"description": "Always false: AssetFare never submits caller transactions."
}
},
"required": [
"session_token",
"token_bits",
"token_length",
"sensitivity",
"is_private_key",
"usage",
"server_signing",
"server_submission"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡assetfare_v2_prepare(caller_approved, from_chain, from_token, to_chain, to_token, ...)
Prepare one caller-approved, one-shot first unsigned action for a v2 route that a fresh quote reports available. Use for preview or manual first-action handling; for a receipt-driven multi-step workflow use assetfare_v2_new_session_capability then assetfare_v2_session_create instead, and never call both modes for one transfer. Solana-CCTP routes require only a fresh caller-owned event signer public key. Makes a network request and prepares an action, but AssetFare never receives private keys, signs, or submits.
Esquema de entrada
{
"type": "object",
"properties": {
"caller_approved": {
"type": "boolean",
"const": true,
"description": "Explicit confirmation that the caller approved this state-changing preparation or session creation. A quote alone is not approval."
},
"from_chain": {
"type": "string",
"enum": [
"solana",
"base",
"arbitrum",
"robinhood",
"polygon",
"optimism"
],
"description": "Source chain for the v2 route. Polygon and Optimism are source-only and cannot be used as to_chain."
},
"from_token": {
"type": "string",
"enum": [
"SOL",
"ETH",
"USDC",
"USDG"
],
"description": "Input token symbol on from_chain. The chain-token pair must appear in current v2 capabilities."
},
"to_chain": {
"type": "string",
"enum": [
"solana",
"base",
"arbitrum",
"robinhood"
],
"description": "Destination chain for the v2 route: Solana, Base, Arbitrum, or Robinhood Chain. Polygon and Optimism are not destinations."
},
"to_token": {
"type": "string",
"enum": [
"SOL",
"ETH",
"USDC",
"USDG"
],
"description": "Output token symbol on to_chain. The chain-token pair must appear in current v2 capabilities."
},
"amount_usd": {
"type": "number",
"minimum": 1,
"description": "Requested input value in USD, minimum 1. Obtain a fresh quote because availability, fees, and receive amounts can change."
},
"wallets": {
"type": "object",
"additionalProperties": {
"type": "string",
"description": "Caller-owned public wallet address: 0x plus 40 hex characters for EVM, or 32-44 base58 characters for Solana. Never provide secret key material."
},
"propertyNames": {
"enum": [
"solana",
"base",
"arbitrum",
"robinhood",
"polygon",
"optimism"
]
},
"description": "Map each chain needed by this route to the caller's public wallet address. Include public addresses only; one to six entries, never private keys or seed phrases."
},
"event_signer_public": {
"$ref": "#/properties/wallets/additionalProperties",
"description": "Solana CCTP only: caller-generated ephemeral public key. Keep the matching private key client-side and use it to co-sign the returned unsigned event-account transaction; never send the private key."
}
},
"required": [
"caller_approved",
"from_chain",
"from_token",
"to_chain",
"to_token",
"amount_usd",
"wallets"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡assetfare_v2_session_create(caller_approved, from_chain, from_token, to_chain, to_token, ...)
Create one caller-approved, receipt-driven v2 workflow session and return its current unsigned action. Use for multi-step execution after a fresh available quote; for a one-shot preview/manual first action use assetfare_v2_prepare instead, and never start both modes for one transfer. Requires a locally generated session capability token, exact public-wallet map, idempotency key, and on Solana-CCTP routes an event signer public key. Makes a network request and creates session state, but never signs or submits.
Esquema de entrada
{
"type": "object",
"properties": {
"caller_approved": {
"type": "boolean",
"const": true,
"description": "Explicit confirmation that the caller approved this state-changing preparation or session creation. A quote alone is not approval."
},
"from_chain": {
"type": "string",
"enum": [
"solana",
"base",
"arbitrum",
"robinhood",
"polygon",
"optimism"
],
"description": "Source chain for the v2 route. Polygon and Optimism are source-only and cannot be used as to_chain."
},
"from_token": {
"type": "string",
"enum": [
"SOL",
"ETH",
"USDC",
"USDG"
],
"description": "Input token symbol on from_chain. The chain-token pair must appear in current v2 capabilities."
},
"to_chain": {
"type": "string",
"enum": [
"solana",
"base",
"arbitrum",
"robinhood"
],
"description": "Destination chain for the v2 route: Solana, Base, Arbitrum, or Robinhood Chain. Polygon and Optimism are not destinations."
},
"to_token": {
"type": "string",
"enum": [
"SOL",
"ETH",
"USDC",
"USDG"
],
"description": "Output token symbol on to_chain. The chain-token pair must appear in current v2 capabilities."
},
"amount_usd": {
"type": "number",
"minimum": 1,
"description": "Requested input value in USD, minimum 1. Obtain a fresh quote because availability, fees, and receive amounts can change."
},
"wallets": {
"type": "object",
"additionalProperties": {
"type": "string",
"description": "Caller-owned public wallet address: 0x plus 40 hex characters for EVM, or 32-44 base58 characters for Solana. Never provide secret key material."
},
"propertyNames": {
"enum": [
"solana",
"base",
"arbitrum",
"robinhood",
"polygon",
"optimism"
]
},
"description": "Map each chain needed by this route to the caller's public wallet address. Include public addresses only; one to six entries, never private keys or seed phrases."
},
"event_signer_public": {
"$ref": "#/properties/wallets/additionalProperties",
"description": "Solana CCTP only: caller-generated ephemeral public key. Keep the matching private key client-side and use it to co-sign the returned unsigned event-account transaction; never send the private key."
},
"session_token": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{43,128}$",
"description": "Sensitive caller-owned v2 session capability from assetfare_v2_new_session_capability, 43-128 URL-safe characters. Never log it, and never substitute a private key or legacy access token."
},
"idempotency_key": {
"type": "string",
"minLength": 8,
"maxLength": 128,
"description": "Caller-generated retry key, 8-128 characters. Reuse it only when retrying the same logical mutation; choose a new key for a new operation."
}
},
"required": [
"caller_approved",
"from_chain",
"from_token",
"to_chain",
"to_token",
"amount_usd",
"wallets",
"session_token",
"idempotency_key"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢assetfare_v2_session_get(session_token, session_id)
Read a v2 session's current workflow state and unsigned action using its caller-owned capability token. Use to resume or inspect an existing v2 session; do not use legacy assetfare_read_session or use this call to report a new receipt. Read-only and makes a network request; never advances the workflow, signs, or submits.
Esquema de entrada
{
"type": "object",
"properties": {
"session_token": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{43,128}$",
"description": "Sensitive caller-owned v2 session capability from assetfare_v2_new_session_capability, 43-128 URL-safe characters. Never log it, and never substitute a private key or legacy access token."
},
"session_id": {
"type": "string",
"format": "uuid",
"description": "V2 workflow session UUID returned by assetfare_v2_session_create. Use only with assetfare_v2_session_* tools; do not pass a legacy session ID."
}
},
"required": [
"session_token",
"session_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢assetfare_v2_session_observe_source(session_token, session_id, idempotency_key, transaction_hashes)
Record already-submitted source transaction hashes for an existing v2 session and advance its server-side workflow state. Use only after the caller independently submitted the current source action; use assetfare_v2_session_get for inspection without advancement and never pass unsigned or unsubmitted hashes. Requires the session capability and an idempotency key; makes a network request but never signs or submits.
Esquema de entrada
{
"type": "object",
"properties": {
"session_token": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{43,128}$",
"description": "Sensitive caller-owned v2 session capability from assetfare_v2_new_session_capability, 43-128 URL-safe characters. Never log it, and never substitute a private key or legacy access token."
},
"session_id": {
"type": "string",
"format": "uuid",
"description": "V2 workflow session UUID returned by assetfare_v2_session_create. Use only with assetfare_v2_session_* tools; do not pass a legacy session ID."
},
"idempotency_key": {
"type": "string",
"minLength": 8,
"maxLength": 128,
"description": "Caller-generated retry key, 8-128 characters. Reuse it only when retrying the same logical mutation; choose a new key for a new operation."
},
"transaction_hashes": {
"type": "array",
"items": {
"type": "string",
"minLength": 16,
"maxLength": 128
},
"minItems": 1,
"maxItems": 8,
"description": "One to eight hashes for source transactions the caller already signed and submitted. Do not provide unsigned payloads or destination hashes."
}
},
"required": [
"session_token",
"session_id",
"idempotency_key",
"transaction_hashes"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢assetfare_v2_session_observe_output(session_token, session_id, idempotency_key, transaction_hash)
Record an already-produced bridge or destination output for an existing v2 session and advance its server-side workflow state. Use only after the caller or provider produced the expected output; use assetfare_v2_session_get for read-only inspection and assetfare_v2_session_observe_source for source hashes. Requires the session capability and an idempotency key; makes a network request but never signs or submits.
Esquema de entrada
{
"type": "object",
"properties": {
"session_token": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{43,128}$",
"description": "Sensitive caller-owned v2 session capability from assetfare_v2_new_session_capability, 43-128 URL-safe characters. Never log it, and never substitute a private key or legacy access token."
},
"session_id": {
"type": "string",
"format": "uuid",
"description": "V2 workflow session UUID returned by assetfare_v2_session_create. Use only with assetfare_v2_session_* tools; do not pass a legacy session ID."
},
"idempotency_key": {
"type": "string",
"minLength": 8,
"maxLength": 128,
"description": "Caller-generated retry key, 8-128 characters. Reuse it only when retrying the same logical mutation; choose a new key for a new operation."
},
"transaction_hash": {
"type": "string",
"minLength": 16,
"maxLength": 128,
"description": "Optional bridge or destination transaction hash already produced outside AssetFare. Omit only when the provider output can be observed without a hash."
}
},
"required": [
"session_token",
"session_id",
"idempotency_key"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢assetfare_v2_session_refresh_action(session_token, session_id, idempotency_key)
Replace an expired, still-unsubmitted unsigned action in an existing v2 session with a fresh quote-bound action. Use only before the caller submits the expired action; use assetfare_v2_session_get when the current action is still valid and never refresh an already-submitted step. Requires the session capability and an idempotency key; advances session state but never signs or submits.
Esquema de entrada
{
"type": "object",
"properties": {
"session_token": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{43,128}$",
"description": "Sensitive caller-owned v2 session capability from assetfare_v2_new_session_capability, 43-128 URL-safe characters. Never log it, and never substitute a private key or legacy access token."
},
"session_id": {
"type": "string",
"format": "uuid",
"description": "V2 workflow session UUID returned by assetfare_v2_session_create. Use only with assetfare_v2_session_* tools; do not pass a legacy session ID."
},
"idempotency_key": {
"type": "string",
"minLength": 8,
"maxLength": 128,
"description": "Caller-generated retry key, 8-128 characters. Reuse it only when retrying the same logical mutation; choose a new key for a new operation."
}
},
"required": [
"session_token",
"session_id",
"idempotency_key"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢assetfare_quote(amount_usd, destination_chain)
Legacy v1 original-corridor quote: get Solana SOL to Base or Arbitrum ETH pricing. Use only with the unversioned legacy wallet-auth/session tools; for every new or six-chain evaluation use assetfare_v2_quote instead. Read-only; makes a network request and never authenticates, creates a session, prepares an action, signs, or submits.
Esquema de entrada
{
"type": "object",
"properties": {
"amount_usd": {
"type": "integer",
"minimum": 1,
"description": "Whole-dollar input value for the legacy Solana SOL route, minimum 1. Use assetfare_v2_quote for fractional amounts or any v2 route."
},
"destination_chain": {
"type": "string",
"enum": [
"base",
"arbitrum"
],
"default": "base",
"description": "Legacy destination chain for SOL-to-ETH only: base or arbitrum. Use a v2 route tool for any other destination or token."
}
},
"required": [
"amount_usd"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡assetfare_start_wallet_auth(source_wallet)
Create a short-lived, non-transactional Solana signMessage challenge for the legacy v1 workflow. Use only after selecting a fresh legacy assetfare_quote and obtaining caller approval; v2 quote and session tools do not use wallet authentication. Makes a network request and creates login-challenge state, but cannot move funds, sign, or submit.
Esquema de entrada
{
"type": "object",
"properties": {
"source_wallet": {
"type": "string",
"minLength": 32,
"maxLength": 64,
"description": "Caller-owned Solana public wallet address for the legacy v1 source. Public address only; never provide a seed phrase or private key."
}
},
"required": [
"source_wallet"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪assetfare_finish_wallet_auth(challenge_id, source_wallet, signature, terms_version)
Verify the caller's signature over the exact legacy login challenge and return a sensitive wallet-bound access token. Use only after assetfare_start_wallet_auth; do not use for a v2 session, transaction signature, or arbitrary message. Makes a network request and consumes login-challenge state, but never signs or submits.
Esquema de entrada
{
"type": "object",
"properties": {
"challenge_id": {
"type": "string",
"format": "uuid",
"description": "Short-lived legacy wallet-login challenge UUID returned by assetfare_start_wallet_auth."
},
"source_wallet": {
"type": "string",
"minLength": 32,
"maxLength": 64,
"description": "Caller-owned Solana public wallet address for the legacy v1 source. Public address only; never provide a seed phrase or private key."
},
"signature": {
"type": "string",
"minLength": 64,
"maxLength": 128,
"description": "Caller-produced Solana signature for the exact indicated legacy message or transaction. Never provide a seed phrase, private key, or signed transaction payload."
},
"terms_version": {
"type": "string",
"minLength": 1,
"maxLength": 160,
"description": "Exact terms version supplied in the legacy wallet-login challenge; copy it unchanged from that challenge."
}
},
"required": [
"challenge_id",
"source_wallet",
"signature",
"terms_version"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡assetfare_create_session(access_token, quote_id, idempotency_key, source_wallet, destination_wallet)
Lock one fresh legacy assetfare_quote into a wallet-bound v1 execution session. Use only after legacy wallet authentication for the original Solana-SOL-to-Base/Arbitrum-ETH workflow; for a v2 quote use assetfare_v2_session_create instead. Makes a network request and reserves the caller's one active legacy session slot, but creates no blockchain transaction and never signs or submits.
Esquema de entrada
{
"type": "object",
"properties": {
"access_token": {
"type": "string",
"minLength": 20,
"maxLength": 512,
"description": "Sensitive legacy v1 wallet-bound bearer token returned by assetfare_finish_wallet_auth. Use only with unversioned legacy session tools; never log or use it as a v2 session capability."
},
"quote_id": {
"type": "string",
"format": "uuid",
"description": "Fresh legacy v1 quote UUID returned by assetfare_quote. A v2 quote ID is invalid here."
},
"idempotency_key": {
"type": "string",
"minLength": 8,
"maxLength": 128,
"description": "Caller-generated retry key, 8-128 characters. Reuse it only when retrying the same logical mutation; choose a new key for a new operation."
},
"source_wallet": {
"type": "string",
"minLength": 32,
"maxLength": 64,
"description": "Caller-owned Solana public wallet address for the legacy v1 source. Public address only; never provide a seed phrase or private key."
},
"destination_wallet": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "Caller-owned Base or Arbitrum EVM destination address as 0x plus 40 hex characters. Public address only; never provide a private key."
}
},
"required": [
"access_token",
"quote_id",
"idempotency_key",
"source_wallet",
"destination_wallet"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢assetfare_read_session(access_token, session_id, view)
Read a legacy v1 session summary, workflow state, receipt, or current unsigned action. Use to inspect or resume a session created by assetfare_create_session; for a v2 session use assetfare_v2_session_get instead and do not use this call to advance state. Read-only and makes a network request; never signs or submits.
Esquema de entrada
{
"type": "object",
"properties": {
"access_token": {
"type": "string",
"minLength": 20,
"maxLength": 512,
"description": "Sensitive legacy v1 wallet-bound bearer token returned by assetfare_finish_wallet_auth. Use only with unversioned legacy session tools; never log or use it as a v2 session capability."
},
"session_id": {
"type": "string",
"format": "uuid",
"description": "Legacy v1 session UUID returned by assetfare_create_session. Use only with the unversioned legacy workflow; do not pass a v2 session ID."
},
"view": {
"type": "string",
"enum": [
"session",
"workflow",
"receipt",
"next_action"
],
"default": "session",
"description": "Legacy read projection: session summary, workflow state, receipt, or next_action. This selection never advances the workflow."
}
},
"required": [
"access_token",
"session_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡assetfare_prepare_source_action(access_token, session_id)
Prepare the bounded unsigned Solana source action for the current legacy v1 session step. Use only after assetfare_create_session and explicit caller approval; for a v2 route use assetfare_v2_prepare or assetfare_v2_session_create instead. Makes a network request and advances preparation state, but never signs or submits.
Esquema de entrada
{
"type": "object",
"properties": {
"access_token": {
"type": "string",
"minLength": 20,
"maxLength": 512,
"description": "Sensitive legacy v1 wallet-bound bearer token returned by assetfare_finish_wallet_auth. Use only with unversioned legacy session tools; never log or use it as a v2 session capability."
},
"session_id": {
"type": "string",
"format": "uuid",
"description": "Legacy v1 session UUID returned by assetfare_create_session. Use only with the unversioned legacy workflow; do not pass a v2 session ID."
}
},
"required": [
"access_token",
"session_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪assetfare_verify_source_receipt(access_token, session_id, signature, idempotency_key)
Verify a finalized Solana source signature already submitted by the caller and advance the legacy v1 workflow. Use only after the caller independently submits assetfare_prepare_source_action; for a v2 session use assetfare_v2_session_observe_source instead. Requires caller approval and makes a network request, but never signs or submits.
Esquema de entrada
{
"type": "object",
"properties": {
"access_token": {
"type": "string",
"minLength": 20,
"maxLength": 512,
"description": "Sensitive legacy v1 wallet-bound bearer token returned by assetfare_finish_wallet_auth. Use only with unversioned legacy session tools; never log or use it as a v2 session capability."
},
"session_id": {
"type": "string",
"format": "uuid",
"description": "Legacy v1 session UUID returned by assetfare_create_session. Use only with the unversioned legacy workflow; do not pass a v2 session ID."
},
"signature": {
"type": "string",
"minLength": 64,
"maxLength": 128,
"description": "Caller-produced Solana signature for the exact indicated legacy message or transaction. Never provide a seed phrase, private key, or signed transaction payload."
},
"idempotency_key": {
"type": "string",
"minLength": 8,
"maxLength": 128,
"description": "Caller-generated retry key, 8-128 characters. Reuse it only when retrying the same logical mutation; choose a new key for a new operation."
}
},
"required": [
"access_token",
"session_id",
"signature",
"idempotency_key"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡assetfare_prepare_cctp_action(access_token, session_id, event_signer_public, idempotency_key)
Prepare the unsigned CCTP burn for the current legacy v1 session using a caller-owned event signer public key. Use only when the legacy workflow reports this as the next action; for v2 routes use assetfare_v2_prepare or assetfare_v2_session_create instead. Requires caller approval and advances preparation state, but never receives the event signer private key, signs, or submits.
Esquema de entrada
{
"type": "object",
"properties": {
"access_token": {
"type": "string",
"minLength": 20,
"maxLength": 512,
"description": "Sensitive legacy v1 wallet-bound bearer token returned by assetfare_finish_wallet_auth. Use only with unversioned legacy session tools; never log or use it as a v2 session capability."
},
"session_id": {
"type": "string",
"format": "uuid",
"description": "Legacy v1 session UUID returned by assetfare_create_session. Use only with the unversioned legacy workflow; do not pass a v2 session ID."
},
"event_signer_public": {
"type": "string",
"minLength": 32,
"maxLength": 64,
"description": "Fresh caller-generated ephemeral Solana event signer public key for the legacy CCTP burn. Keep the matching private key client-side; never send it."
},
"idempotency_key": {
"type": "string",
"minLength": 8,
"maxLength": 128,
"description": "Caller-generated retry key, 8-128 characters. Reuse it only when retrying the same logical mutation; choose a new key for a new operation."
}
},
"required": [
"access_token",
"session_id",
"event_signer_public",
"idempotency_key"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢assetfare_observe_cctp(access_token, session_id, burn_signature, idempotency_key)
Verify Circle attestation and the forwarded Base or Arbitrum USDC mint for a caller-submitted legacy v1 burn, then advance the session record. Use only after the CCTP burn is submitted; use assetfare_read_session for inspection without advancement and a v2 session observe tool for v2 routes. Makes a network request but never signs or submits.
Esquema de entrada
{
"type": "object",
"properties": {
"access_token": {
"type": "string",
"minLength": 20,
"maxLength": 512,
"description": "Sensitive legacy v1 wallet-bound bearer token returned by assetfare_finish_wallet_auth. Use only with unversioned legacy session tools; never log or use it as a v2 session capability."
},
"session_id": {
"type": "string",
"format": "uuid",
"description": "Legacy v1 session UUID returned by assetfare_create_session. Use only with the unversioned legacy workflow; do not pass a v2 session ID."
},
"burn_signature": {
"type": "string",
"minLength": 64,
"maxLength": 128,
"description": "Finalized Solana burn signature already submitted by the caller for this legacy CCTP step."
},
"idempotency_key": {
"type": "string",
"minLength": 8,
"maxLength": 128,
"description": "Caller-generated retry key, 8-128 characters. Reuse it only when retrying the same logical mutation; choose a new key for a new operation."
}
},
"required": [
"access_token",
"session_id",
"burn_signature",
"idempotency_key"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪assetfare_prepare_destination_action(access_token, session_id, idempotency_key)
Prepare the exact-cap permit and unsigned ERC-4337 destination settlement plan for the current legacy v1 session. Use only when the legacy workflow reports the destination step and after caller approval; v2 sessions expose their current action through assetfare_v2_session_get. Makes a network request and advances preparation state, but never signs or submits.
Esquema de entrada
{
"type": "object",
"properties": {
"access_token": {
"type": "string",
"minLength": 20,
"maxLength": 512,
"description": "Sensitive legacy v1 wallet-bound bearer token returned by assetfare_finish_wallet_auth. Use only with unversioned legacy session tools; never log or use it as a v2 session capability."
},
"session_id": {
"type": "string",
"format": "uuid",
"description": "Legacy v1 session UUID returned by assetfare_create_session. Use only with the unversioned legacy workflow; do not pass a v2 session ID."
},
"idempotency_key": {
"type": "string",
"minLength": 8,
"maxLength": 128,
"description": "Caller-generated retry key, 8-128 characters. Reuse it only when retrying the same logical mutation; choose a new key for a new operation."
}
},
"required": [
"access_token",
"session_id",
"idempotency_key"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪assetfare_observe_destination(access_token, session_id, transaction_hash, idempotency_key)
Verify an already-submitted destination UserOperation receipt and finalize the legacy v1 workflow record. Use only after the caller independently submits assetfare_prepare_destination_action; for v2 output observation use assetfare_v2_session_observe_output instead. Makes a network request and advances session state, but never signs or submits.
Esquema de entrada
{
"type": "object",
"properties": {
"access_token": {
"type": "string",
"minLength": 20,
"maxLength": 512,
"description": "Sensitive legacy v1 wallet-bound bearer token returned by assetfare_finish_wallet_auth. Use only with unversioned legacy session tools; never log or use it as a v2 session capability."
},
"session_id": {
"type": "string",
"format": "uuid",
"description": "Legacy v1 session UUID returned by assetfare_create_session. Use only with the unversioned legacy workflow; do not pass a v2 session ID."
},
"transaction_hash": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{64}$",
"description": "Destination EVM transaction hash already submitted by the caller, formatted as 0x plus 64 hex characters."
},
"idempotency_key": {
"type": "string",
"minLength": 8,
"maxLength": 128,
"description": "Caller-generated retry key, 8-128 characters. Reuse it only when retrying the same logical mutation; choose a new key for a new operation."
}
},
"required": [
"access_token",
"session_id",
"transaction_hash",
"idempotency_key"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Comunidad
Evidencia