Skip to main content
Glama

Server Details

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

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
realopengroup/mcp-server
GitHub Stars
0

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.6/5 across 20 of 20 tools scored.

Server CoherenceA
Disambiguation3/5

Several tools have overlapping responsibilities. add_wallet explicitly doubles as a retry path for unverified wallets, overlapping with refresh_wallet_verification. get_snippets and search_assets both return marketing content, though they target different media types. Descriptions are detailed, but an agent could still misroute calls between these pairs.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern (add_, get_, verify_, refresh_, etc.). Even 'logout' is a concise imperative verb. There are no mixed conventions or camelCase, making the naming highly predictable.

Tool Count3/5

With 20 tools, this server sits in the 'borderline heavy' range. The many knowledge and marketing tools (get_faq, get_how_it_works, get_snippets, search_assets, etc.) could potentially be consolidated, but each covers a distinct topic, so the count is not unreasonable.

Completeness4/5

The toolset provides full lifecycle coverage for wallet verification and Proof of Funds generation, along with account status, KYC, knowledge base, and marketing assets. Minor gaps exist, such as no dedicated tool to update wallet labels or view a single wallet's details independently, but these can be worked around with existing tools.

Available Tools

20 tools
add_walletA
Idempotent
Inspect

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 verifier checks ERC-1271 on-chain). Dust-transfer verification works on Ethereum, Base, and Arbitrum too: each dust-transfer option is tagged with its chain (e.g. "USDC on Base"), so the user must send on the chain shown for that option. (Polygon and BSC are also supported for signature verification.) ZERO-BALANCE NOTE: If total_usd is 0, do NOT assume the wallet is empty. Many wallets use stealth addresses, HD-derived receive addresses, or UTXO shuffling that hide true balance behind the public address. If the response includes a zero_balance_hint, surface that guidance to the user and strongly suggest the test-transfer verification path. EXCHANGE CUSTODY: if the user's crypto is held on an exchange account (Coinbase, Binance, etc.) — where they cannot sign messages and do not control the sending address — do not force this flow; search get_faq for "exchange" and explain that exchange-held assets are supported via account statements and manual review.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesThe public wallet address to add

Output Schema

ParametersJSON Schema
NameRequiredDescription
assetsNoPer-asset on-chain balances detected for this wallet
statusNoSet to "already_verified" when re-adding an already-verified wallet
addressNo
messageNo
total_usdNo
wallet_idNo
blockchainNo
linked_addressesNo
ownership_statusNoNOT_VERIFIED | PENDING_SIGNATURE | PENDING_TRANSACTION | VERIFIED_SIGNATURE | VERIFIED_TRANSACTION | FAILED
zero_balance_hintNo
verification_optionsNo
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses many behaviors beyond annotations: the inline widget and user interaction model, silent internal verification calls that may drop follow-up messages, stale output warnings, chain-specific verification nuances, zero-balance caveats, and cancellation handling. Annotations (idempotentHint=true) are consistent; no contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is highly structured with clear section headers and front-loaded purpose, but it is very long (over 500 words). While every section seems relevant and earns its place, the overall length is not concise; a more condensed version could achieve the same instructional value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (multiple edge cases, UI interaction, chain-specific behavior, retry semantics) and a minimal schema (1 param), the description is exceptionally complete. It covers all necessary scenarios including cancellation, stale data, zero balances, and exchange custody, leaving little ambiguity for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single 'address' parameter, so baseline is 3. The description adds meaningful context about address behavior (EVM chains, stealth/HD addresses, exchange custody), which goes beyond the schema's simple 'public wallet address' description and helps the agent understand implications of passing the parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific verb and resource: 'Submit a public wallet address for verification.' It also distinguishes itself from sibling tools by mentioning internal calls to verify_wallet_signature / verify_wallet_transfer and the alternative get_wallet_summary for checking status, and get_faq for exchange custody cases.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use guidance: retry path for failed/unverified wallets, when the wallet is already verified, and when to avoid the flow (exchange custody) with a suggested alternative. Also instructs to call get_wallet_summary before answering post-verification, and names specific conditions for using the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_proof_of_fundsAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesRequested Proof of Funds amount
currencyNoCurrency for the letter (default: USD)USD

Output Schema

ParametersJSON Schema
NameRequiredDescription
amountYes
statusYesready when the letter generated successfully
currencyYes
file_nameNo
valid_untilNoISO date — letter expires after 30 days
download_urlYesPDF download URL — handed to the widget; the model should not echo it
thumbnail_urlYesTop-of-letter PDF preview image URL — used by the widget
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the sparse annotations, the description discloses prerequisites, a 30-day download link, inline widget rendering, cancellation handling, and the ceiling constraint. It warns against using incorrect ceiling sources, adding important behavioral context not present in annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured with clear sections for cancellation handling and ceiling. Every sentence serves a purpose, though some operational details could be condensed. It is appropriately sized for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers prerequisites, return value (download link, widget), error/retry handling, and the critical ceiling calculation. With an output schema present, it fully equips the agent to invoke the tool correctly and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents both parameters (amount, currency) with descriptions, so baseline is 3. The description adds crucial constraint semantics for the amount parameter (must be ≤ pof_ceiling_usd from get_wallet_summary), which is not in the schema. This elevates the score to 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with a specific verb ('Generate') and resource ('Proof of Funds letter (PDF)'), clearly stating the action and output. It distinguishes itself from sibling tools like get_wallet_summary and verify_wallet_signature by focusing on document generation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It specifies preconditions (completed identity verification, at least one verified wallet) and explicitly recommends calling get_wallet_summary to check the ceiling. It also provides guidance on cancellation handling and when not to report success, giving clear expected usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_account_statusA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
pofNo
emailNo
user_idNo
walletsNoAggregate wallet counts. For per-wallet details, call get_wallet_summary.
last_nameNo
first_nameNo
account_hintNoPresent only for brand-new/empty accounts — if the user expected existing RealOpen data, surface this guidance (they may have connected with a different email than their realopen.com account)
identity_verificationNo
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false. The description adds clarifying scope (high-level overview, not individual wallet details) and the meaning of the result for users, which is useful without contradicting annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with perfect front-loading: immediate purpose, then scope limitations and usage criteria. No redundant clauses or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With zero parameters and an output schema present, the description provides all necessary context: return scope (high-level, specific fields), exclusions (wallet details), and use case. The output schema covers return values, so no further detail is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline of 4 applies. The description does not need to add parameter meaning, and no gaps exist since schema coverage is 100% (vacuously).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Returns') and resource ('high-level account overview') with three concrete data points (identity verification state, wallet count, Proof of Funds eligibility), and explicitly distinguishes from get_wallet_summary by stating what it does NOT return.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use guidance ('is my account ready?'-style questions) and explicit when-not-to-use with a named alternative ('use get_wallet_summary for anything wallet-specific'). This fully covers usage context and differentiates from siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_faqA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoSearch keyword or question to find relevant FAQ entries
categoryNoFilter by FAQ category (e.g. "Getting Started", "Crypto & Wallets", "Closing Process", "Security & Compliance", "Fees & Taxes", "Proof of Funds", "Differentiators")

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNoDiagnostic message — only present when no entries matched
resultsYesMatching FAQ entries (empty when no entries match)
learn_moreNo
last_updatedNo
result_countNoNumber of matching FAQ entries returned
available_categoriesNoAll distinct FAQ categories — returned when no entries matched, so callers can refine the query
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds the behavior that it returns up to 20 entries and, when no entries match, responds with a list of categories so the caller can refine the query. This gives actionable expectations beyond the safety profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: the first clearly states purpose and usage, the second covers the fallback behavior when no matches are found. Every sentence contributes value with no redundancy, and the key information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (two optional params, no required fields, output schema exists). The description covers purpose, when to use, result limit, and the empty-result fallback. Since an output schema is present, return format needs no explanation, making the description complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents both parameters with examples and 100% coverage. The description mentions 'by keyword and/or category' but doesn't add meaning beyond what the schema provides, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches RealOpen's FAQs by keyword and/or category, with specific example topics (process, security, timing, taxes, closing, proof of funds). It emphasizes this is the FAQ lookup tool, which distinguishes it from sibling tools like get_fee_structure or get_how_it_works.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Use this when a user asks a specific question about RealOpen's process, security, timing, taxes, closing, proof of funds, or other product details' and advises preferring this over guessing from general knowledge. However, it does not mention specific alternatives or when not to use, so it lacks full explicit contrast.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_fee_structureA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
sectionsYes
learn_moreNo
last_updatedNo
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is well covered. The description adds behavioral context beyond these by noting the tool reflects the 'live fee schedule' and 'supersedes any estimates from model knowledge,' indicating the data is dynamically fetched. It also mentions 'worked examples,' subtly hinting at the output format. This meaningfully extends the annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, both dense with useful information. The first sentence states the core purpose, the second provides usage guidance and a critical live-data caveat. No filler or repetition; it is optimally front-loaded and every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 0 parameters, an output schema is present, and annotations fully cover the safety profile, the description is complete for its complexity. It covers what the tool does, when to use it, and the live-data nature. Nothing essential is missing for an agent to select and invoke this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and schema description coverage is 100% by default. Per calibration guidelines, a baseline of 4 is appropriate for 0 params. The description adds no parameter-specific semantics, but none are needed; the tool is a simple no-argument lookup.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Return RealOpen's current pricing and fee breakdown with worked examples.' The verb 'Return' and specific resource 'RealOpen's current pricing and fee breakdown' make the purpose unambiguous. It also distinguishes itself from siblings like get_faq and get_how_it_works by focusing on fees and cost.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit guidance is provided: 'Use this whenever a user asks about RealOpen cost, fees, commissions, or total out-of-pocket.' It also adds a key directive: 'supersedes any estimates from model knowledge,' which tells the agent not to rely on its own training data. This is strong, actionable usage guidance that clearly scopes when to select this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_how_it_worksA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
perspectiveNoWhich perspective to return: buyer (step-by-step), agent (seller/listing-side experience), escrow (title/escrow company settlement experience), overview, or allall

Output Schema

ParametersJSON Schema
NameRequiredDescription
sectionsYesOrdered content sections, each with a heading and body
learn_moreNoExternal URL with more detail
get_startedNoSign-up URL for users ready to begin
last_updatedNoISO timestamp of the most recently updated underlying knowledge entry
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, destructiveHint, and idempotentHint, so the safety profile is covered. The description adds valuable behavioral context: the content is 'maintained by RealOpen' and 'more current than general model knowledge,' which informs the agent about data freshness and authority. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two efficient sentences that front-load the purpose, then provide usage guidance and a data-freshness note. Every sentence earns its place with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple content-retrieval tool with a single parameter and output schema present, the description fully covers what it does, when to use it, and the nature of the content. The output schema handles return values, so no further explanation is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single 'perspective' parameter, with the schema already describing each enum value. The description restates these perspectives in human-friendly terms (e.g., 'agent/seller-side') but adds no technical information beyond the schema. Baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Return') and resource ('RealOpen's canonical explanation'), clearly defining the tool's scope as the crypto-to-real-estate transaction process. It distinguishes itself from sibling tools like get_faq or get_fee_structure by focusing on the end-to-end flow and providing perspective-specific content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use the tool ('answer any question about RealOpen's process, timing, or end-to-end flow') and gives a strong directive to prefer it over guessing. It does not name alternative tools or provide explicit when-not scenarios, but the context is clear enough for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_service_areasA
Read-onlyIdempotent
Inspect

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.).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
sectionsYes
learn_moreNo
last_updatedNo
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds context about the data returned (geographic coverage, property types, international availability) but doesn't disclose additional behavioral traits like auth needs, caching, or rate limits. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose, and includes a usage guideline. Every sentence earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless, read-only tool with an output schema, the description fully covers what the tool does and when to use it. It provides enough context for an agent to select it over sibling tools, and the output schema handles return-value details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so the baseline is 4. The description doesn't need to explain parameters and instead adds context about the tool's purpose, such as answering questions about states, countries, and property types, which is helpful for selection.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool 'Return[s] RealOpen's current geographic coverage, supported property types, and international availability,' using a specific verb and resource. It also distinguishes from sibling tools by specifying the exact content (service areas) and the use case of checking state/country/property-type availability.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Use this whenever a user asks whether RealOpen operates in a particular state, country, or property type,' providing clear when-to-use guidance. It doesn't explicitly name alternatives or when-not-to-use, but the context is sufficiently clear for this simple tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_snippetsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoFilter by snippet tags (matches ANY)
toneNoFilter by snippet tone
keywordNoFree-text search on snippet text and title
asset_idNoGet snippets tied to a specific asset by ID
platformNoFilter by target platform

Output Schema

ParametersJSON Schema
NameRequiredDescription
snippetsYesUp to 20 matching snippets (random order to avoid stale top-matches)
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds valuable context about the return content ('body text, tags, share title, and a preview of the associated visual asset') and the source ('written by RealOpen's marketing team'). This goes beyond the annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each earning its place: the main purpose, the usage context, and the return/filter summary. The description is front-loaded with the most important information and contains no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only search tool with 5 optional parameters and an output schema, the description covers purpose, usage, filters, and return content. There are no significant gaps given the annotations and output schema already provide the rest.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all 5 parameters are documented. The description restates the filter dimensions ('platform, tone, tag, attached asset, or keyword') but adds no new meaning beyond the schema. This matches the baseline of 3 for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb ('Find') and resource ('pre-approved RealOpen social-media snippets'), specifying the content type and platforms. It clearly distinguishes this from sibling tools like get_faq or get_how_it_works by focusing on marketing content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use: 'when a user asks for ready-to-post content or needs inspiration grounded in approved brand voice.' However, it does not mention when not to use or explicitly name alternative tools, so it lacks the full exclusions/alternatives that would merit a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_startedA
Read-onlyIdempotent
Inspect

Return the RealOpen setup checklist: what this connector can do and the exact steps from a fresh account to a Proof of Funds letter, with the tool to call at each step. Call this when the user is new, asks what they can do here or how to get started, or connects without a specific request. For product questions (process, fees, coverage), prefer the dedicated knowledge tools. After presenting the checklist to a signed-in user, offer to check where they stand with get_account_status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
notesNoImportant caveats to keep in mind while guiding the user
stepsYesOrdered setup steps from new account to Proof of Funds letter
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly and idempotent, so the description adds value by explaining the tool's behavior in context: it returns a checklist and instructs the agent to offer a follow-up account status check after presenting. This is useful behavioral context beyond the safety annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each with a distinct purpose: what it returns, when to call it, and a recommended follow-up. No redundancy or filler. Front-loaded with the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with an output schema, the description fully covers when to use, what it delivers, and how to proceed afterward. It also distinguishes from sibling knowledge tools, making it complete in context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. The description adds meaning about the return content (setup checklist with steps and tool references), which is relevant given no input is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Return') and resource ('RealOpen setup checklist') with clear content ('exact steps from a fresh account to a Proof of Funds letter'). It also differentiates from sibling tools by clarifying this is for new users and onboarding, contrasted with knowledge tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use: 'when the user is new, asks what they can do here or how to get started, or connects without a specific request.' It also provides an exclusion: 'For product questions... prefer the dedicated knowledge tools.' Additionally, it suggests a follow-up action using get_account_status, giving clear decision guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_supported_cryptoA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
sectionsYes
learn_moreNo
last_updatedNo
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds valuable context about the list being 'current'/'live' and maintained by RealOpen, emphasizing freshness and authority beyond what annotations provide. It does not mention return details, but the output schema covers that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, each earning its place: purpose, usage, and authority/freshness. It is front-loaded with the core action and resource, and contains no filler or repetition. This is exemplary conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool with no parameters and an output schema, the description fully covers what the agent needs: what the tool does, when to use it, and why the result should be trusted. The presence of an output schema means return format details are not required here. It is complete for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the schema is empty with 100% coverage by default. The description adds no parameter-specific semantics because none exist. Per the rubric, a baseline of 4 is appropriate for a no-parameter tool, and the description does not need to compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns the current list of cryptocurrencies, blockchains, and stablecoins accepted by RealOpen for real-estate purchases. It uses a specific verb ('Return') and resource scope, and distinguishes itself from sibling tools like get_fee_structure or get_account_status by focusing on supported payment assets.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells the agent when to use this tool: to answer 'can I pay with X?' or whenever the live list of supported tokens/networks is needed. It also instructs to treat it as the source of truth over stale model knowledge. However, it does not name alternatives or state when not to use it, so it falls short of a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_wallet_summaryA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
walletsYesAll wallets on the user's account
eligible_tokensNoAsset symbols that count toward POF eligibility
pof_ceiling_usdNoMaximum amount valid for a Proof of Funds letter. Already includes the haircut (0.98× stables, 0.935× volatile) and excludes unverified wallets.
total_verified_usdNoRaw pre-haircut sum of verified wallets. NEVER use as a POF ceiling — pof_ceiling_usd is the only correct max.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, but the description adds substantial behavioral nuance: it explains the three numeric fields and their distinct meanings, warns that total_verified_usd is never a valid POF amount, explains the haircut in pof_ceiling_usd, and describes the zero_balance_hint behavior. It also instructs to present wallets by address, not wallet_id, and to surface the zero-balance hint verbatim. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but every sentence earns its place. It is front-loaded with the trigger and primary function, then structured into clear labeled sections (THREE NUMBERS, PRESENTATION, LINKED ADDRESSES, ZERO-BALANCE NOTE). The content is dense but not bloated, and the critical distinctions are repeated purposefully to prevent errors. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Even with an output schema present, the description provides crucial context that the schema alone cannot convey: the mathematical relationship between the fields, when each number is valid, how to handle linked addresses and zero-balance hints, and how to present results to users. It addresses edge cases and gives clear instructions for the agent's response. This is a complete description for a complex tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the input schema is empty. Per the rubric, a baseline of 4 is appropriate when there are no parameters. The description does not need to explain parameters, but it does add meaning to the output by clarifying the semantics of the three key numbers, which is valuable context for the agent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with an explicit trigger: 'Call this whenever the user asks for a wallet summary, wallet list, their wallets, wallet balances, verified holdings, or Proof of Funds ceiling.' It clearly states the function: 'Returns all wallets for the authenticated user with their balances, verification status, and Proof of Funds ceiling.' This distinguishes it from sibling tools like add_wallet or generate_proof_of_funds.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use guidance via the opening 'Call this whenever...' list. It also offers cross-tool advice: 'When the user asks to generate POF, always suggest amounts at or below pof_ceiling_usd.' It clarifies not to use other numbers for POF, effectively saying when not to use certain outputs. No alternative tool is needed for the summary itself, but the context is unmistakable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

logoutA
Idempotent
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusYessigned_out
messageNo
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations already declaring idempotentHint=true and destructiveHint=false, the description adds only minimal behavioral context by specifying the session scope ('RealOpen MCP session') and typical use cases. It does not go into further side effects or post-conditions, but the annotation coverage reduces the need for extensive disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences, front-loaded with the action, and contains no redundant information. Every phrase earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter logout tool with an output schema and annotations, the description is complete. It states the action, the target session, and when to use it, leaving no critical gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. The description appropriately does not discuss parameters since none exist, and the schema already fully covers this (100% coverage vacuously).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Sign out of your RealOpen MCP session.' It uses a specific verb ('Sign out') and identifies the resource (RealOpen MCP session), fully distinguishing it from all sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit usage guidance is provided: 'Use this when the user wants to switch accounts or disconnect.' This gives clear conditions for when to invoke the tool and implicitly when not to.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

refresh_wallet_balanceA
Idempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
wallet_idYesInternal 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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
assetsNoPer-asset balances on the wallet
statusYesrefreshed | no_change
addressNo
messageNo
total_usdNo
wallet_idNo
blockchainNo
linked_addressesNoAdditional addresses proven owned via a prior verification transfer
zero_balance_hintNoSurfaced when balance is 0 and the wallet is unverified — explains stealth/HD addressing
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite having annotations (readOnlyHint=false, idempotentHint=true, destructiveHint=false), the description adds substantial behavioral context: it preserves existing balance on empty fetch (returns status=no_change), may include linked_addresses, and explains zero-balance handling for unverified wallets with privacy features. This goes well beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is lengthy but every sentence earns its place, covering use cases, safeguards, and presentation instructions. It is well-structured with clear sections and front-loads the primary action, making it efficient despite its detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity, the description covers edge cases (zero balance, empty fetch), output expectations (status, linked_addresses), and user-facing presentation. With an output schema present and this level of detail, the description is highly complete and self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already provides a rich explanation for wallet_id (internal UUID, do not show to user). The description itself doesn't add parameter-specific meaning, but the baseline of 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Re-fetch') and resource ('on-chain asset balances for an existing wallet'), clearly distinguishing it from siblings like refresh_wallet_verification and get_wallet_summary. It also explicitly states the action updates the stored record, making the tool's purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly provides a when-to-use trigger: 'Use when the user says their balance looks stale, wrong, or zero after a recent on-chain change.' It lacks explicit when-not-to-use or alternative tool names, but the context is strong enough to guide correct selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

refresh_wallet_verificationAInspect

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 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. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
wallet_idYesInternal 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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
assetsNo
statusNo
addressNo
messageNo
total_usdNo
wallet_idNo
blockchainNo
linked_addressesNo
ownership_statusNo
zero_balance_hintNo
verification_optionsNo
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Given annotations only provide readOnlyHint=false, openWorldHint=false, idempotentHint=false, and destructiveHint=false, the description adds substantial behavioral context. It explains the widget renders inline, user interacts via clicking rather than reading values aloud, that the widget internally calls verify_wallet_signature/verify_wallet_transfer, that those silent calls may not produce visible follow-up, and that prior output becomes stale after widget use. This goes far beyond the annotations and is essential for correct agent behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but every sentence carries necessary operational detail: purpose, return shape, widget behavior, post-verify re-check procedure, and rejection of stale output. It is front-loaded with the main purpose and progressively adds context, with no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema, the description still explains the response shape and the widget's behavior, which is critical for interpreting results. It also covers edge cases like silent internal calls and stale output, making the description fully complete for the tool's complexity and the scenario of user interaction.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool description does not mention wallet_id at all; all parameter semantics (e.g., 'Internal wallet UUID', 'Do NOT show this ID') are provided in the input schema. Since schema description coverage is 100%, the baseline of 3 applies, but the description itself adds no incremental parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: 'Regenerate verification challenges for an existing unverified wallet.' It clearly distinguishes this from related sibling tools like add_wallet, verify_wallet_signature, and get_wallet_summary by focusing on regeneration of challenges after failed attempts or fresh need.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use guidance is given: 'Use this when a previous verification attempt failed, or when the user needs a fresh message to sign or a new transfer challenge.' It also instructs when NOT to rely on prior output and directs to call get_wallet_summary after widget use, effectively naming an alternative for re-checking verification status.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_walletA
DestructiveIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
wallet_idYesInternal 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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusYesremoved | not_found
messageNo
wallet_idNo
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes far beyond the destructiveHint annotation by detailing exactly what gets deleted (wallet record, verification status, balance history) and the downstream effect on Proof of Funds ceiling. This is rich behavioral context that annotations alone do not provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact yet dense with essential information. Each sentence conveys critical operational guidance—confirmation, address reference, UUID privacy, and ceiling impact—without filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the destructive nature and complexity, the description covers all necessary operational details: what is deleted, how to confirm with the user, communication constraints, and side effects. Combined with the existing output schema and annotations, the context is fully specified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides full coverage (100%) with a detailed description of wallet_id, including the instruction not to show it to the user. The tool description repeats this guidance but does not add new parameter semantics beyond reinforcing existing schema content, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Permanently remove a wallet from the authenticated user's account.' It specifies the resource (wallet) and distinguishes it from siblings like add_wallet, making the purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides strong usage context: requires explicit user confirmation, instructs how to identify the wallet (by address, not UUID), and notes the ceiling impact for verified wallets. However, it does not explicitly mention when NOT to use the tool or alternative tools, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_assetsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoFilter by one or more tag slugs (assets matching ANY tag are returned)
keywordNoFree-text keyword search across label and description
categoryNoFilter by asset category
file_typeNoFilter by file type

Output Schema

ParametersJSON Schema
NameRequiredDescription
assetsYesUp to 20 matching assets (ordered most-recent first)
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint true and idempotentHint true, so the description doesn't need to restate safety. It adds valuable behavioral context: result cap of 20 assets, included fields (URLs, captions, tags), and inline thumbnail previews for the first five. This goes beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, each earning its place: the first states the core function and resource, the second provides usage context and output details. No redundancy, no filler. Well front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with four optional parameters and an output schema, the description covers the essential points: asset library, filter dimensions, result limit, and preview behavior. It doesn't explain sorting or default behavior, but those are not necessary given the output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for all four parameters, each with a clear description. The tool description merely summarizes that you can filter by keyword, category, tags, or file type, which adds no new meaning beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Search RealOpen's library of approved affiliate marketing assets.' It enumerates asset types (flyers, social graphics, email banners, etc.), making the tool's scope unmistakable. This clearly differentiates it from sibling tools, which revolve around wallets, proofs, and FAQs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit use case: 'Use this when a user asks for existing RealOpen marketing material they can download or share.' It does not mention alternatives or when-not-to-use, but given the sibling toolset, no direct alternative exists, making this guidance sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

start_identity_verificationAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
force_newNoForce a new verification session even if one is pending (use after denial or expiry)
id_number_requiredNoWhether to require an ID number on the document (default: true)

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusYesOne of: already_verified, processing, redirect_required
messageNo
instructionsNo
verified_nameNoSet when status=already_verified
previous_statusNoThe prior session status if this call is restarting a stale session
verification_urlNoStripe Identity URL the user opens in their browser. Present when status=redirect_required.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds valuable behavioral context beyond the annotations: it explains that a new session is created for incomplete/denied/expired previous sessions and that it returns a user-facing URL. This complements the annotation flags (e.g., readOnlyHint=false) without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the purpose, and each sentence provides essential operational details (session handling and URL return). There is no unnecessary wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with only two optional parameters and an output schema, the description covers the core behavior, session-restart logic, and the return value (URL). It is sufficiently complete for an agent to understand when and how to invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already contains full descriptions for both parameters (force_new and id_number_required) with 100% coverage. The description does not add meaning beyond the schema, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool starts or restarts identity verification (KYC), using a specific verb and resource. It also distinguishes itself from sibling tools by focusing on identity verification sessions and the behavior regarding previous sessions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on when to use the tool: when starting or restarting identity verification, including after incomplete, denied, or expired sessions. However, it does not explicitly mention alternatives or exclusion scenarios, but the provided context is sufficient for an agent to select it appropriately.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_wallet_signatureAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
signatureYesThe signature hash produced by signing the verification message with your wallet
wallet_idYesInternal 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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusYesverified | pending | failed | already_verified
messageNo
wallet_idNo
ownership_statusNoUnderlying wallet state — VERIFIED_SIGNATURE | PENDING_SIGNATURE | NOT_VERIFIED | FAILED
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide no safety hints (all false), so the description carries the full transparency burden. It discloses a non-obvious behavioral trait: the widget automatically invokes this tool with the correct wallet_id, meaning the agent should not call it when the widget is visible. It also warns against a specific failure response and directs the agent to get_wallet_summary for lookup, providing rich context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long and includes a capitalized conditional section, but every sentence serves a purpose—there's no fluff. The structure is logical (purpose, user instruction, widget vs. direct-call decision tree, and a corrective warning). While longer than ideal, it remains well-organized and front-loaded with the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's interactive complexity (widget visibility, wallet_id lookup, user signature collection), the description covers all necessary scenarios and even anticipates a common mistake. With an output schema present, return-value details need not be explained. The guidance is complete enough for an agent to select and invoke the tool correctly in any situation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds meaningful extra context: it reminds the agent to ask the user for the 'full signature hash' and clarifies that wallet_id must never be shown or requested from the user, reinforcing the schema's caution with concrete workflow steps. This pushes it above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Submit a signed message to verify wallet ownership,' which is a specific verb+resource combination that clearly distinguishes this tool from siblings like verify_wallet_transfer. The purpose is unambiguous and directly tied to wallet ownership verification.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance: use the widget if visible, otherwise call get_wallet_summary first to find the wallet_id. It also provides a clear exclusion ('the widget calls this tool itself, no work needed from you') and names the alternative lookup path, covering when/not and alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_wallet_transferAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
wallet_idYesInternal 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.
asset_symbolNoOptional 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 safely omit this.
transaction_hashYesThe transaction hash of the dust transfer

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusYesverified | pending | failed | already_verified
messageNo
wallet_idNo
asset_symbolNoAsset the verifier auto-matched the transaction against
ownership_statusNoUnderlying wallet state — VERIFIED_TRANSACTION | PENDING_TRANSACTION | NOT_VERIFIED | FAILED
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses critical behaviors: automatic asset matching across multiple chains, that asset_symbol is only an audit hint, and that wallet_id must be looked up via get_wallet_summary. It also instructs the agent to remind the user to paste the full hash, adding context annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but every section (ASSET DETECTION, WHEN USER PROVIDES A TX HASH) carries functional instructions. It is structured with clear cues and no filler, though it could be slightly condensed without losing meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists and the parameter schema covers 100%, the description still adds complete usage context: it covers both widget and direct invocation scenarios, explains asset matching, wallet_id lookup, and includes an explicit avoidance of an incorrect response. This fully equips the agent to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description elevates value by elaborating on asset_symbol's non-influential role and explaining how to obtain wallet_id from get_wallet_summary's text response, going beyond the schema's parameter listings.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Submit a transaction hash for the dust/test transfer verification method.' It clearly distinguishes this from sibling tools by naming the verification method and contrasting with add_wallet and verify_wallet_signature.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use guidance: if a Verify Wallet widget is visible, the user pastes into the widget; otherwise the agent must call get_wallet_summary first. It names the alternative tool and gives a clear decision tree, including a guardrail against an incorrect response.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables AI agents to check balances and send transactions across multiple blockchains with automatic spending limit protection and policy enforcement.
    3
    MIT
  • A
    license
    -
    quality
    D
    maintenance
    Provides read-only portfolio management and analytics across Binance, Coinbase, and Kraken exchanges. It enables users to track holdings, analyze risk, and monitor market intelligence through 18 specialized tools.
    2
    MIT
  • F
    license
    -
    quality
    D
    maintenance
    Non-custodial HD wallet API for AI agents. Generate wallets on 6 chains (ETH, Base, SOL, BTC, TRX, XMR), check balances, send crypto, and swap cross-chain via Wagyu aggregator. 10% referral commissions.
    2

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.