{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_494fs8yjmfwv","handle":"assetfare","url":"https://wellknown.network/agents/assetfare","links":{"self":"https://wellknown.network/agents/assetfare/record.json","html":"https://wellknown.network/agents/assetfare","markdown":"https://wellknown.network/agents/assetfare/record.md","api":"https://wellknown.network/api/v1/agents/assetfare","status":"https://wellknown.network/api/v1/agents/assetfare/status","claim":"https://wellknown.network/agents/assetfare/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/assetfare/claim.json","badge":"https://wellknown.network/agents/assetfare/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/assetfare/history","tools":"https://wellknown.network/api/v1/agents/assetfare/tools"},"ard":{"identifier":"urn:air:api.assetfare.dev:server:assetfare","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"AssetFare","summary":"Non-custodial cross-chain bridge quotes for agents: Solana to Base USDC; unsigned txs, never signs","description":"Non-custodial cross-chain bridge quotes for agents: Solana to Base USDC; unsigned txs, never signs","publisher":{"name":"odaiin","url":null},"homepage":null,"repository":"https://github.com/odaiin/assetfare-mcp","version":"0.4.11","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://api.assetfare.dev/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-09-23T08:42:20.323827Z","publishedAt":"2026-09-23T08:42:20.323827Z","registryName":"io.github.odaiin/assetfare"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"commerce.pricing","name":"Pricing & Quotes","confidence":0.859,"provenance":"derived"},{"slug":"documents.contracts","name":"Contracts & Legal","confidence":0.525,"provenance":"derived"},{"slug":"content.writing","name":"Writing & Editing","confidence":0.51,"provenance":"derived"}],"categories":["commerce","content","documents"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 4h ago.","lastOkAt":"2026-10-09T21:27:38.981Z","lastProbedAt":"2026-10-09T21:27:38.981Z","statusComputedAt":"2026-10-09T21:28:13.772Z","reliability30d":{"probes":92,"successRate":1,"p50Ms":245,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":92,"ok":92,"authBoundaryOk":0,"serviceOk":92,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-09T21:27:38.981Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":237,"error":null,"detail":{"tools":[{"name":"assetfare_manifest","description":"Read the Ed25519-signed release manifest and safety-bundle binding before preparing an action. Example: call this once to verify the current release and contrac"},{"name":"assetfare_v2_capabilities","description":"Read all 100 technically available routes, live provider readiness, route-specific guidance, direct_route_summary, and continuation_v3 contracts before quoting."},{"name":"assetfare_v2_quote","description":"Get one fresh AssetFare quote with amount-specific economic_guidance, direct_route_summary, continuation_v3, and unsigned_prepare_requirements. Example: quote S"},{"name":"assetfare_v2_prepare","description":"Return one deeply verified first unsigned bundle and caller-wallet handoff. Example: pass caller_approved=true, a one_shot approval_v3, and the quote-bound veri"},{"name":"assetfare_v2_session_create","description":"Create one receipt-driven workflow. Example: pass caller_approved=true, a session approval_v3, its idempotency_key, a caller-local session token, and the quote-"},{"name":"assetfare_v2_session_get","description":"Read an existing v2 workflow without advancing it. Example: pass session_id, session_token, and the original verification_context after restart. The adapter dee"},{"name":"assetfare_v2_session_observe_source","description":"Record source hashes the caller already signed and submitted, then advance the workflow. Example: pass one finalized source hash, a new idempotency key, and the"},{"name":"assetfare_v2_session_observe_output","description":"Record an already-produced bridge or destination output, then advance the workflow. Example: pass the output hash, a new idempotency key, and the original verif"},{"name":"assetfare_v2_session_refresh_action","description":"Refresh an expired action only while it remains unsubmitted. Example: pass the existing session, a new idempotency key, and the original verification_context. T"}],"toolCount":9,"toolsHash":"83ccb239950ad49c1a15a9694b619eba8cbb13ed22d81d6311b250d7a95c5a87","serverName":"AssetFare","capabilities":["tools"],"serverVersion":"1.17.1","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T15:32:39.083Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":345,"error":null,"detail":{"tools":[{"name":"assetfare_manifest","description":"Read the Ed25519-signed release manifest and safety-bundle binding before preparing an action. Example: call this once to verify the current release and contrac"},{"name":"assetfare_v2_capabilities","description":"Read all 100 technically available routes, live provider readiness, route-specific guidance, direct_route_summary, and continuation_v3 contracts before quoting."},{"name":"assetfare_v2_quote","description":"Get one fresh AssetFare quote with amount-specific economic_guidance, direct_route_summary, continuation_v3, and unsigned_prepare_requirements. Example: quote S"},{"name":"assetfare_v2_prepare","description":"Return one deeply verified first unsigned bundle and caller-wallet handoff. Example: pass caller_approved=true, a one_shot approval_v3, and the quote-bound veri"},{"name":"assetfare_v2_session_create","description":"Create one receipt-driven workflow. Example: pass caller_approved=true, a session approval_v3, its idempotency_key, a caller-local session token, and the quote-"},{"name":"assetfare_v2_session_get","description":"Read an existing v2 workflow without advancing it. Example: pass session_id, session_token, and the original verification_context after restart. The adapter dee"},{"name":"assetfare_v2_session_observe_source","description":"Record source hashes the caller already signed and submitted, then advance the workflow. Example: pass one finalized source hash, a new idempotency key, and the"},{"name":"assetfare_v2_session_observe_output","description":"Record an already-produced bridge or destination output, then advance the workflow. Example: pass the output hash, a new idempotency key, and the original verif"},{"name":"assetfare_v2_session_refresh_action","description":"Refresh an expired action only while it remains unsubmitted. Example: pass the existing session, a new idempotency key, and the original verification_context. T"}],"toolCount":9,"toolsHash":"83ccb239950ad49c1a15a9694b619eba8cbb13ed22d81d6311b250d7a95c5a87","serverName":"AssetFare","capabilities":["tools"],"serverVersion":"1.17.1","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T08:27:32.804Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":242,"error":null,"detail":{"tools":[{"name":"assetfare_manifest","description":"Read the Ed25519-signed release manifest and safety-bundle binding before preparing an action. Example: call this once to verify the current release and contrac"},{"name":"assetfare_v2_capabilities","description":"Read all 98 technically available routes, live provider readiness, route-specific guidance, direct_route_summary, and continuation_v3 contracts before quoting. "},{"name":"assetfare_v2_quote","description":"Get one fresh AssetFare quote with amount-specific economic_guidance, direct_route_summary, continuation_v3, and unsigned_prepare_requirements. Example: quote S"},{"name":"assetfare_v2_prepare","description":"Return one deeply verified first unsigned bundle and caller-wallet handoff. Example: pass caller_approved=true, a one_shot approval_v3, and the quote-bound veri"},{"name":"assetfare_v2_session_create","description":"Create one receipt-driven workflow. Example: pass caller_approved=true, a session approval_v3, its idempotency_key, a caller-local session token, and the quote-"},{"name":"assetfare_v2_session_get","description":"Read an existing v2 workflow without advancing it. Example: pass session_id, session_token, and the original verification_context after restart. The adapter dee"},{"name":"assetfare_v2_session_observe_source","description":"Record source hashes the caller already signed and submitted, then advance the workflow. Example: pass one finalized source hash, a new idempotency key, and the"},{"name":"assetfare_v2_session_observe_output","description":"Record an already-produced bridge or destination output, then advance the workflow. Example: pass the output hash, a new idempotency key, and the original verif"},{"name":"assetfare_v2_session_refresh_action","description":"Refresh an expired action only while it remains unsubmitted. Example: pass the existing session, a new idempotency key, and the original verification_context. T"}],"toolCount":9,"toolsHash":"2feea66f6a8508b76b7c6ce07f55fe8b19823757a4bb2f1ea5fcb6e6348d47c8","serverName":"AssetFare","capabilities":["tools"],"serverVersion":"1.16.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T01:25:04.207Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":238,"error":null,"detail":{"tools":[{"name":"assetfare_manifest","description":"Read the Ed25519-signed release manifest and safety-bundle binding before preparing an action. Example: call this once to verify the current release and contrac"},{"name":"assetfare_v2_capabilities","description":"Read all 98 technically available routes, live provider readiness, route-specific guidance, direct_route_summary, and continuation_v3 contracts before quoting. "},{"name":"assetfare_v2_quote","description":"Get one fresh AssetFare quote with amount-specific economic_guidance, direct_route_summary, continuation_v3, and unsigned_prepare_requirements. Example: quote S"},{"name":"assetfare_v2_prepare","description":"Return one deeply verified first unsigned bundle and caller-wallet handoff. Example: pass caller_approved=true, a one_shot approval_v3, and the quote-bound veri"},{"name":"assetfare_v2_session_create","description":"Create one receipt-driven workflow. Example: pass caller_approved=true, a session approval_v3, its idempotency_key, a caller-local session token, and the quote-"},{"name":"assetfare_v2_session_get","description":"Read an existing v2 workflow without advancing it. Example: pass session_id, session_token, and the original verification_context after restart. The adapter dee"},{"name":"assetfare_v2_session_observe_source","description":"Record source hashes the caller already signed and submitted, then advance the workflow. Example: pass one finalized source hash, a new idempotency key, and the"},{"name":"assetfare_v2_session_observe_output","description":"Record an already-produced bridge or destination output, then advance the workflow. Example: pass the output hash, a new idempotency key, and the original verif"},{"name":"assetfare_v2_session_refresh_action","description":"Refresh an expired action only while it remains unsubmitted. Example: pass the existing session, a new idempotency key, and the original verification_context. T"}],"toolCount":9,"toolsHash":"2feea66f6a8508b76b7c6ce07f55fe8b19823757a4bb2f1ea5fcb6e6348d47c8","serverName":"AssetFare","capabilities":["tools"],"serverVersion":"1.16.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T18:27:43.984Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":235,"error":null,"detail":{"tools":[{"name":"assetfare_manifest","description":"Read the Ed25519-signed release manifest and safety-bundle binding before preparing an action. Example: call this once to verify the current release and contrac"},{"name":"assetfare_v2_capabilities","description":"Read all 98 technically available routes, live provider readiness, route-specific guidance, direct_route_summary, and continuation_v3 contracts before quoting. "},{"name":"assetfare_v2_quote","description":"Get one fresh AssetFare quote with amount-specific economic_guidance, direct_route_summary, continuation_v3, and unsigned_prepare_requirements. Example: quote S"},{"name":"assetfare_v2_prepare","description":"Return one deeply verified first unsigned bundle and caller-wallet handoff. Example: pass caller_approved=true, a one_shot approval_v3, and the quote-bound veri"},{"name":"assetfare_v2_session_create","description":"Create one receipt-driven workflow. Example: pass caller_approved=true, a session approval_v3, its idempotency_key, a caller-local session token, and the quote-"},{"name":"assetfare_v2_session_get","description":"Read an existing v2 workflow without advancing it. Example: pass session_id, session_token, and the original verification_context after restart. The adapter dee"},{"name":"assetfare_v2_session_observe_source","description":"Record source hashes the caller already signed and submitted, then advance the workflow. Example: pass one finalized source hash, a new idempotency key, and the"},{"name":"assetfare_v2_session_observe_output","description":"Record an already-produced bridge or destination output, then advance the workflow. Example: pass the output hash, a new idempotency key, and the original verif"},{"name":"assetfare_v2_session_refresh_action","description":"Refresh an expired action only while it remains unsubmitted. Example: pass the existing session, a new idempotency key, and the original verification_context. T"}],"toolCount":9,"toolsHash":"2feea66f6a8508b76b7c6ce07f55fe8b19823757a4bb2f1ea5fcb6e6348d47c8","serverName":"AssetFare","capabilities":["tools"],"serverVersion":"1.16.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T11:23:28.472Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":241,"error":null,"detail":{"tools":[{"name":"assetfare_manifest","description":"Read the Ed25519-signed release manifest and safety-bundle binding before preparing an action. Example: call this once to verify the current release and contrac"},{"name":"assetfare_v2_capabilities","description":"Read the 54 active routes, 44 economically inactive routes, live availability, route-specific guidance, direct_route_summary, and continuation_v3 contracts befo"},{"name":"assetfare_v2_quote","description":"Get one fresh AssetFare quote with route-specific economic_guidance, direct_route_summary, and continuation_v3. For a price-verified route, use AssetFare first "},{"name":"assetfare_v2_prepare","description":"Return one deeply verified first unsigned bundle plus a self-verifying caller-wallet handoff. Callers must explicitly pass caller_approved=true, approval_v3 sel"},{"name":"assetfare_v2_session_create","description":"Create one receipt-driven workflow. Callers must explicitly pass caller_approved=true, the exact approval_v3 selected as session, the same idempotency_key, a ca"},{"name":"assetfare_v2_session_get","description":"Read an existing v2 workflow without advancing it. Example: pass session_id, session_token, and the original verification_context after restart. The adapter dee"},{"name":"assetfare_v2_session_observe_source","description":"Record source hashes the caller already signed and submitted, then advance the workflow. Example: pass one finalized source hash, a new idempotency key, and the"},{"name":"assetfare_v2_session_observe_output","description":"Record an already-produced bridge or destination output, then advance the workflow. Example: pass the output hash, a new idempotency key, and the original verif"},{"name":"assetfare_v2_session_refresh_action","description":"Refresh an expired action only while it remains unsubmitted. Example: pass the existing session, a new idempotency key, and the original verification_context. T"}],"toolCount":9,"toolsHash":"f9f26ae956bbaee3984f1abb03af9fd8a7aa2e71039074343e2d17dfd9788828","serverName":"AssetFare","capabilities":["tools"],"serverVersion":"1.15.3","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T04:25:17.572Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":250,"error":null,"detail":{"tools":[{"name":"assetfare_manifest","description":"Read the Ed25519-signed release manifest and safety-bundle binding before preparing an action. Example: call this once to verify the current release and contrac"},{"name":"assetfare_v2_capabilities","description":"Read the 54 active routes, 44 economically inactive routes, live availability, route-specific guidance, direct_route_summary, and continuation_v3 contracts befo"},{"name":"assetfare_v2_quote","description":"Get one fresh AssetFare quote with route-specific economic_guidance, direct_route_summary, and continuation_v3. For a price-verified route, use AssetFare first "},{"name":"assetfare_v2_prepare","description":"Return one deeply verified first unsigned bundle plus a self-verifying caller-wallet handoff. Callers must explicitly pass caller_approved=true, approval_v3 sel"},{"name":"assetfare_v2_session_create","description":"Create one receipt-driven workflow. Callers must explicitly pass caller_approved=true, the exact approval_v3 selected as session, the same idempotency_key, a ca"},{"name":"assetfare_v2_session_get","description":"Read an existing v2 workflow without advancing it. Example: pass session_id, session_token, and the original verification_context after restart. The adapter dee"},{"name":"assetfare_v2_session_observe_source","description":"Record source hashes the caller already signed and submitted, then advance the workflow. Example: pass one finalized source hash, a new idempotency key, and the"},{"name":"assetfare_v2_session_observe_output","description":"Record an already-produced bridge or destination output, then advance the workflow. Example: pass the output hash, a new idempotency key, and the original verif"},{"name":"assetfare_v2_session_refresh_action","description":"Refresh an expired action only while it remains unsubmitted. Example: pass the existing session, a new idempotency key, and the original verification_context. T"}],"toolCount":9,"toolsHash":"f9f26ae956bbaee3984f1abb03af9fd8a7aa2e71039074343e2d17dfd9788828","serverName":"AssetFare","capabilities":["tools"],"serverVersion":"1.15.3","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T21:29:09.483Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":240,"error":null,"detail":{"tools":[{"name":"assetfare_manifest","description":"Read the Ed25519-signed release manifest and safety-bundle binding before preparing an action. Example: call this once to verify the current release and contrac"},{"name":"assetfare_v2_capabilities","description":"Read the 54 active routes, 44 economically inactive routes, live availability, route-specific guidance, direct_route_summary, and continuation_v3 contracts befo"},{"name":"assetfare_v2_quote","description":"Get one fresh AssetFare quote with route-specific economic_guidance, direct_route_summary, and continuation_v3. For a price-verified route, use AssetFare first "},{"name":"assetfare_v2_prepare","description":"Return one deeply verified first unsigned bundle plus a self-verifying caller-wallet handoff. Callers must explicitly pass caller_approved=true, approval_v3 sel"},{"name":"assetfare_v2_session_create","description":"Create one receipt-driven workflow. Callers must explicitly pass caller_approved=true, the exact approval_v3 selected as session, the same idempotency_key, a ca"},{"name":"assetfare_v2_session_get","description":"Read an existing v2 workflow without advancing it. Example: pass session_id, session_token, and the original verification_context after restart. The adapter dee"},{"name":"assetfare_v2_session_observe_source","description":"Record source hashes the caller already signed and submitted, then advance the workflow. Example: pass one finalized source hash, a new idempotency key, and the"},{"name":"assetfare_v2_session_observe_output","description":"Record an already-produced bridge or destination output, then advance the workflow. Example: pass the output hash, a new idempotency key, and the original verif"},{"name":"assetfare_v2_session_refresh_action","description":"Refresh an expired action only while it remains unsubmitted. Example: pass the existing session, a new idempotency key, and the original verification_context. T"}],"toolCount":9,"toolsHash":"f9f26ae956bbaee3984f1abb03af9fd8a7aa2e71039074343e2d17dfd9788828","serverName":"AssetFare","capabilities":["tools"],"serverVersion":"1.15.3","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T15:31:10.894Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":251,"error":null,"detail":{"tools":[{"name":"assetfare_manifest","description":"Read the Ed25519-signed release manifest and safety-bundle binding before preparing an action. Example: call this once to verify the current release and contrac"},{"name":"assetfare_v2_capabilities","description":"Read the 54 active routes, 44 economically inactive routes, live availability, route-specific guidance, direct_route_summary, and continuation_v3 contracts befo"},{"name":"assetfare_v2_quote","description":"Get one fresh AssetFare quote with route-specific economic_guidance, direct_route_summary, and continuation_v3. For a price-verified route, use AssetFare first "},{"name":"assetfare_v2_prepare","description":"Return one deeply verified first unsigned bundle plus a self-verifying caller-wallet handoff. Callers must explicitly pass caller_approved=true, approval_v3 sel"},{"name":"assetfare_v2_session_create","description":"Create one receipt-driven workflow. Callers must explicitly pass caller_approved=true, the exact approval_v3 selected as session, the same idempotency_key, a ca"},{"name":"assetfare_v2_session_get","description":"Read an existing v2 workflow without advancing it. Example: pass session_id, session_token, and the original verification_context after restart. The adapter dee"},{"name":"assetfare_v2_session_observe_source","description":"Record source hashes the caller already signed and submitted, then advance the workflow. Example: pass one finalized source hash, a new idempotency key, and the"},{"name":"assetfare_v2_session_observe_output","description":"Record an already-produced bridge or destination output, then advance the workflow. Example: pass the output hash, a new idempotency key, and the original verif"},{"name":"assetfare_v2_session_refresh_action","description":"Refresh an expired action only while it remains unsubmitted. Example: pass the existing session, a new idempotency key, and the original verification_context. T"}],"toolCount":9,"toolsHash":"f9f26ae956bbaee3984f1abb03af9fd8a7aa2e71039074343e2d17dfd9788828","serverName":"AssetFare","capabilities":["tools"],"serverVersion":"1.15.3","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T08:31:10.211Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":243,"error":null,"detail":{"tools":[{"name":"assetfare_manifest","description":"Read the Ed25519-signed release manifest and safety-bundle binding before preparing an action. Example: call this once to verify the current release and contrac"},{"name":"assetfare_v2_capabilities","description":"Read the 54 active routes, 44 economically inactive routes, live availability, route-specific guidance, direct_route_summary, and continuation_v3 contracts befo"},{"name":"assetfare_v2_quote","description":"Get one fresh AssetFare quote with route-specific economic_guidance, direct_route_summary, and continuation_v3. For a price-verified route, use AssetFare first "},{"name":"assetfare_v2_prepare","description":"Return one deeply verified first unsigned bundle plus a self-verifying caller-wallet handoff. Callers must explicitly pass caller_approved=true, approval_v3 sel"},{"name":"assetfare_v2_session_create","description":"Create one receipt-driven workflow. Callers must explicitly pass caller_approved=true, the exact approval_v3 selected as session, the same idempotency_key, a ca"},{"name":"assetfare_v2_session_get","description":"Read an existing v2 workflow without advancing it. Example: pass session_id, session_token, and the original verification_context after restart. The adapter dee"},{"name":"assetfare_v2_session_observe_source","description":"Record source hashes the caller already signed and submitted, then advance the workflow. Example: pass one finalized source hash, a new idempotency key, and the"},{"name":"assetfare_v2_session_observe_output","description":"Record an already-produced bridge or destination output, then advance the workflow. Example: pass the output hash, a new idempotency key, and the original verif"},{"name":"assetfare_v2_session_refresh_action","description":"Refresh an expired action only while it remains unsubmitted. Example: pass the existing session, a new idempotency key, and the original verification_context. T"}],"toolCount":9,"toolsHash":"f9f26ae956bbaee3984f1abb03af9fd8a7aa2e71039074343e2d17dfd9788828","serverName":"AssetFare","capabilities":["tools"],"serverVersion":"1.15.3","protocolVersion":"2025-06-18"}}],"tools":[{"name":"assetfare_manifest","description":"Read the Ed25519-signed release manifest and safety-bundle binding before preparing an action. Example: call this once to verify the current release and contrac"},{"name":"assetfare_v2_capabilities","description":"Read all 100 technically available routes, live provider readiness, route-specific guidance, direct_route_summary, and continuation_v3 contracts before quoting."},{"name":"assetfare_v2_quote","description":"Get one fresh AssetFare quote with amount-specific economic_guidance, direct_route_summary, continuation_v3, and unsigned_prepare_requirements. Example: quote S"},{"name":"assetfare_v2_prepare","description":"Return one deeply verified first unsigned bundle and caller-wallet handoff. Example: pass caller_approved=true, a one_shot approval_v3, and the quote-bound veri"},{"name":"assetfare_v2_session_create","description":"Create one receipt-driven workflow. Example: pass caller_approved=true, a session approval_v3, its idempotency_key, a caller-local session token, and the quote-"},{"name":"assetfare_v2_session_get","description":"Read an existing v2 workflow without advancing it. Example: pass session_id, session_token, and the original verification_context after restart. The adapter dee"},{"name":"assetfare_v2_session_observe_source","description":"Record source hashes the caller already signed and submitted, then advance the workflow. Example: pass one finalized source hash, a new idempotency key, and the"},{"name":"assetfare_v2_session_observe_output","description":"Record an already-produced bridge or destination output, then advance the workflow. Example: pass the output hash, a new idempotency key, and the original verif"},{"name":"assetfare_v2_session_refresh_action","description":"Refresh an expired action only while it remains unsubmitted. Example: pass the existing session, a new idempotency key, and the original verification_context. T"}],"package":null,"toolSurface":{"id":"ts_3n9rdpx9x9c2","endpointId":"ep_kyhqsqg463ht","hash":"83ccb239950ad49c1a15a9694b619eba8cbb13ed22d81d6311b250d7a95c5a87","toolCount":9,"serverName":"AssetFare","serverVersion":"1.17.1","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-09T15:32:39.078Z","lastSeenAt":"2026-10-09T21:27:38.976Z","observations":2,"toolNames":["assetfare_manifest","assetfare_v2_capabilities","assetfare_v2_quote","assetfare_v2_prepare","assetfare_v2_session_create","assetfare_v2_session_get","assetfare_v2_session_observe_source","assetfare_v2_session_observe_output","assetfare_v2_session_refresh_action"],"distinctSurfaces":25},"endpointFacts":[{"id":"ep_kyhqsqg463ht","url":"https://api.assetfare.dev/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-01T18:26:51.072Z","auth":{"observedAt":"2026-10-01T18:26:51.308Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-01T18:26:51.771Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"api.assetfare.dev","issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validFrom":"2026-09-14T01:46:13.000Z","validTo":"2026-12-13T01:46:12.000Z","daysToExpiry":64,"sanCount":1,"fingerprint256":"CB:19:6A:84:E2:5C:BD:42:75:F1:F6:F7:8F:C5:75:C5:49:60:2A:A9:9D:93:12:41:9A:15:2D:41:D6:0C:99:06"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.github.odaiin/assetfare","url":"https://registry.modelcontextprotocol.io/v0/servers/io.github.odaiin%2Fassetfare","firstSeenAt":"2026-09-15T01:22:29.474Z","fetchedAt":"2026-09-26T21:18:02.270Z","normalizedAt":"2026-09-26T21:18:02.270Z"},{"source":"mcp_registry","key":"io.github.assetfare/assetfare","url":"https://registry.modelcontextprotocol.io/v0/servers/io.github.assetfare%2Fassetfare","firstSeenAt":"2026-10-01T13:20:24.478Z","fetchedAt":"2026-10-07T06:22:13.616Z","normalizedAt":"2026-10-07T06:22:13.616Z"}]},"firstSeenAt":"2026-09-15T01:22:29.474Z","updatedAt":"2026-10-09T21:29:16.792Z"}