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

Mercatura

REMOTE · MERCATURA.NETWORK

Claim a $10 Vlad account for an AI agent and open factor accounts on Robinhood Chain.

Available components

−62 this week 0 Trust /100

Last scanned (2 days ago)

Scores higher than 0% of remote servers

Unreachable for 7 days in a row. Last reached 27 Oct 2026.

Category Finance and Payments

Deprecated

This server is marked deprecated in the MCP registry. The registry records this reason: Mercatura has closed and this server is offline.

Dead

Every channel of this server has been unreachable for long enough to be marked dead. Its trust score is pinned to 0 and does not recover automatically: even once the server responds again it stays dead until it is manually reinstated.

Trust breakdown (7 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 → Why this is hard to score →

Endpoint Security11
Transport & Reachability0
Schema Quality & AI Usability0
  • Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.Unverified
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage0
  • Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.Unverified
Tool Safety0
  • Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.Unverified
Capabilities0
  • Capabilities not yet verified: we couldn't read the endpoint's capabilities.Unverified

Unverified: 5 categories

Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.

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 Nov 26 −12

    The score moved with no change recorded against any check. We would rather say so than guess.

  • 2 Nov 26 −13

    The score moved with no change recorded against any check. We would rather say so than guess.

  • 1 Nov 26 −12

    The score moved with no change recorded against any check. We would rather say so than guess.

  • 31 Oct 26 −13

    The score moved with no change recorded against any check. We would rather say so than guess.

  • 30 Oct 26 −12

    The score moved with no change recorded against any check. We would rather say so than guess.

  • 28 Oct 26 0
    • Endpoint reachability: reachable → unreachable ▼ security
    • DNSSEC: fail → unverified ▼ security
    • Stability: 0.10 → unverified ▼ security
    • Authorization: fail → unverified ▼ security
    • Tool safety: pass → unverified ▼ security
    • TLS certificate: pass → unverified ▼ security
    • HSTS header: pass → unverified ▼ security
    • Transport: pass → fail ▼ security
    • Capabilities: fail → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • First check of Schema quality: unverified functional
  • 27 Oct 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • New tool “alerts_unsubscribe”, which the server declares destructive security
    • New tool “factor_alerts_revoke”, which the server declares destructive security
    • Tool “account_request_message” rewrote its description, which is the text the model reads security
    • Tool “merca_lock” rewrote its description, which is the text the model reads security
    • Tool “merca_lock_status” rewrote its description, which is the text the model reads security
    • Schema quality: 8477 → 10136 ▼ functional
    • Destructive annotations: 10% → 18% ▲ functional
    • Server version: 1.6.0 → 1.7.0 functional
    • New tool “activity” functional
    • New tool “alerts_subscribe_webhook” functional
    • New tool “alerts_verify_webhook” functional
    • New tool “factor_alerts_list” functional
    • “account_request_message” added an optional parameter “destination” cosmetic
    • “account_request_message” added an optional parameter “id” cosmetic
    • “account_request_message” added an optional parameter “nonce” cosmetic
    • “account_request_message” added an optional parameter “rules” cosmetic
  • 26 Oct 26 +1
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “merca_lock” rewrote its description, which is the text the model reads security
    • Tool “merca_lock_status” rewrote its description, which is the text the model reads security
    • Tool “merca_request_unlock” rewrote its description, which is the text the model reads security
    • Destructive annotations: 20% → 10% ▼ functional
    • Schema quality: 6425 → 8477 ▼ functional
    • Server version: 1.5.0 → 1.6.0 functional
    • Server version: 1.3.0 → 1.5.0 functional
    • New tool “pay_account” functional
    • New tool “pay_account_fund_eth_transaction” functional
    • New tool “pay_account_open_transaction” functional
    • New tool “pay_account_spender_transaction” functional
    • New tool “pay_account_withdraw_transaction” functional
    • New tool “x402_payment_typed_data” functional
    • New tool “portfolio” functional
    • New tool “shielded_status” functional
    • Tool “merca_lock” changed its title: $MERCA: lock it to pay less in factor fees → $MERCA: lock it for lower factor fees and higher Pay limits cosmetic
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 Nov 2026 · Probed https://mercatura.network/mcp

TLS unreached
DNSSEC inconclusive

Validation of mercatura.network. — Inconclusive

Zone DS Keys Algorithms Outcome
mercatura.network. Error no A/AAAA/CNAME RRset answered for the name
Authentication Inconclusive

We could not reach the endpoint well enough to judge its authorisation posture.

Result Inconclusive

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://mercatura.network/mcp Unreachable
http (plaintext) http://mercatura.network/mcp HTTPS enforced
MCP tools · 44 exposed · ~9,303 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. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
account_request_message ~319

The exact text the account owner's wallet signs (EIP-191) to read or act on its factor account, and when the signature expires (five minutes). request: read, deposit, choose-factor, limits, pay, withdraw, exit, fire-factor, pause, outbox (read the house factor's sealed reviews), outbox-delete (with item, the envelope's name), activity (read its activity), alerts (subscribe: with destination, the webhook URL; rules; and nonce, new random hex), alerts-list (its subscriptions) or alerts-revoke (with id, a subscription's or "all", and nonce).

NameTypeReqDescription
accountstringyesThe factor account's 0x address (open_account returns it). Accounts are found by address, never by agentId.
destinationstring–alerts only: the webhook URL the alerts go to.
idstring–alerts-revoke only: the subscription's id, or all.
issuedstring–Optional ISO 8601 UTC time; now when left out.
itemstring–outbox-delete only: the envelope's name.
noncestring–alerts and alerts-revoke: 16 to 64 random lowercase hex characters, new for every request (it works once).
requeststringyes–
rulesstring–alerts only: the rules, comma-separated (factorMoves, factorPayments, factorFees, factorWithdrawals, factorChanges).
walletstringyesA 0x address.

No output schema declared.

No examples provided.

activity ~263

Newest first: a Vlad account's claim, money added, gains out, withdrawals, moves, standing-order runs and its fund's trades (Lapo's), and its wallet's pay accounts' payments (with the key that signed), USDG in, withdrawals and key or owner changes. Each row has its time, transaction and one plain sentence. ref: an agentId, a wallet or a pay account. A factor account instead: account and the owner's signed request (auth, request "activity"). Read from Mercatura's index of Robinhood Chain, every 5 minutes: no chain read.

NameTypeReqDescription
accountstring–Instead of ref: a factor account, for its owner (with auth).
authobject–With account: the owner's signed request for request "activity".
beforestring–Optional: a previous answer's next, for older rows.
kindsstring–Optional, comma-separated: payments, in, out, trades, changes.
limitinteger––
refstring|integer–An agentId (a whole number), a wallet, or a pay account (a 0x address).
sinceinteger–Optional: only rows at or after this unix time (seconds).

No output schema declared.

No examples provided.

alerts_subscribe_webhook ~544

Subscribes an https webhook to a subject's events: ref, an agentId (a claimed Vlad account), a pay account, or a wallet that holds one. Mercatura POSTs { "type": "mercatura.webhook.verify", "nonce" } and the endpoint must answer 2xx with JSON { "verify": <hex HMAC-SHA256 of the nonce, keyed with the secret> }. The answer is pending and shows the signing secret once: set it on the endpoint, then call alerts_verify_webhook (Mercatura also tries every 5 minutes; unverified, it is deleted after 10). Each alert is a JSON POST with X-Mercatura-Timestamp and X-Mercatura-Signature: sha256=<hex HMAC-SHA256 of the timestamp, a dot, and the raw body, keyed with the secret>; 3 tries with backoff; turned off after 20 straight failures; at most one alert per rule per 10 minutes (more go together). The answer's unsubscribe.token stops it (alerts_unsubscribe). URL: https, standard port, a host name (no IP address). A factor account instead: account, auth for request "alerts" signed over this destination, these rules and nonce (account_request_message builds the text), and nonce.

NameTypeReqDescription
accountstring–Instead of ref: a factor account, for its owner (with auth and nonce).
authobject–With account: the owner's signed request for request "alerts".
balanceUnderUsdnumber–With balanceUnder: dollars.
dailySpendUsdnumber–With dailySpend: dollars.
noncestring–With account: the nonce in the signed text; it works once.
refstring|integer–An agentId (a whole number), a wallet, or a pay account (a 0x address).
rulesarrayyesWhat to be told about. Public subjects: payments (every payment from a pay account), dailySpend (with dailySpendUsd: a pay account's UTC-day spending passes it), spenderLimit (a spender key at 80% of…
urlstringyesThe https URL to POST alerts to.

No output schema declared.

No examples provided.

alerts_unsubscribe ~51

Stops a push or webhook subscription with the unsubscribe token it was given (every alert body carries it too). The subscription and its URL or push keys are deleted.

NameTypeReqDescription
tokenstringyesThe unsubscribe token.

No output schema declared.

No examples provided.

alerts_verify_webhook ~93

For a webhook subscription that is still pending: Mercatura POSTs its check now ({ "type": "mercatura.webhook.verify", "nonce" }) and the subscription is active once the endpoint answers { "verify": <hex HMAC-SHA256 of the nonce, keyed with the secret> }. token: the unsubscribe token the subscription was given.

NameTypeReqDescription
tokenstringyesThe subscription's unsubscribe token.

No output schema declared.

No examples provided.

balance_sheet ~193

The factor account at this address, for its owner only: the factor and its terms, the mandate's limits, approved desks and payees, the balance sheet by desk in dollars (FactorAccount.balanceSheet()), fees owed and recent moves. Needs the owner's signed request (auth) for request "read"; any other wallet gets the same refusal whether or not the address is an account. On chain the account's balances and moves are public anyway.

NameTypeReqDescription
accountstringyesThe factor account's 0x address (open_account returns it). Accounts are found by address, never by agentId.
authobjectyesThe account owner's signed request: sign the text account_request_message returns (EIP-191 personal_sign) with the owner's own key; it must recover to owner(), so a contract-wallet owner cannot use t…

No output schema declared.

No examples provided.

choose_factor ~449

The unsigned chooseFactor(factorId, version) transaction: the account copies the factor's current terms (version shown in the answer); a change the factor publishes later applies only after the owner chooses it again. Switching from another factor charges that factor's fee due at that moment: A fee is charged at fire, exit or switch on the gain over the mark, using the lowest daily sample so far, or today's value if no day has passed. A factor chosen again starts at the higher of its old mark and today's value. A switch carries a gas limit of 13,000,000; a lower one reverts with NeedGas. Refused for a factor that is not listed or has stopped. A client's $MERCA tier lowers what it is charged: Lock $MERCA and pay less in factor fees: 100,000 $MERCA, 10% less; 1,000,000, 15% less; 10,000,000, 20% less. The factor's share never changes; the discount comes out of Mercatura's cut. Tiers count $MERCA locked in the factor registry; ask to unlock and it comes back 7 days later. These are the launch numbers; Mercatura can change them. Each transaction comes back with its gas limit (gas): send it with that limit. A call to the account carries at least 4,500,000: its fee step needs about 3,370,000, and less reverts with NeedGas. Needs the owner's signed request (auth) for request "choose-factor".

NameTypeReqDescription
accountstringyesThe factor account's 0x address (open_account returns it). Accounts are found by address, never by agentId.
authobjectyesThe account owner's signed request: sign the text account_request_message returns (EIP-191 personal_sign) with the owner's own key; it must recover to owner(), so a contract-wallet owner cannot use t…
factorIdstring|integeryesThe factor's ERC-8004 agentId, from list_factors.

No output schema declared.

No examples provided.

delete_outbox_item ~141

Removes one envelope from the outbox, for the owner's signed request (request "outbox-delete", with item = the envelope's name).

NameTypeReqDescription
accountstringyesThe factor account's 0x address (open_account returns it). Accounts are found by address, never by agentId.
authobjectyesThe account owner's signed request: sign the text account_request_message returns (EIP-191 personal_sign) with the owner's own key; it must recover to owner(), so a contract-wallet owner cannot use t…
namestringyes–

No output schema declared.

No examples provided.

delivery_key_typed_data ~196

The EIP-712 typed data the account's owner signs (eth_signTypedData_v4, from the wallet owner() returns) to register an X25519 delivery key: domain Mercatura delivery, version 1, chain 4663, verifyingContract the account; DeliveryKey(address account, bytes32 pub, uint64 issuedAt). Make the key pair on your own machine; only the public half (pub) is sent anywhere. pub of all zeros revokes. Each registration needs a newer issuedAt than the last.

NameTypeReqDescription
accountstringyesThe factor account's 0x address (open_account returns it). Accounts are found by address, never by agentId.
issuedAtinteger|string–Optional unix seconds; now when left out. Sign and register the same value.
pubstringyesThe 32-byte X25519 public key, hex (all zeros revokes).

No output schema declared.

No examples provided.

deposit ~292

The unsigned transaction that puts money into the account once it is open: a plain transfer of the token (ETH as value) from the owner's wallet, booked by the account as money put in. Each transaction comes back with its gas limit (gas): send it with that limit. A call to the account carries at least 4,500,000: its fee step needs about 3,370,000, and less reverts with NeedGas. Needs the owner's signed request (auth) for request "deposit".

NameTypeReqDescription
accountstringyesThe factor account's 0x address (open_account returns it). Accounts are found by address, never by agentId.
amountstring|numberyesA decimal amount in the token's own units, like "25" or "0.5".
authobjectyesThe account owner's signed request: sign the text account_request_message returns (EIP-191 personal_sign) with the owner's own key; it must recover to owner(), so a contract-wallet owner cannot use t…
tokenstringyesUSDG, ETH, WETH, or a stock token symbol (SPY, QQQ, NVDA, TSLA, AAPL, GOOGL, MSFT, SPCX, PLTR, COIN, MSTR, GME).

No output schema declared.

No examples provided.

factor_alerts_list ~151

For a factor account's owner: every alert subscription on the account (id, channel, the host it goes to, rules, created, active, pending or off). Needs the owner's signed request for request "alerts-list".

NameTypeReqDescription
accountstringyesThe factor account's 0x address (open_account returns it). Accounts are found by address, never by agentId.
authobjectyesThe account owner's signed request: sign the text account_request_message returns (EIP-191 personal_sign) with the owner's own key; it must recover to owner(), so a contract-wallet owner cannot use t…

No output schema declared.

No examples provided.

factor_alerts_revoke ~200

For a factor account's owner: stops one alert subscription (id) or every one ("all"); each is deleted with its URL or push keys. Needs the owner's signed request for request "alerts-revoke", signed over this id and nonce (account_request_message builds the text); the nonce works once.

NameTypeReqDescription
accountstringyesThe factor account's 0x address (open_account returns it). Accounts are found by address, never by agentId.
authobjectyesThe account owner's signed request: sign the text account_request_message returns (EIP-191 personal_sign) with the owner's own key; it must recover to owner(), so a contract-wallet owner cannot use t…
idstringyesA subscription's id (factor_alerts_list), or all.
noncestringyesThe nonce in the signed text.

No output schema declared.

No examples provided.

fire_factor ~360

The unsigned fire() transaction for the owner. With withdrawAllTo it is exitAll(to) instead: everything withdrawn and the factor fired, in one transaction (sign the request as "fire-factor"). Either way the fee due at that moment is charged first: A fee is charged at fire, exit or switch on the gain over the mark, using the lowest daily sample so far, or today's value if no day has passed. A factor chosen again starts at the higher of its old mark and today's value. fire() carries a gas limit of 10,000,000 and exitAll(to) 30,000,000; a lower one reverts with NeedGas, and a wallet must not estimate exitAll's gas: with less, a loaded account's exit stops unwinding and sends desk shares home instead of USDG. Each transaction comes back with its gas limit (gas): send it with that limit. A call to the account carries at least 4,500,000: its fee step needs about 3,370,000, and less reverts with NeedGas. Needs the owner's signed request (auth) for request "fire-factor".

NameTypeReqDescription
accountstringyesThe factor account's 0x address (open_account returns it). Accounts are found by address, never by agentId.
authobjectyesThe account owner's signed request: sign the text account_request_message returns (EIP-191 personal_sign) with the owner's own key; it must recover to owner(), so a contract-wallet owner cannot use t…
withdrawAllTostring–Optional: also withdraw everything to this address, in the same transaction.

No output schema declared.

No examples provided.

list_factors ~74

Every listed factor (an AI agent that manages money for other agents) with its mandate's limits (and its plain text where Mercatura publishes it), its fee, its record from the ERC-8004 Reputation Registry and its place in the directory, which is ordered by record. It never shows which clients a factor serves.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

merca_lock ~319

Unsigned transactions for `wallet`: approve the factor registry, then lock(amount). It counts at once for the accounts this wallet owns. Lock $MERCA and pay less in factor fees: 100,000 $MERCA, 10% less; 1,000,000, 15% less; 10,000,000, 20% less. The factor's share never changes; the discount comes out of Mercatura's cut. Tiers count $MERCA locked in the factor registry; ask to unlock and it comes back 7 days later. These are the launch numbers; Mercatura can change them. The same lock raises Mercatura Pay's daily limits: per payer 200 settles with none, 500 / 1,000 / 2,500 at 100,000 / 1,000,000 / 10,000,000 locked; per merchant 400, then 1,000 / 2,500 / 10,000; once the free settles are used up for the day, a locker's settles go on from their own budget. A pay account counts its current owner's lock. Half of the factor fees Mercatura earns buys $MERCA once it reaches $5 and burns it to 0x000000000000000000000000000000000000dEaD. Listing a factor needs no $MERCA.

NameTypeReqDescription
amountstring|numberyes$MERCA, like "100000".
walletstringyesA 0x address.

No output schema declared.

No examples provided.

merca_lock_status ~325

The $MERCA a wallet has locked in the factor registry, how much counts for its tier (locked, no unlock requested), when a requested unlock is ready, and its Mercatura Pay tier (pay: its daily caps as a payer and a merchant). A wallet balance never counts. Lock $MERCA and pay less in factor fees: 100,000 $MERCA, 10% less; 1,000,000, 15% less; 10,000,000, 20% less. The factor's share never changes; the discount comes out of Mercatura's cut. Tiers count $MERCA locked in the factor registry; ask to unlock and it comes back 7 days later. These are the launch numbers; Mercatura can change them. The same lock raises Mercatura Pay's daily limits: per payer 200 settles with none, 500 / 1,000 / 2,500 at 100,000 / 1,000,000 / 10,000,000 locked; per merchant 400, then 1,000 / 2,500 / 10,000; once the free settles are used up for the day, a locker's settles go on from their own budget. A pay account counts its current owner's lock. Half of the factor fees Mercatura earns buys $MERCA once it reaches $5 and burns it to 0x000000000000000000000000000000000000dEaD.

NameTypeReqDescription
walletstringyesA 0x address.

No output schema declared.

No examples provided.

merca_request_unlock ~68

The unsigned requestUnlock() transaction for `wallet`: all its locked $MERCA stops counting at once, for factor fees and Mercatura Pay's limits alike, and can be taken back with merca_unlock 7 days later.

NameTypeReqDescription
walletstringyesA 0x address.

No output schema declared.

No examples provided.

merca_unlock ~48

The unsigned unlock() transaction for `wallet`, once 7 days have passed since its requestUnlock; says when it is ready otherwise.

NameTypeReqDescription
walletstringyesA 0x address.

No output schema declared.

No examples provided.

open_account ~226

Checks the agent's ERC-8004 identity and that `wallet` may open its account (the identity's agent wallet, or its owner when none is set), then returns the account's address and the unsigned AccountFactory.open(agentId, salt, owner) transaction for that wallet. Without a salt Mercatura makes one, returns it once and keeps nothing: keep it until the open transaction succeeds. Never send money to the address before then. Name another wallet as owner so owner() does not point back at the agent. One account per agent: the factory refuses a second. The identity checks still run.

NameTypeReqDescription
agentIdstring|integeryesThe ERC-8004 agentId on Robinhood Chain, as a decimal string or integer.
ownerstring–Optional: the wallet that will own the account; the sending wallet when left out.
saltstring–Optional: 32 random bytes from a secure source. Left out, Mercatura makes one and returns it once.
walletstringyesThe agent's wallet that sends the open transaction.

No output schema declared.

No examples provided.

pay ~430

The unsigned pay(payee, token, amount) transaction for the owner, to a payee the owner approved. With stealth instead of payee: approve a fresh one-time address (dailyCapUsd is its cap per UTC day for the factor), pay it, then announce it. The owner pays in counted tokens only; the factor pays only in USDG, within each payee's cap. Each transaction comes back with its gas limit (gas): send it with that limit. A call to the account carries at least 4,500,000: its fee step needs about 3,370,000, and less reverts with NeedGas. Needs the owner's signed request (auth) for request "pay".

NameTypeReqDescription
accountstringyesThe factor account's 0x address (open_account returns it). Accounts are found by address, never by agentId.
amountstring|numberyesA decimal amount in the token's own units, like "25" or "0.5".
authobjectyesThe account owner's signed request: sign the text account_request_message returns (EIP-191 personal_sign) with the owner's own key; it must recover to owner(), so a contract-wallet owner cannot use t…
dailyCapUsdstring|number–Dollars, like "500".
payeestring–A 0x address.
stealthstring–Instead of an address: a stealth meta-address (st:eth:0x<spending key><viewing key>) or the 0x address that registered one in the ERC-6538 registry. The money goes to a fresh one-time address and an…
tokenstringyesUSDG, ETH, WETH, or a stock token symbol (SPY, QQQ, NVDA, TSLA, AAPL, GOOGL, MSFT, SPCX, PLTR, COIN, MSTR, GME).

No output schema declared.

No examples provided.

pay_account ~181

One pay account: whether the address is one, its USDG, its owner, its top-up target and, with spender, that key's limits (per payment, per UTC day, expiry), what it spent today, what it has left and whether it is retired for good. Give account, or owner (and salt, zero when left out) to find the account open(owner, salt) gives. One read, kept 120 seconds.

NameTypeReqDescription
accountstring–The pay account's 0x address.
ownerstring–Instead of account: the owner's wallet; the account is found from it and salt.
saltstring–Optional, with owner: 32 bytes; zero when left out.
spenderstring–Optional: a spender key's address, to read its limits and what it has left today.

No output schema declared.

No examples provided.

pay_account_fund_eth_transaction ~178

The unsigned PayAccountFactory.fundWithETH(account, minUsdg) transaction with the ETH as value: swapped to USDG on the way in and sent to the account, at least minUsdg or it reverts (default: Chainlink's ETH price less 1%; the factory itself refuses below Chainlink less 2%, and while that price is older than 48 hours). Any wallet can fund any pay account. Sending USDG straight to the account works too.

NameTypeReqDescription
accountstringyesThe pay account's 0x address.
ethstring|numberyesETH to put in, like "0.01".
fromstring–Optional: the wallet that sends it.
minUsdgstring|number–Optional: the least USDG the swap may give.

No output schema declared.

No examples provided.

pay_account_open_transaction ~225

The account's address and the unsigned PayAccountFactory.open(owner, salt) transaction, or with eth, openWithETH: the ETH is swapped to USDG on the way in (WETH/USDG pool), at least minUsdg or it reverts (minUsdg defaults to Chainlink's ETH price less 1%; the factory itself refuses below Chainlink less 2%, and while that price is older than 48 hours). Anyone can send it; the account is the owner's. salt is zero when left out: one account per owner.

NameTypeReqDescription
ethstring|number–Optional: ETH to put in, swapped to USDG, like "0.01".
fromstring–Optional: the wallet that sends it; the owner when left out.
minUsdgstring|number–Optional with eth: the least USDG the swap may give.
ownerstringyesThe agent's wallet that will own the pay account.
saltstring–Optional: 32 bytes; zero when left out.

No output schema declared.

No examples provided.

pay_account_spender_transaction ~262

For the account's owner: the unsigned setSpender(key, perPayment, perDay, expiry) transaction, so a separate key on the agent's machine can pay x402 APIs from the account within those limits (setting a key again replaces its limits), or with remove: true, removeSpender(key). A stolen spender key can spend at most its daily limit per UTC day (up to twice that across a midnight) until it is removed or expires; it can never withdraw. A removed key is retired for good: it can never be set again, so make a new key instead. Make the key on your own machine and send only its address.

NameTypeReqDescription
accountstringyesThe pay account's 0x address.
daysinteger|number|string–Days until the key expires, 1 to 3650; 30 when left out.
perDayUsdgstring|number–Most USDG per UTC day, like "5".
perPaymentUsdgstring|number–Most USDG per payment, like "0.10".
removeboolean–true removes the key instead: it is retired for good.
spenderstringyesThe spender key's address.

No output schema declared.

No examples provided.

pay_account_withdraw_transaction ~91

For the account's owner: the unsigned withdraw(amount, to) transaction. Any amount, or "all", at any time; no one else can withdraw.

NameTypeReqDescription
accountstringyesThe pay account's 0x address.
amountstring|numberyesUSDG, like "12.5", or "all".
tostringyesWhere the USDG goes.

No output schema declared.

No examples provided.

portfolio ~207

What a wallet or an agent holds at Mercatura and how it has done. Give a wallet (every Vlad account it holds, owns as the agent's ERC-8004 owner, or is paid by through a standing order) or an agentId (its own account). Returns totals (value, gain since the claim in dollars and percent, the past day), each stock and coin held through the fund with amount, price, value, past-day change, share and target, each account, and the value one point an hour (series.points, [unix, dollars]). Read from the program feed: no chain read. Factor accounts are not in it: their owner reads them with a signed request (balance_sheet).

NameTypeReqDescription
agentIdstring|integer–The ERC-8004 agentId on Robinhood Chain, as a decimal string or integer.
walletstring–A wallet: the agent's own, or the one that owns the agent's ERC-8004 identity.

No output schema declared.

No examples provided.

read_outbox ~192

The house factor's envelopes for this account, newest first, for the owner's signed request (request "outbox"). Each is v2: { v, account, kind, at, sealed, sig }, sig by the factor key. On your own machine, check sig against account.factor() on chain, then decrypt sealed with the X25519 secret key (scripts/open-envelope.mjs, or the snippet at /developers#delivery).

NameTypeReqDescription
accountstringyesThe factor account's 0x address (open_account returns it). Accounts are found by address, never by agentId.
authobjectyesThe account owner's signed request: sign the text account_request_message returns (EIP-191 personal_sign) with the owner's own key; it must recover to owner(), so a contract-wallet owner cannot use t…

No output schema declared.

No examples provided.

register_delivery_key ~179

Registers (or, with pub all zeros, revokes) the owner's X25519 delivery key: signature is the account owner's EIP-712 signature over the typed data delivery_key_typed_data returns, checked against owner() on chain; issuedAt must be newer than the registered key's and at most 5 minutes ahead; a low-order key is refused; at most 5 keys a UTC day per account (a revoke is always taken). The house factor checks it again, then seals each review and record for this account to that key.

NameTypeReqDescription
accountstringyesThe factor account's 0x address (open_account returns it). Accounts are found by address, never by agentId.
issuedAtinteger|stringyesUnix seconds: the value signed.
pubstringyes–
signaturestringyes–

No output schema declared.

No examples provided.

set_mandate ~416

Unsigned transactions that set what the factor may use: desks (treasury, runway, portfolio or sweep, or a catalog adapter address) with ceilings per move and per UTC day, or approved: false to stop it; payees with a cap in dollars per UTC day (0 removes one), each a 0x address or a stealth recipient (a fresh one-time address, approved, then announced last); the exact claim calls that bring creator fees in (Pons claim(), Bankr collectFees(poolId)), at most 1,024 bytes of calldata each; and pausing the factor. The factor's own mandate limits come with it when it is chosen. Each transaction comes back with its gas limit (gas): send it with that limit. A call to the account carries at least 4,500,000: its fee step needs about 3,370,000, and less reverts with NeedGas. Needs the owner's signed request (auth) for request "limits".

NameTypeReqDescription
accountstringyesThe factor account's 0x address (open_account returns it). Accounts are found by address, never by agentId.
authobjectyesThe account owner's signed request: sign the text account_request_message returns (EIP-191 personal_sign) with the owner's own key; it must recover to owner(), so a contract-wallet owner cannot use t…
claimsarray––
desksarray––
pausedboolean–true pauses the factor: it cannot act until unpaused. Owner actions are never paused.
payeesarray––
weekLossPctstring|number–The owner's own limit on what the factor's moves may lose together over 7 UTC days, as a percent of the account's value (0.01 to 10); the factor is held to the lower of it and its mandate's. 0 remove…

No output schema declared.

No examples provided.

shielded_status ~159

Mercatura's shielded ETH pool on Robinhood Chain (0xbow's Privacy Pools v1 plus Mercatura's deposit gate; it uses an association set): whether it is live and, if not, what is not yet; whether deposits are open; the approved deposits in the association set, which is what a payment hides among; the minimum and per-deposit cap; the relayer (online, fee); the contracts; the screening rules; and what the chain shows and hides. The same answer as GET /v1/shielded. Deposits, proofs and payments run in the agent's own client, mercatura-shielded (install with client.install), never on Mercatura's servers: the note secret is the money.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

stealth_address ~273

Live. A fresh ERC-5564 (scheme 1) stealth address for a stealth meta-address or for the 0x address that registered one in the ERC-6538 registry, with its ephemeral public key, view tag and the unsigned Announcer.announce transaction to send after paying. Optional token and amount go into the announcement's metadata. Mercatura sees which meta-address the address belongs to and keeps neither that nor the ephemeral key; the payment, its amount and time, the payer and the announcement's sender stay public on chain.

NameTypeReqDescription
amountstring|number–A decimal amount in the token's own units, like "25" or "0.5".
fromstring–Optional: the wallet that will pay and announce.
metaAddressstring–st:eth:0x<spending key><viewing key> (compressed secp256k1 keys).
registrantstring–Or: the address that registered a meta-address in the ERC-6538 registry.
tokenstring–USDG, ETH, WETH, or a stock token symbol (SPY, QQQ, NVDA, TSLA, AAPL, GOOGL, MSFT, SPCX, PLTR, COIN, MSTR, GME).

No output schema declared.

No examples provided.

verify_account ~146

AccountFactory.openedWith(account, agentId, salt): whether this account was opened by that agent with that salt. Both are public in the opening transaction once it ran, so this proves nothing about who controls the account; control is the owner's signed request. The salt goes to Mercatura's RPC provider inside the call.

NameTypeReqDescription
accountstringyesThe factor account's 0x address (open_account returns it). Accounts are found by address, never by agentId.
agentIdstring|integeryesThe ERC-8004 agentId on Robinhood Chain, as a decimal string or integer.
saltstringyesThe salt the account was opened with.

No output schema declared.

No examples provided.

vlad_account ~82

One agent's Vlad account: fund, shares, value in dollars, unlock date, and gains: how much could come out today (availableUsd), how much has (takenOutUsd) and when next (nextAt).

NameTypeReqDescription
agentIdstring|integeryesThe ERC-8004 agentId on Robinhood Chain, as a decimal string or integer.

No output schema declared.

No examples provided.

vlad_cancel_standing_order_transaction ~89

For the order's wallet: the unsigned StandingOrders.cancel(agentId) transaction. The order stops and the account moves straight back to that wallet, locked as before.

NameTypeReqDescription
agentIdstring|integeryesThe ERC-8004 agentId on Robinhood Chain, as a decimal string or integer.
walletstringyesThe wallet of the account's standing order.

No output schema declared.

No examples provided.

vlad_check_eligibility ~129

Whether this ERC-8004 agent can claim a Vlad account from this wallet. Returns every check (identity, the wallet the identity names, one account per agent, owner and wallet, wallet history, seeds left, today's cap) with pass or fail and a plain reason. The wallet must be the identity's agent wallet, or its owner when no agent wallet is set.

NameTypeReqDescription
agentIdstring|integeryesThe ERC-8004 agentId on Robinhood Chain, as a decimal string or integer.
walletstringyesThe wallet that will send the claim.

No output schema declared.

No examples provided.

vlad_claim_transaction ~174

Runs the checks, gets Mercatura's signed voucher (good for 15 minutes) and returns the exact claim transaction { to, data, chainId, value } for `wallet` to sign and send itself on Robinhood Chain. Nothing is claimed until that wallet sends it. fund: 0 Conservative, 1 Moderate, 2 Aggressive.

NameTypeReqDescription
agentIdstring|integeryesThe ERC-8004 agentId on Robinhood Chain, as a decimal string or integer.
fundintegeryes0 Conservative (mostly dollars and the S&P 500), 1 Moderate (index funds and big tech), 2 Aggressive (fast stocks and the chain's coins).
walletstringyesThe wallet that will send the claim: the same one the eligibility check passed for.

No output schema declared.

No examples provided.

vlad_contribute_transaction ~225

Anyone can add USDG to an agent's Vlad account. Runs the checks (the account is open, the fund takes additions now, the fund's room today, and the sending wallet's USDG when `from` is given) and returns two unsigned transactions in order: USDG.approve(VladBank, exactly amount), then VladBank.contribute(agentId, amount). Money added buys more of the account's fund, is the agent's, and unlocks with the account; neither the sender nor Mercatura can take it back. Additions pause while a price the fund uses is stale (stock prices stop over weekends).

NameTypeReqDescription
agentIdstring|integeryesThe ERC-8004 agentId on Robinhood Chain, as a decimal string or integer.
amountstring|numberyesDollars of USDG, like "25" or "2.50" (at least 0.01, at most 6 decimals).
fromstring–Optional: the wallet that will send the USDG; its balance is checked.

No output schema declared.

No examples provided.

vlad_program ~60

Vlad accounts right now: the seed, how many accounts are open to claim, claims today and the daily cap, the three funds (0 Conservative, 1 Moderate, 2 Aggressive) with share prices, holdings and targets, and the rules.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

vlad_standing_order ~125

A standing order makes a Vlad account pay its agent's bills from its gains each day: creditsPct as AI credits on Raeto (one balance for 400+ models and APIs), at most gasPct to keep the wallet's ETH at gasTargetEth, and the rest in USDG to the wallet. The seed and money added stay locked. Returns the order, whether it is running and what it has paid so far.

NameTypeReqDescription
agentIdstring|integeryesThe ERC-8004 agentId on Robinhood Chain, as a decimal string or integer.

No output schema declared.

No examples provided.

vlad_standing_order_transactions ~318

For the account's own wallet: two unsigned transactions in order, StandingOrders.setOrder(agentId, creditsBps, gasBps, gasTarget, minRun), then VladBank.moveTo(agentId, StandingOrders). Send setOrder first and wait for it to confirm before sending moveTo. For the wallet of an order already running: setOrder alone, to change its terms. Defaults: credits 75, gas 25 (percent of each day's gains), gasTarget 0.0003 ETH (at most 0.01), minRun 1 dollar (at least 0.50). Cancel any time; the account moves straight back.

NameTypeReqDescription
agentIdstring|integeryesThe ERC-8004 agentId on Robinhood Chain, as a decimal string or integer.
creditsstring|number–Percent of each day's gains paid as AI credits on Raeto, 0 to 100. Default 75.
gasstring|number–Percent of each day's gains, at most, used to top the wallet's ETH up to gasTarget. Default 25.
gasTargetstring|number–ETH the wallet is topped up to, at most 0.01. Default 0.0003.
minRunstring|number–Dollars of gains a day before anything is paid, at least 0.50. Default 1.
walletstringyesThe account's wallet now (or the wallet of its running order).

No output schema declared.

No examples provided.

vlad_withdraw_gains_transaction ~126

Before unlock, once a UTC day, the account's wallet can take its gains out in kind. Returns the account's gains now and the unsigned withdrawGains transaction for the account's own wallet to sign and send; the contract refuses it from any other wallet, on a day gains already came out, while a price is stale, or when there is no gain.

NameTypeReqDescription
agentIdstring|integeryesThe ERC-8004 agentId on Robinhood Chain, as a decimal string or integer.
tostringyesWhere the gains go.

No output schema declared.

No examples provided.

vlad_withdraw_transaction ~95

After the account unlocks (365 days from the claim), its wallet takes everything out in kind. Returns the account and the unsigned withdraw transaction for the account's own wallet to sign and send; refused by the contract before unlock.

NameTypeReqDescription
agentIdstring|integeryesThe ERC-8004 agentId on Robinhood Chain, as a decimal string or integer.
tostringyesWhere everything goes.

No output schema declared.

No examples provided.

withdraw ~377

The unsigned withdraw(token, amount, to) transaction for the owner: any asset, any amount, no delay. amount "all" takes the whole balance of that token. With stealth instead of to: withdraw to a fresh one-time address, then announce it. Each transaction comes back with its gas limit (gas): send it with that limit. A call to the account carries at least 4,500,000: its fee step needs about 3,370,000, and less reverts with NeedGas. Needs the owner's signed request (auth) for request "withdraw".

NameTypeReqDescription
accountstringyesThe factor account's 0x address (open_account returns it). Accounts are found by address, never by agentId.
amountstring|numberyesA decimal amount, or "all".
authobjectyesThe account owner's signed request: sign the text account_request_message returns (EIP-191 personal_sign) with the owner's own key; it must recover to owner(), so a contract-wallet owner cannot use t…
stealthstring–Instead of an address: a stealth meta-address (st:eth:0x<spending key><viewing key>) or the 0x address that registered one in the ERC-6538 registry. The money goes to a fresh one-time address and an…
tostring–Where the money goes (or give stealth).
tokenstringyesUSDG, ETH, WETH, or a stock token symbol (SPY, QQQ, NVDA, TSLA, AAPL, GOOGL, MSFT, SPCX, PLTR, COIN, MSTR, GME).

No output schema declared.

No examples provided.

x402_payment_typed_data ~252

From an x402 402 response (its PAYMENT-REQUIRED header, base64, or the decoded JSON; a v1 body works too) and the payer: the EIP-712 TransferWithAuthorization to sign and the payment to send back (PAYMENT-SIGNATURE for v2, X-PAYMENT for v1), for USDG on Robinhood Chain. A wallet signs under USDG's domain (any facilitator settles it); a pay account's owner or spender key signs under the domain Mercatura Pay, version 1, chain 4663, verifyingContract the pay account (Mercatura's facilitator settles it). kind says which; left out, the factory is asked. Sign on your own machine: this tool never sees a key.

NameTypeReqDescription
acceptinteger–Optional: the index in accepts to pay; the first USDG option on Robinhood Chain when left out.
kindstring–Optional: which the payer is.
payerstringyesThe address that pays: the wallet, or the pay account.
paymentRequiredstring|objectyesThe 402's PAYMENT-REQUIRED header (base64) or its decoded JSON.

No output schema declared.

No examples provided.

Install

How do I install the Mercatura MCP server?

Mercatura is a hosted endpoint at https://mercatura.network/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · mercatura.network

# add to Claude Code
claude mcp add --transport http network-mercatura-mercatura 'https://mercatura.network/mcp'
Common questions

What is the Mercatura MCP server?

Mercatura is an MCP server listed in the public MCP registry as network.mercatura/mercatura. Claim a $10 Vlad account for an AI agent and open factor accounts on Robinhood Chain. This page covers its hosted endpoint (https://mercatura.network/mcp).

Is the Mercatura MCP server safe to use?

Mercatura scores 0 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Mercatura MCP server expose?

Mercatura exposes 44 tools: vlad_program, vlad_check_eligibility, vlad_claim_transaction, vlad_account, vlad_withdraw_gains_transaction, and 39 more. Their descriptions and schemas cost roughly 9,303 tokens of context every time the server is loaded.

Does the Mercatura MCP server require authentication?

Its publisher declares no required credentials for Mercatura. We have not been able to confirm that against the live endpoint, and a server can require authorisation without declaring it here.

Is the Mercatura MCP server still maintained?

Mercatura is marked deprecated in the MCP registry. We last reached this channel on 27 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.