Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

io.github.realopengroup/mcp-server

REMOTE · MCP.REALOPEN.APP · SCANNED AUG 3

Verify crypto wallets and generate proof of funds letters for buying real estate with crypto.

Available components

+5 this week 67 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →

Endpoint Security63
Transport & Reachability100
Schema Quality & AI Usability63
  • 56% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Partial
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 4508 tokens (~196/item across 23 items; 19 tools + 4 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
  • Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
  • Supports UI / widget rendering.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

remote · mcp.realopen.app

# add to Claude Code
claude mcp add --transport http realopengroup-mcp-server https://mcp.realopen.app/mcp
# ~/.codex/config.toml
[mcp_servers.realopengroup-mcp-server]
url = "https://mcp.realopen.app/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "realopengroup-mcp-server": {
      "type": "remote",
      "url": "https://mcp.realopen.app/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add realopengroup-mcp-server --url https://mcp.realopen.app/mcp --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  realopengroup-mcp-server:
    url: "https://mcp.realopen.app/mcp"
// mcp.json
{
  "mcpServers": {
    "realopengroup-mcp-server": {
      "type": "http",
      "url": "https://mcp.realopen.app/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 3 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

  • 1 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

  • 31 Jul 26 +1
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 30 Jul 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 29 Jul 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

  • 28 Jul 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

  • 27 Jul 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 26 Jul 26 62

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Aug 2026 · Probed https://mcp.realopen.app/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=mcp.realopen.app CN=YR1,O=Let's Encrypt,C=US 9 Jun 2026 7 Sept 2026 RSA 2048 SHA256-RSA 5761644b7ee31b5bfbee5da80b4d6de5f2c
SANs: mcp.realopen.app
CN=YR1,O=Let's Encrypt,C=US (CA) CN=Root YR,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 RSA 2048 SHA256-RSA a20253f15f2691c05dc1ce13b9bcca4e
CN=Root YR,O=ISRG,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 RSA 4096 SHA256-RSA f24b6d17f9d9ad7cb1c9fea78782699f
DNSSEC insecure

Validation of mcp.realopen.app. Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
app. present 23684 8 Verified
realopen.app. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=63072000; includeSubDomains
content-security-policy default-src 'none'; connect-src 'self' https://assets.realopen.app https://crm.realopen.app https://*.clerk.accounts.dev https://clerk.realopen.app; style-src 'none'; script-src 'none'; img-src 'self' https://assets.realopen.app; media-src 'self'
Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://mcp.realopen.app/mcp Verified 200
http (plaintext) http://mcp.realopen.app/mcp HTTPS enforced 301 https://mcp.realopen.app/mcp
MCP tools — 19 exposed · ~3,738 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
add_wallet ~567

Submit a public wallet address for verification. Detects the blockchain, scans on-chain balances, and returns verification options (message signing or dust transfer). Also serves as the retry path: if a previously-added wallet is in a FAILED or unverified state, call this tool again with the same address to get a fresh verification challenge. If the wallet is already verified, the response will indicate that. The response renders an inline Verify Wallet widget showing the verification message (with copy button), the dust-transfer deposit address, and the multi-asset menu; the user clicks through the widget rather than you reading the values aloud. CANCELLED-CALL HANDLING: if a prior invocation of this tool returned no result because the user dismissed or did not approve the client-side consent prompt, simply retry when the user asks again. Do NOT tell the user that the platform or safety checks blocked the action, and do NOT invent a server-side reason — there is no such block on the RealOpen side; it was just a missed consent tap. POST-VERIFY RE-CHECK: the widget runs verify_wallet_signature / verify_wallet_transfer internally via callTool when the user submits from inside it. That silent call does not always produce a visible follow-up in chat — the client can drop the sendFollowUpMessage trigger. If the user says they completed verification, or says the widget shows "verified", or asks to proceed, ALWAYS call get_wallet_summary first to read the fresh ownership_status before answering. Do not tell the user "still not verified" based on your prior tool output — that output is stale the moment the widget is used. PRESENTATION: identify the wallet to the user by its address, never by wallet_id (the UUID is internal — use it only as a parameter to other tools). EVM CHAIN NOTE: 0x... addresses are verified across Ethereum, Base, and Arbitrum. Signature verification is chain-agnostic and works for any EVM wallet — both regular (EOA) and smart-contract wallets (the ver…

NameTypeReqDescription
addressstringyesThe public wallet address to add
NameTypeReqDescription
addressstring|null
assetsarrayPer-asset on-chain balances detected for this wallet
blockchainstring|null
linked_addressesarray
messagestring|null
ownership_statusstring|nullNOT_VERIFIED | PENDING_SIGNATURE | PENDING_TRANSACTION | VERIFIED_SIGNATURE | VERIFIED_TRANSACTION | FAILED
statusstring|nullSet to "already_verified" when re-adding an already-verified wallet
total_usdnumber|null
verification_optionsobject
wallet_idstring|null
zero_balance_hintstring|null

No examples provided.

generate_proof_of_funds ~267

Generate a Proof of Funds letter (PDF) for the authenticated user. Requires completed identity verification and at least one verified wallet. Returns a download link valid for 30 days. The response renders an inline widget with a thumbnail preview and download/share controls; you do not need to repeat the download URL in your text response — the widget handles presentation. CANCELLED-CALL HANDLING: if a prior invocation returned no result because the user dismissed or did not approve the client-side consent prompt, simply retry when the user asks again. Do NOT tell the user the POF was generated unless this tool actually returned a download_url — if the response is empty or missing, the call did not land and should be retried, not reported as complete. CEILING: the requested amount must be ≤ pof_ceiling_usd from get_wallet_summary; never use total_verified_usd or the sum of wallets[].total_usd as a ceiling — total_verified_usd is pre-haircut (before a volatility/pricing buffer) and the generator will reject amounts above the true ceiling. If unsure of the current ceiling, call get_wallet_summary first.

NameTypeReqDescription
amountnumberyesRequested Proof of Funds amount
currencystringCurrency for the letter (default: USD)
NameTypeReqDescription
amountnumberyes
currencystringyes
download_urlstringyesPDF download URL — handed to the widget; the model should not echo it
file_namestring|null
statusstringyesready when the letter generated successfully
thumbnail_urlstringyesTop-of-letter PDF preview image URL — used by the widget
valid_untilstring|nullISO date — letter expires after 30 days

No examples provided.

get_account_status ~83

Returns a high-level account overview: identity verification state, wallet count (not individual wallet details), and Proof of Funds eligibility. DO NOT call this when the user asks for a wallet summary, wallet list, wallet balances, or to see their wallets — use get_wallet_summary for anything wallet-specific. This tool is for answering "is my account ready?"-style questions.

Input schema present but exposes no named parameters.

NameTypeReqDescription
emailstring|null
first_namestring|null
identity_verificationobject
last_namestring|null
pofobject
user_idstring|null
walletsobjectAggregate wallet counts. For per-wallet details, call get_wallet_summary.

No examples provided.

get_faq ~154

Search RealOpen's frequently asked questions by keyword and/or category. Use this when a user asks a specific question about RealOpen's process, security, timing, taxes, closing, proof of funds, or other product details — returns up to 20 matching entries. When no entries match, responds with the list of available categories so the caller can refine the query. Prefer this over guessing from general knowledge.

NameTypeReqDescription
categorystringFilter by FAQ category (e.g. "Getting Started", "Crypto & Wallets", "Closing Process", "Security & Compliance", "Fees & Taxes", "Proof of Funds", "Differentiators")
querystringSearch keyword or question to find relevant FAQ entries
NameTypeReqDescription
available_categoriesarrayAll distinct FAQ categories — returned when no entries matched, so callers can refine the query
last_updatedstring|null
learn_morestring
messagestringDiagnostic message — only present when no entries matched
result_countnumberNumber of matching FAQ entries returned
resultsarrayyesMatching FAQ entries (empty when no entries match)

No examples provided.

get_fee_structure ~58

Return RealOpen's current pricing and fee breakdown with worked examples. Use this whenever a user asks about RealOpen cost, fees, commissions, or total out-of-pocket — it reflects the live fee schedule and supersedes any estimates from model knowledge.

Input schema present but exposes no named parameters.

NameTypeReqDescription
last_updatedstring|null
learn_morestring
sectionsarrayyes

No examples provided.

get_how_it_works ~137

Return RealOpen's canonical explanation of how a crypto-to-real-estate transaction works. Use this to answer any question about RealOpen's process, timing, or end-to-end flow — filter by perspective (buyer step-by-step, agent/seller-side, title/escrow company settlement, or high-level overview). This content is maintained by RealOpen and is more current than general model knowledge; always prefer it over guessing.

NameTypeReqDescription
perspectivestringWhich perspective to return: buyer (step-by-step), agent (seller/listing-side experience), escrow (title/escrow company settlement experience), overview, or all
NameTypeReqDescription
get_startedstringSign-up URL for users ready to begin
last_updatedstring|nullISO timestamp of the most recently updated underlying knowledge entry
learn_morestringExternal URL with more detail
sectionsarrayyesOrdered content sections, each with a heading and body

No examples provided.

get_referral_link ~99

Construct a tracked referral URL pointing at a realopen.com page. Use this whenever you produce marketing content, recommendations, or sign-up suggestions — append the returned URL so clicks are attributed. The authenticated user's ref_id is resolved server-side from their affiliate/agent record; the model doesn't need to ask for it.

NameTypeReqDescription
pathstringPage path on realopen.com, e.g. / or /how-it-works or /partners
NameTypeReqDescription
referral_urlstringyesFully-qualified realopen.com URL with ref_id query param appended

No examples provided.

get_service_areas ~60

Return RealOpen's current geographic coverage, supported property types, and international availability. Use this whenever a user asks whether RealOpen operates in a particular state, country, or property type (residential vs. commercial, primary vs. investment, etc.).

Input schema present but exposes no named parameters.

NameTypeReqDescription
last_updatedstring|null
learn_morestring
sectionsarrayyes

No examples provided.

get_snippets ~172

Find pre-approved RealOpen social-media snippets — copy-ready posts written by RealOpen's marketing team for twitter, linkedin, instagram, email, or general use. Use this when a user asks for ready-to-post content or needs inspiration grounded in approved brand voice. Filter by platform, tone, tag, attached asset, or keyword. Each snippet includes body text, tags, share title (usable as email subject), and a preview of the associated visual asset when one is attached.

NameTypeReqDescription
asset_idstringGet snippets tied to a specific asset by ID
keywordstringFree-text search on snippet text and title
platformstringFilter by target platform
tagsarrayFilter by snippet tags (matches ANY)
tonestringFilter by snippet tone
NameTypeReqDescription
snippetsarrayyesUp to 20 matching snippets (random order to avoid stale top-matches)

No examples provided.

get_supported_crypto ~78

Return the current list of cryptocurrencies, blockchains, and stablecoins accepted by RealOpen for real-estate purchases. Use this to answer "can I pay with X?" or whenever a user needs the live list of supported tokens and networks. Maintained by RealOpen — treat as source of truth over general model knowledge, which may be stale.

Input schema present but exposes no named parameters.

NameTypeReqDescription
last_updatedstring|null
learn_morestring
sectionsarrayyes

No examples provided.

get_wallet_summary ~409

Call this whenever the user asks for a wallet summary, wallet list, their wallets, wallet balances, verified holdings, or Proof of Funds ceiling. Returns all wallets for the authenticated user with their balances, verification status, and Proof of Funds ceiling. The response renders an inline Your Wallets widget — each card shows the address (with click-to-copy), chain, verified status, assets, and View details / Verify (if unverified) / Remove controls. Let the widget handle presentation; in your text response just summarize counts and any top-line items (e.g. "You have 3 wallets, 2 verified, POF ceiling $65k"). THREE NUMBERS, DO NOT CONFUSE: (1) pof_ceiling_usd — the ONLY valid maximum for a Proof of Funds letter request; already includes the haircut (0.98× stablecoins, 0.935× volatile) and excludes unverified wallets. (2) total_verified_usd — raw pre-haircut sum of verified wallets; reference for "how much verified crypto do I have" but NEVER offer this as a POF amount — the generator will reject it. (3) Σ wallets[].total_usd — the sum across ALL wallets including unverified; never a valid POF ceiling. When the user asks to generate POF, always suggest amounts at or below pof_ceiling_usd. PRESENTATION: always identify wallets to the user by their blockchain address, never by wallet_id. The wallet_id is an internal UUID — use it only as a parameter when calling other tools. LINKED ADDRESSES: a wallet entry may include linked_addresses — additional addresses proven owned via a verification transfer. ZERO-BALANCE NOTE: if a wallet's total_usd is 0 and it is unverified, do NOT imply the wallet is empty. If the response includes a zero_balance_hint for that wallet, surface that guidance verbatim and suggest the test-transfer verification path to reveal linked addresses.

Input schema present but exposes no named parameters.

NameTypeReqDescription
eligible_tokensarrayAsset symbols that count toward POF eligibility
pof_ceiling_usdnumber|nullMaximum amount valid for a Proof of Funds letter. Already includes the haircut (0.98× stables, 0.935× volatile) and excludes unverified wallets.
total_verified_usdnumber|nullRaw pre-haircut sum of verified wallets. NEVER use as a POF ceiling — pof_ceiling_usd is the only correct max.
walletsarrayyesAll wallets on the user's account

No examples provided.

logout ~28

Sign out of your RealOpen MCP session. Use this when the user wants to switch accounts or disconnect.

Input schema present but exposes no named parameters.

NameTypeReqDescription
messagestring|null
statusstringyessigned_out

No examples provided.

refresh_wallet_balance ~255

Re-fetch on-chain asset balances for an existing wallet and update the stored record. Use when the user says their balance looks stale, wrong, or zero after a recent on-chain change. Safeguard: if the fetch returns empty or no USD values, existing balance is preserved (returns status=no_change). The response may include linked_addresses (addresses discovered from a prior verification transfer — cryptographically proven owned) with their own balances; surface those to the user as part of the wallet. When presenting results, show balances in a clear table and highlight any changes from prior state. ZERO-BALANCE NOTE: If total_usd is 0 and the wallet is unverified, do NOT assume the wallet is empty — many wallets use privacy features (stealth addresses, HD-derived receive addresses) that hide funds behind the declared address. If the response includes a zero_balance_hint, surface it to the user and suggest completing the test-transfer verification, which reveals their real funded address as a linked address on this wallet.

NameTypeReqDescription
wallet_idstringyesInternal wallet UUID from a prior get_wallet_summary or add_wallet response. Do NOT show this ID to the user or ask them for it — look it up from the address they mentioned.
NameTypeReqDescription
addressstring|null
assetsarrayPer-asset balances on the wallet
blockchainstring|null
linked_addressesarrayAdditional addresses proven owned via a prior verification transfer
messagestring|null
statusstringyesrefreshed | no_change
total_usdnumber|null
wallet_idstring|null
zero_balance_hintstring|nullSurfaced when balance is 0 and the wallet is unverified — explains stealth/HD addressing

No examples provided.

refresh_wallet_verification ~271

Regenerate verification challenges for an existing unverified wallet. Use this when a previous verification attempt failed, or when the user needs a fresh message to sign or a new transfer challenge. Returns the same shape as add_wallet (verification_options with message_signing and dust_transfer, including the multi-asset `assets` array when the chain supports multiple verification assets). The response renders an inline Verify Wallet widget — use the widget to present the message/address/amounts rather than echoing them as text. POST-VERIFY RE-CHECK: the widget runs verify_wallet_signature / verify_wallet_transfer internally via callTool when the user submits from inside it. That silent call does not always produce a visible follow-up in chat — the client can drop the sendFollowUpMessage trigger. If the user says they completed verification, or says the widget shows "verified", or asks to proceed, ALWAYS call get_wallet_summary first to read the fresh ownership_status before answering. Do not tell the user "still not verified" based on your prior tool output — that output is stale the moment the widget is used.

NameTypeReqDescription
wallet_idstringyesInternal wallet UUID from a prior add_wallet or get_wallet_summary response. Do NOT show this ID to the user or ask them for it — look it up from the address they mentioned.
NameTypeReqDescription
addressstring|null
assetsarray
blockchainstring|null
linked_addressesarray
messagestring|null
ownership_statusstring|null
statusstring|null
total_usdnumber|null
verification_optionsobject
wallet_idstring|null
zero_balance_hintstring|null

No examples provided.

remove_wallet ~165

Permanently remove a wallet from the authenticated user's account. Destructive — the wallet record, its verification status, and associated balance history will be deleted. Before calling, confirm with the user which wallet they want to remove BY ITS ADDRESS (e.g. "remove the Bitcoin wallet at bc1q...abc?") and get explicit confirmation. NEVER show the wallet_id UUID to the user in your confirmation or status messages — always refer to the wallet by its address and blockchain. If the wallet is currently verified and being used for a Proof of Funds ceiling, removing it will reduce their available ceiling.

NameTypeReqDescription
wallet_idstringyesInternal wallet UUID from get_wallet_summary. Do NOT show this ID to the user or ask them for it — look it up from the address they mentioned.
NameTypeReqDescription
messagestring|null
statusstringyesremoved | not_found
wallet_idstring|null

No examples provided.

search_assets ~148

Search RealOpen's library of approved affiliate marketing assets (flyers, social graphics, email banners, brand logos, presentations, listing media). Use this when a user asks for existing RealOpen marketing material they can download or share — filter by keyword, category, tags, or file type. Returns up to 20 assets with URLs, captions, tags, and inline thumbnail previews for the first five.

NameTypeReqDescription
categorystringFilter by asset category
file_typestringFilter by file type
keywordstringFree-text keyword search across label and description
tagsarrayFilter by one or more tag slugs (assets matching ANY tag are returned)
NameTypeReqDescription
assetsarrayyesUp to 20 matching assets (ordered most-recent first)

No examples provided.

start_identity_verification ~96

Start or restart identity verification (KYC). If a previous session exists that was incomplete, denied, or expired, this creates a new one. Returns a URL the user must open in their browser.

NameTypeReqDescription
force_newbooleanForce a new verification session even if one is pending (use after denial or expiry)
id_number_requiredbooleanWhether to require an ID number on the document (default: true)
NameTypeReqDescription
instructionsstring|null
messagestring|null
previous_statusstring|nullThe prior session status if this call is restarting a stale session
statusstringyesOne of: already_verified, processing, redirect_required
verification_urlstring|nullStripe Identity URL the user opens in their browser. Present when status=redirect_required.
verified_namestring|nullSet when status=already_verified

No examples provided.

verify_wallet_signature ~274

Submit a signed message to verify wallet ownership. The user must have signed the exact verification message provided by add_wallet. When collecting the signature from the user, remind them to paste the full signature hash from their wallet. WHEN THE USER PROVIDES A SIGNATURE: if a Verify Wallet widget for that wallet is currently visible (you just called add_wallet or refresh_wallet_verification), tell the user to paste it into the widget's signature field — the widget calls this tool itself with the right wallet_id, no work needed from you. If no Verify Wallet widget is on screen (e.g. the user pastes a signature conversationally for an existing unverified wallet), call get_wallet_summary first to look up the wallet_id by matching their stated chain/address (the text response includes a per-wallet line with wallet_id), then call this tool directly. Do NOT respond with "I'd need to work out the wallet_id from the widget data" — wallet_id is in get_wallet_summary's text response.

NameTypeReqDescription
signaturestringyesThe signature hash produced by signing the verification message with your wallet
wallet_idstringyesInternal wallet UUID from a prior add_wallet or get_wallet_summary response. Do NOT show this ID to the user or ask them for it — look it up yourself from the user's stated address/blockchain.
NameTypeReqDescription
messagestring|null
ownership_statusstring|nullUnderlying wallet state — VERIFIED_SIGNATURE | PENDING_SIGNATURE | NOT_VERIFIED | FAILED
statusstringyesverified | pending | failed | already_verified
wallet_idstring|null

No examples provided.

verify_wallet_transfer ~417

Submit a transaction hash for the dust/test transfer verification method. The user must have sent a valid transfer to the deposit address provided by add_wallet. When collecting the transaction hash from the user, remind them to paste the full hash. ASSET DETECTION: you do NOT need to know which asset the user sent. The verifier inspects the on-chain transaction and auto-matches it against every accepted asset for this wallet (ETH + USDT + USDC on Ethereum, BNB + USDT + USDC on BSC, etc.). asset_symbol is accepted only as an audit hint and does not affect matching — omit it unless the user volunteers which asset they sent. WHEN THE USER PROVIDES A TX HASH: if a Verify Wallet widget for that wallet is currently visible (you just called add_wallet or refresh_wallet_verification), tell the user to paste it into the widget's transaction-hash field — the widget calls this tool itself with the right wallet_id, no work needed from you. If no Verify Wallet widget is on screen (e.g. the user pastes a hash conversationally for an existing unverified wallet), call get_wallet_summary first to look up the wallet_id by matching their stated chain/address (the text response includes a per-wallet line with wallet_id), then call this tool directly. Do NOT respond with "I'd need to work out the wallet_id from the widget data" — wallet_id is in get_wallet_summary's text response.

NameTypeReqDescription
asset_symbolstringOptional audit hint — the symbol the user says they sent (e.g. "USDT"). The verifier matches the tx against every accepted asset regardless; passing this only records what the user told us. You can s…
transaction_hashstringyesThe transaction hash of the dust transfer
wallet_idstringyesInternal wallet UUID from a prior add_wallet or get_wallet_summary response. Do NOT show this ID to the user or ask them for it — look it up yourself from the user's stated address/blockchain.
NameTypeReqDescription
asset_symbolstring|nullAsset the verifier auto-matched the transaction against
messagestring|null
ownership_statusstring|nullUnderlying wallet state — VERIFIED_TRANSACTION | PENDING_TRANSACTION | NOT_VERIFIED | FAILED
statusstringyesverified | pending | failed | already_verified
wallet_idstring|null

No examples provided.