ADEXTO
REMOTE · ADEXTO.XYZ · SCANNED OCT 7
Launch, buy, stake and claim on bonding-curve token markets across five chains, with your own key.
Available components
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 Security63
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (buy_token). See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability67
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 3035 tokens (~216/item across 14 items; 14 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management17
- Stability observed for 5 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety92
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 2 of 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "how_to_pay" implies "pay" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Partial
- An AI judge read all 15 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
How do I install the ADEXTO MCP server?
ADEXTO is a hosted endpoint at https://adexto.xyz/api/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 · adexto.xyz
claude mcp add --transport http xyz-adexto-mcp 'https://adexto.xyz/api/mcp'
{
"mcpServers": {
"xyz-adexto-mcp": {
"url": "https://adexto.xyz/api/mcp"
}
}
} {
"servers": {
"xyz-adexto-mcp": {
"type": "http",
"url": "https://adexto.xyz/api/mcp"
}
}
} [mcp_servers.xyz-adexto-mcp] url = "https://adexto.xyz/api/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"xyz-adexto-mcp": {
"type": "remote",
"url": "https://adexto.xyz/api/mcp",
"enabled": true
}
}
} openclaw mcp add xyz-adexto-mcp --url 'https://adexto.xyz/api/mcp' --transport streamable-http
mcp_servers:
xyz-adexto-mcp:
url: "https://adexto.xyz/api/mcp" {
"McpServers": {
"xyz-adexto-mcp": {
"Transport": "http",
"Url": "https://adexto.xyz/api/mcp"
}
}
} assistant mcp add xyz-adexto-mcp -t streamable-http -u 'https://adexto.xyz/api/mcp'
{
"mcpServers": {
"xyz-adexto-mcp": {
"type": "http",
"url": "https://adexto.xyz/api/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
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.
- 6 Oct 26 +1
- Tool “prepare_launch” rewrote its description, which is the text the model reads security
- Tool “trade_history” rewrote its description, which is the text the model reads security
- “prepare_launch” reworded the description of “chainId” cosmetic
- 5 Oct 26 +2
- HSTS header: fail → pass ▲ security
- 4 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.
- 3 Oct 26 +1
- Tool coverage: 94% → 100% ▲ functional
- Stability: unverified → 0.03 ▲ functional
- Tool “access_message” now declares an output schema ▲ functional
- Tool “ask_agent” now declares an output schema ▲ functional
- Tool “buy_token” now declares an output schema ▲ functional
- Tool “check_stake” now declares an output schema ▲ functional
- Tool “get_market” now declares an output schema ▲ functional
- Tool “how_to_pay” now declares an output schema ▲ functional
- Tool “list_markets” now declares an output schema ▲ functional
- Tool “pay_and_buy” now declares an output schema ▲ functional
- Tool “prepare_claim” now declares an output schema ▲ functional
- Tool “prepare_launch” now declares an output schema ▲ functional
- Tool “prepare_stake” now declares an output schema ▲ functional
- Tool “quote_buy” now declares an output schema ▲ functional
- Tool “register_launch” now declares an output schema ▲ functional
- Tool “trade_history” now declares an output schema ▲ functional
- First check of Tool coverage: 100 functional
- “prepare_launch” reworded the description of “docs” cosmetic
- “prepare_launch” reworded the description of “github” cosmetic
- “prepare_launch” reworded the description of “website” cosmetic
- 2 Oct 26 62
First indexed and scored.
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 8 Oct 2026 · Probed https://adexto.xyz/api/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=adexto.xyz | CN=WE1,O=Google Trust Services,C=US | 10 Sept 2026 | 9 Dec 2026 | ECDSA 256 | ECDSA-SHA256 | 28cf735b1f44bbe10e5168618d1a865e |
| SANs: adexto.xyz, x402.adexto.xyz, *.x402.adexto.xyz | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of adexto.xyz. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| xyz. | present | 3599, 18130 | 8, 8 | Verified |
| adexto.xyz. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=31536000; includeSubDomains |
| content-security-policy | frame-ancestors 'self'; base-uri 'self'; object-src 'none' |
| x-content-type-options | nosniff |
| x-frame-options | SAMEORIGIN |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | camera=(), microphone=(), geolocation=(), browsing-topics=() |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://adexto.xyz/api/mcp | Verified | 200 | |
| http (plaintext) | http://adexto.xyz/api/mcp | HTTPS enforced | 308 | https://adexto.xyz/api/mcp |
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 →
access_message The message to sign before ask_agent ~168
Free. Returns the exact EIP-191 message an address signs (personal_sign) to prove it is the address asking. ask_agent accepts it for 10 minutes. Signing it moves nothing and costs nothing.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | Wallet that will sign and ask. |
| chainId | integer | – | Chain id of the market, for a ticker that trades on more than one chain (list_markets shows chainId). Without it the oldest market for that ticker is used. |
| symbol | string | yes | Market ticker, for example PARCEL or ADEXTO. Required and has no default: the gateway refuses a missing ticker rather than quoting one, so a typo can never bill you for a token you did not ask for. C… |
| Name | Type | Req | Description |
|---|---|---|---|
| address | string|null | – | Address, on bad_address. |
| detail | – | – | Why it refused, or extra context on a successful answer. |
| error | string|null | – | Present only when the tool refused, as a stable code such as unknown_market. Nothing was spent. |
| message | string|null | – | The exact EIP-191 message to sign. |
| next | string|null | – | What to do next. |
| sign | string|null | – | How to sign it. |
| symbol | string|null | – | Ticker, on unknown_market. |
| validForSeconds | number|null | – | How long ask_agent accepts it. |
No examples provided.
ask_agent Ask the market's agent (stake required) ~261
Asks the market's own agent a question about that market. Open to an address whose stake in the market's stake contract is active (check_stake), proven with a signed access_message. The answer comes from glm-5.3 on the 0G router and is limited to facts read on-chain for this call; the tool returns those facts next to the answer. Refused without an active stake, and nothing is charged either way.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | The asking wallet. Must hold an active stake. |
| chainId | integer | – | Chain id of the market, for a ticker that trades on more than one chain (list_markets shows chainId). Without it the oldest market for that ticker is used. |
| message | string | yes | The exact message from access_message. |
| question | string | yes | What to ask the agent about this market. |
| signature | string | yes | personal_sign signature of message by address. |
| symbol | string | yes | Market ticker, for example PARCEL or ADEXTO. Required and has no default: the gateway refuses a missing ticker rather than quoting one, so a typo can never bill you for a token you did not ask for. C… |
| Name | Type | Req | Description |
|---|---|---|---|
| answer | string|null | – | The agent's answer, limited to the facts below. |
| answered | boolean|null | – | True when the agent answered. |
| answeredBy | string|null | – | Model and route that answered. |
| chainId | number|null | – | Chain id of the market. |
| detail | – | – | Why it refused, or extra context on a successful answer. |
| error | string|null | – | Present only when the tool refused, as a stable code such as unknown_market. Nothing was spent. |
| facts | – | – | Facts read on chain for this answer. |
| httpStatus | number|null | – | On model_failed: the model's HTTP status. |
| retryAfterSeconds | number|null | – | On rate_limited: seconds until the next question is allowed. |
| stake | – | – | The stake position that opened the agent. |
| symbol | string|null | – | Ticker. |
No examples provided.
buy_token Buy a market cross-chain with USDC on Base ~244
Executes the buy. Called without xPayment it returns the HTTP 402 challenge, which is the correct first response and not an error. Called with a signed x402 payload in xPayment it settles on Base and the curve on the destination chain sends the tokens straight to `to`. You never need native gas on the destination chain and never need to bridge.
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | integer | – | Chain id of the market, for a ticker that trades on more than one chain (list_markets shows chainId). Without it the oldest market for that ticker is used. |
| symbol | string | yes | Market ticker, for example PARCEL or ADEXTO. Required and has no default: the gateway refuses a missing ticker rather than quoting one, so a typo can never bill you for a token you did not ask for. C… |
| to | string | yes | Address that receives the tokens. The curve sends them here directly; we never custody them. |
| xPayment | string | – | Base64-encoded x402 payment payload containing the signed EIP-3009 authorization. Omit it to receive the 402 challenge first. |
| Name | Type | Req | Description |
|---|---|---|---|
| challenge | – | – | On 402: the payment terms in accepts[0]. |
| httpStatus | number|null | – | Status the gateway answered. |
| next | string|null | – | What to do next. |
| paymentRequired | boolean|null | – | True when this is the 402 challenge to sign. |
| result | – | – | On a paid call: delivery and settlement transactions, or the gateway's refusal. |
| settled | boolean|null | – | True when the payment settled and the tokens were delivered. |
No examples provided.
check_stake Read a wallet's stake in a market ~242
Free. Reads the market's stake contract on its own chain: its own AdextoAgentStake where it has one, otherwise the chain's AdextoStakeHub, which accepts every other market launched through ADEXTO from its first block. Returns how much an address has staked, the minimum, whether the position is active (at or above the minimum), and the totals. An active stake opens ask_agent for that market and an Agent Compute API key (see get_market staking.unlocks). There is no lock and no reward: unstake works at any time.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | Wallet whose stake to read. |
| chainId | integer | – | Chain id of the market, for a ticker that trades on more than one chain (list_markets shows chainId). Without it the oldest market for that ticker is used. |
| symbol | string | yes | Market ticker, for example PARCEL or ADEXTO. Required and has no default: the gateway refuses a missing ticker rather than quoting one, so a typo can never bill you for a token you did not ask for. C… |
| Name | Type | Req | Description |
|---|---|---|---|
| active | boolean|null | – | True when the stake is at or above the minimum. |
| address | string|null | – | Wallet read. |
| chain | string|null | – | Chain name and id. |
| chainId | number|null | – | Chain id of the market. |
| detail | – | – | Why it refused, or extra context on a successful answer. |
| error | string|null | – | Present only when the tool refused, as a stable code such as unknown_market. Nothing was spent. |
| kind | string|null | – | dedicated or hub. |
| lock | string|null | – | Always none: unstake works at any time. |
| minStake | string|null | – | Minimum for an active stake, in whole tokens. |
| stakeContract | string|null | – | Stake contract read. |
| staked | string|null | – | Staked, in whole tokens. |
| stakers | number|null | – | Number of stakers. |
| staking | boolean|null | – | False when the market's chain has no stake contract for it. |
| symbol | string|null | – | Ticker. |
| totalStaked | string|null | – | Total staked in this market, in whole tokens. |
No examples provided.
get_market One market in detail ~150
Full detail for a single market: chain, curve address, supply, fee rates, current price in the chain's native asset, and which read path serves its trade history. Free.
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | integer | – | Chain id of the market, for a ticker that trades on more than one chain (list_markets shows chainId). Without it the oldest market for that ticker is used. |
| symbol | string | yes | Market ticker, for example PARCEL or ADEXTO. Required and has no default: the gateway refuses a missing ticker rather than quoting one, so a typo can never bill you for a token you did not ask for. C… |
| Name | Type | Req | Description |
|---|---|---|---|
| agentIdentity | – | – | The ERC-8004 agent the token is bound to, or null when unbound. |
| buyResource | string|null | – | x402 URL that sells this market. |
| chain | string|null | – | Chain name and id. |
| chainId | number|null | – | Chain id of the market. |
| creator | string|null | – | Creator address, paid the creator fee. |
| curve | string|null | – | Bonding curve contract. |
| detail | – | – | Why it refused, or extra context on a successful answer. |
| error | string|null | – | Present only when the tool refused, as a stable code such as unknown_market. Nothing was spent. |
| historySource | string|null | – | indexer, market-index or rpc-logs: which read path serves trade_history. |
| known | array | – | On unknown_market: the tickers that do exist. |
| launchBlock | number|null | – | Launch block. |
| launchTx | string|null | – | Launch transaction. |
| lpFeeBps | number|null | – | Fee kept in the curve, in basis points. |
| name | string|null | – | Token name. |
| nativeSymbol | string|null | – | Native asset of the chain. |
| priceNative | number|null | – | Price of one token in the native asset. |
| slug | string|null | – | URL slug of the market. |
| staking | – | – | How to stake this market, or null when its chain has no stake contract. |
| supply | number|null | – | Total supply in whole tokens. |
| symbol | string|null | – | Ticker. |
| token | string|null | – | Token contract. |
| tradable | boolean|null | – | Whether the curve is live. |
| treasuryBuybackBps | number|null | – | Buyback-and-burn fee, in basis points. |
No examples provided.
how_to_pay How to pay this gateway ~55
The exact steps to turn a 402 challenge into a settled cross-chain buy: what to sign, which chain settles, and which header carries the payment. Free. Read this if you have never paid an x402 endpoint before.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| header | string|null | – | Header that carries the payment. |
| headerNote | string|null | – | Which payment header names the gateway reads. |
| orderOfOperations | string|null | – | Delivery runs before the charge. |
| protocol | string|null | – | Payment protocol. |
| replayProtection | string|null | – | Why one authorization cannot be spent twice. |
| scheme | string|null | – | x402 scheme and transfer method. |
| settlementAsset | string|null | – | Asset paid. |
| settlementChain | string|null | – | Chain the payment settles on. |
| steps | array | – | Steps from challenge to settled buy. |
| youNeverNeed | array | – | What a buyer never needs. |
No examples provided.
list_markets List every tradable ADEXTO market ~58
Every bonding-curve market this gateway can sell, across all chains it serves, with its ticker, chain, curve address and whether it is currently tradable. Free. Start here: the buy tools require a ticker and deliberately have no default.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| count | number|null | – | Number of markets. |
| markets | array | – | Every market served, on every chain. |
| note | string|null | – | How delivery works and what agentIdentity means. |
No examples provided.
pay_and_buy Execute a buy end to end (operator-signed, capped) ~224
Buys a market for real, completing the step an LLM cannot do alone: signing the EIP-3009 USDC authorisation. IMPORTANT for honest reporting — the signature is made by the operator's wallet on the server, not by a wallet you control, so describe the result as 'executed the purchase', not 'paid from my own funds'. Refuses unless the caller carries the agent key, and refuses any quote whose asset, network, recipient or amount does not match the hard-coded limits. Delivery always goes to the signer.
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | integer | – | Chain id of the market, for a ticker that trades on more than one chain (list_markets shows chainId). Without it the oldest market for that ticker is used. |
| symbol | string | yes | Market ticker, for example PARCEL or ADEXTO. Required and has no default: the gateway refuses a missing ticker rather than quoting one, so a typo can never bill you for a token you did not ask for. C… |
| Name | Type | Req | Description |
|---|---|---|---|
| amountUsdc | string|null | – | USDC paid. |
| buyback | – | – | Automatic buyback result, when one ran. |
| chain | string|null | – | Chain of the market. |
| delivery | – | – | Delivery transaction on the market's chain. |
| detail | – | – | Why it refused, or extra context on a successful answer. |
| error | string|null | – | Present only when the tool refused, as a stable code such as unknown_market. Nothing was spent. |
| gatewayError | – | – | The gateway's answer when it did not settle. |
| httpStatus | number|null | – | Status the gateway answered. |
| known | array | – | On unknown_market: the tickers that do exist. |
| limits | – | – | On refused_by_limits: the hard limits the quote did not meet. |
| paidBy | string|null | – | Operator wallet that signed the payment. |
| retryAfterSeconds | number|null | – | On rate_limited: seconds until the next purchase is allowed. |
| settled | boolean|null | – | True when the payment settled. |
| settlement | – | – | Settlement transaction on Base. |
| signedBy | string|null | – | Who signed: the operator wallet on the server, not the agent. |
| symbol | string|null | – | Ticker bought. |
| terminal | string|null | – | Market page. |
No examples provided.
prepare_claim Prepare a creator fee claim ~91
Unsigned transactions that collect the creator fee owed to an address across its markets: one claimCreatorFees() call per curve, or one Multicall3 batch per chain when several are owed. The curve always pays its immutable creator, whoever sends the transaction.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | Creator address whose owed fees to collect. |
| chainId | integer | – | Only this chain. Omit for every chain. |
| Name | Type | Req | Description |
|---|---|---|---|
| address | string|null | – | Creator address. |
| checkedMarkets | – | – | Markets checked. |
| claimable | array | – | Markets that owe this address a creator fee. |
| detail | – | – | Why it refused, or extra context on a successful answer. |
| error | string|null | – | Present only when the tool refused, as a stable code such as unknown_market. Nothing was spent. |
| note | string|null | – | Who receives the fee. |
| transactions | array | – | One claim per curve, or one Multicall3 batch per chain. |
| unreadableMarkets | – | – | Markets that could not be read. |
No examples provided.
prepare_launch Prepare a market launch for your own key to sign ~527
Launch a new ADEXTO market without handing over a key. Call it once without a signature: it checks the ticker, the chain and an optional ERC-8004 agent you own, and returns an attestation message for the deployer to sign (EIP-191). Call it again with the same arguments plus attestationMessage and attestationSignature: it anchors the launch metadata and returns the unsigned deployTrinity transaction (value 0, gas only), simulated from your address, with a gas estimate. Fee preset: 1.00% per trade, 0.70% to the creator. All supply goes into the curve; the creator gets no allocation. After the transaction is mined, call register_launch. The attestation message ends with an acceptance of the ADEXTO Terms and Acceptable Use Policy (adexto.xyz/terms): signing it is the deployer's acceptance, and markets that break the policy are removed from ADEXTO.
| Name | Type | Req | Description |
|---|---|---|---|
| agentId | string | – | ERC-8004 agent id on this chain to bind to the token, owned by the deployer. Omit to launch unbound. |
| attestationMessage | string | – | Second call only: the message the first call returned. |
| attestationSignature | string | – | Second call only: the deployer's EIP-191 signature of it. |
| category | string | – | Market category shown on the explorer. |
| chainId | integer | yes | Chain to launch on: 143 Monad, 42161 Arbitrum One, 4663 Robinhood Chain, 8453 Base, 5042 Arc, 16661 0G. |
| deployer | string | yes | Address that signs the attestation and sends the launch transaction. It becomes the market's creator and receives the creator fee. |
| description | string | – | One-line pitch shown on the market page. |
| docs | string | – | Documentation URL, shown on the market page. |
| github | string | – | GitHub URL of the project, shown on the market page. |
| image | string | – | Logo as a base64 data URI (image/png, image/jpeg or image/webp). Omit for the default logo. |
| name | string | yes | Token name, up to 64 bytes. |
| symbol | string | yes | Ticker, 2 to 12 letters A-Z or digits. Permanent on chain. |
| website | string | – | Project website URL, shown on the market page. https:// is assumed when no scheme is given. |
| x | string | – | X handle or URL. |
| Name | Type | Req | Description |
|---|---|---|---|
| attestationMessage | string|null | – | Step one: the message to sign with personal_sign. |
| attestationRoot | string|null | – | Metadata root written on chain. |
| chain | string|null | – | Chain name. |
| chainId | number|null | – | Chain to launch on. |
| checks | – | – | Step one: ticker and agent checks already passed. |
| code | string|null | – | On prepare_failed: error code of the preparation stage. |
| deployer | string|null | – | Address that signs and sends. |
| deployerBalanceWei | string|null | – | Deployer balance. |
| detail | – | – | Why it refused, or extra context on a successful answer. |
| error | string|null | – | Present only when the tool refused, as a stable code such as unknown_market. Nothing was spent. |
| estimatedCostWei | string|null | – | Estimated cost in wei: gas used times the gas price, or the gas limit times the price on Monad, which bills the whole limit. |
| fundsSufficient | boolean|null | – | Whether the balance covers the transaction's gas limit at the current price, which the node requires. |
| gasEstimate | string|null | – | Step two: estimated gas. |
| gasPriceWei | string|null | – | Current gas price. |
| gasSource | string|null | – | estimateGas or measured. |
| launchableChains | – | – | On unsupported_chain: the chains that can launch. |
| market | – | – | The market the launch creates: supply, fee split, opening market cap, agent. |
| metadataAnchoredTo0G | boolean|null | – | True when the metadata was stored on 0G DA. |
| name | string|null | – | Token name. |
| nativeSymbol | string|null | – | Native asset that pays the gas. |
| next | string|null | – | What to do next. |
| quota | – | – | On creator_ticker_limit: this address's ticker quota. |
| retryAfterSeconds | number|null | – | On a rate limit: seconds to wait. |
| signWith | string|null | – | Step one: how to sign. |
| simulation | object | – | The transaction simulated from the deployer. |
| status | number|null | – | On prepare_failed: HTTP status of the preparation stage. |
| step | string|null | – | sign_attestation on the first call, sign_and_send on the second. |
| symbol | string|null | – | Ticker. |
| transaction | object | – | Step two: the unsigned launch transaction. |
| unavailableChains | – | – | Chains the preparation stage could not open. |
| validForSeconds | number|null | – | Step one: how long the attestation is accepted. |
No examples provided.
prepare_stake Prepare a stake for your own key to sign ~226
Unsigned transactions that stake a market's token in its stake contract or its chain's stake hub: an approval for the exact amount (only if the allowance is short), then the stake. Checks balance, minimum and hub eligibility first, so a stake that would revert is refused before any gas is spent. No lock: unstake works at any time. A stake opens ask_agent for that market.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | Wallet that holds the tokens and will sign. |
| amount | string | yes | Whole tokens to stake, for example "10000". |
| chainId | integer | – | Chain id of the market, for a ticker that trades on more than one chain (list_markets shows chainId). Without it the oldest market for that ticker is used. |
| symbol | string | yes | Market ticker, for example PARCEL or ADEXTO. Required and has no default: the gateway refuses a missing ticker rather than quoting one, so a typo can never bill you for a token you did not ask for. C… |
| Name | Type | Req | Description |
|---|---|---|---|
| after | object | – | The position once the transactions are mined. |
| alreadyStaked | string|null | – | On below_minimum: the current position. |
| balance | string|null | – | On insufficient_balance: the wallet's balance. |
| chainId | number|null | – | Chain id. |
| detail | – | – | Why it refused, or extra context on a successful answer. |
| error | string|null | – | Present only when the tool refused, as a stable code such as unknown_market. Nothing was spent. |
| kind | string|null | – | dedicated or hub. |
| lock | string|null | – | Always none. |
| market | string|null | – | Ticker and chain. |
| minimum | string|null | – | On below_minimum: the minimum. |
| next | string|null | – | What to do next. |
| order | string|null | – | Sending order. |
| stakeContract | string|null | – | Stake contract the transactions call. |
| token | string|null | – | Token staked. |
| transactions | array | – | Send in order: an exact approval if needed, then the stake. |
No examples provided.
quote_buy Quote a cross-chain buy without paying ~207
Reads the gateway's HTTP 402 challenge for a market and returns the quote and payment requirements without spending anything. The challenge carries the exact amount, the asset, the payTo address and the EIP-3009 domain, so an agent can decide before it signs. Free. This is the tool to call before buy_token.
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | integer | – | Chain id of the market, for a ticker that trades on more than one chain (list_markets shows chainId). Without it the oldest market for that ticker is used. |
| symbol | string | yes | Market ticker, for example PARCEL or ADEXTO. Required and has no default: the gateway refuses a missing ticker rather than quoting one, so a typo can never bill you for a token you did not ask for. C… |
| to | string | – | Recipient address for the tokens. Optional for a quote; the curve delivers straight to it on a real buy. |
| Name | Type | Req | Description |
|---|---|---|---|
| challenge | – | – | The gateway's answer: on 402, x402Version, accepts[0] with the payment terms, and quote. |
| httpStatus | number|null | – | Status the gateway answered: 402 is a quote. |
| next | string|null | – | What to do next. |
| quoted | boolean|null | – | True when the gateway returned a 402 quote. |
| resource | string|null | – | Gateway URL that was quoted. |
No examples provided.
register_launch List a mined launch on ADEXTO ~109
After the prepare_launch transaction is mined, lists the new market on adexto.xyz, in list_markets and on the x402 gateway. Reads the TrinityProjectDeployed event from the ADEXTO factory in the receipt; every value it registers comes from that event, not from the caller. Calling it again for the same transaction returns the existing listing.
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | integer | yes | Chain the launch transaction was sent on. |
| txHash | string | yes | Hash of the mined launch transaction. |
| Name | Type | Req | Description |
|---|---|---|---|
| agentIdentity | – | – | ERC-8004 binding read from the token, or null. |
| alreadyRegistered | boolean|null | – | True when it was listed before this call. |
| buyResource | string|null | – | x402 URL that sells the market. |
| chain | string|null | – | Chain name. |
| chainId | number|null | – | Chain id. |
| code | string|null | – | On confirm_failed: error code of the registration stage. |
| creator | string|null | – | Creator address, from the factory event. |
| curve | string|null | – | Bonding curve contract. |
| detail | – | – | Why it refused, or extra context on a successful answer. |
| error | string|null | – | Present only when the tool refused, as a stable code such as unknown_market. Nothing was spent. |
| explorerTx | string|null | – | Explorer link of the launch transaction. |
| launchableChains | – | – | On unsupported_chain: the chains that can launch. |
| metadataApplied | boolean|null | – | True when the prepare_launch metadata was applied. |
| name | string|null | – | Token name. |
| next | string|null | – | What to do next. |
| note | string|null | – | Context for a failed registration. |
| page | string|null | – | Market page. |
| registered | boolean|null | – | True when the market is listed. |
| status | number|null | – | On confirm_failed: HTTP status of the registration stage. |
| symbol | string|null | – | Ticker. |
| token | string|null | – | Token contract. |
No examples provided.
trade_history Every swap on a market, and how complete the answer is ~267
Trade history for a market, newest first, with an explicit statement of whether it reaches the launch block. Free. Monad, Robinhood Chain and Arc are served by our Envio indexer and Base and Arbitrum One by our subgraph, both complete from the launch block; every market is also covered by our per-market index of every swap since launch, joined to a live log scan for the newest fills. When a market's index is still catching up or a read fails, the answer says so instead of presenting a shortened list as the whole history. Treasury buybacks are not trades and are not listed, although the curve's swapCount counts them.
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | integer | – | Chain id of the market, for a ticker that trades on more than one chain (list_markets shows chainId). Without it the oldest market for that ticker is used. |
| limit | integer | – | Rows to return, newest first. Default 50, maximum 400. |
| symbol | string | yes | Market ticker, for example PARCEL or ADEXTO. Required and has no default: the gateway refuses a missing ticker rather than quoting one, so a typo can never bill you for a token you did not ask for. C… |
| Name | Type | Req | Description |
|---|---|---|---|
| chain | string|null | – | Chain name and id. |
| chainId | number|null | – | Chain id of the market. |
| complete | boolean|null | – | True only when the answer reaches the launch block. |
| completeBecause | string|null | – | Why the history is complete. |
| coverage | – | – | What the log scan reached. |
| curve | string|null | – | Bonding curve contract. |
| degraded | boolean|null | – | True when the indexer or subgraph failed and another read path answered instead. |
| detail | – | – | Why it refused, or extra context on a successful answer. |
| error | string|null | – | Present only when the tool refused, as a stable code such as unknown_market. Nothing was spent. |
| incompleteBecause | string|null | – | Why older swaps may be missing. |
| indexProgress | number|null | – | Share of the blocks since launch the per-market index has scanned, 0 to 1, while it catches up. |
| indexedThroughBlock | number|null | – | Last block our per-market index has scanned, when it was used. |
| indexerError | – | – | Why the indexer or subgraph was skipped, when it was. |
| indexerSyncedToBlock | number|null | – | Block the indexer or subgraph has reached. |
| known | array | – | On unknown_market: the tickers that do exist. |
| launchBlock | number|null | – | Launch block of the market. |
| note | string|null | – | Context for a read failure. |
| publicEndpoint | string|null | – | Public GraphQL endpoint of the indexer. |
| returned | number|null | – | Rows in swaps. |
| source | string|null | – | envio-hyperindex, the-graph, market-index or rpc-logs: which read path answered. |
| swaps | array | – | Swaps, newest first. |
| symbol | string|null | – | Ticker. |
| totalSwaps | number|null | – | Swaps since launch, on every read path. Treasury buybacks are not counted, so this can be lower than the curve's swapCount. On an incomplete answer, the swaps seen so far. |
No examples provided.
What is the ADEXTO MCP server?
ADEXTO is an MCP server listed in the public MCP registry as xyz.adexto/mcp. Launch, buy, stake and claim on bonding-curve token markets across five chains, with your own key. This page covers its hosted endpoint (https://adexto.xyz/api/mcp).
Is the ADEXTO MCP server safe to use?
ADEXTO scores 67 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 ADEXTO MCP server expose?
ADEXTO exposes 14 tools: list_markets, get_market, quote_buy, how_to_pay, buy_token, and 9 more. Their descriptions and schemas cost roughly 2,829 tokens of context every time the server is loaded.
Does the ADEXTO MCP server require authentication?
No. We connected to ADEXTO without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the ADEXTO MCP server still maintained?
ADEXTO is still listed as active in the MCP registry. We last reached this channel on 7 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.