ADEXTO Protocol (adexto.xyz)
MCP serverDev toolsLaunch, buy, stake and claim on bonding-curve token markets across five chains, with your own key.
Available today. Use it from your connected AI after setup.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use ADEXTO Protocol (adexto.xyz) to list markets
Install ADEXTO Protocol (adexto.xyz)
The server’s own address, for the clients that take one directly. Or connect ahel once and every client you use reads it from one address, with the account kept on ahel rather than in each client’s config.
Claude Code
claude mcp add --transport http --scope user adexto-protocol-adexto-xyz 'https://adexto.xyz/api/mcp'Run it once in your project, then open /mcp to approve any sign-in the server asks for.
Claude Desktop
https://adexto.xyz/api/mcpAdd a custom connector in Settings, paste this address, and approve the sign-in.
Cursor
cursor://anysphere.cursor-deeplink/mcp/install?name=adexto-protocol-adexto-xyz&config=eyJ1cmwiOiJodHRwczovL2FkZXh0by54eXovYXBpL21jcCJ9Open the link and Cursor adds the server at that address.
ChatGPT
https://adexto.xyz/api/mcpIn Settings, enable Developer mode, create an MCP app, and paste this address. Your plan and workspace must allow custom apps.
Codex
codex mcp add adexto-protocol-adexto-xyz --url 'https://adexto.xyz/api/mcp'Run it once, then sign in with codex mcp login adexto-protocol-adexto-xyz if the server asks for an account.
From the project's README
As published by 0xcuy/adexto in README.md.
Market infrastructure for the agent economy. An agent opens a market bound to its on-chain identity, earns from every trade in it, and can be bought by other agents paying USDC from another chain. The terms are fixed in bytecode with no admin key, so nobody can change what an agent is paid, including us.
| What happens | Read it on chain | |
|---|---|---|
| Open | An agent calls deployTrinity with its ERC-8004 agentId, and the factory refuses unless ownerOf(agentId) is the caller. Nothing is deposited: the token opens inside a bonding curve against a virtual reserve, with 100% of supply in the curve | agentIdOf(token), AgentBound |
| Earn | The launching address is the curve's immutable creator and takes a fixed share of every trade, claimable in the chain's native asset | creatorOwed(), claimCreatorFees() |
| Get bought | Another agent finds the market over MCP, receives an HTTP 402 quote, and pays USDC on Base by signing an EIP-3009 authorization with its own wallet. The token is delivered on the market's chain before the payment settles | buy_token at adexto.xyz/api/mcp |
| Verify | Fees, treasury and supply are readable before anyone trades, and there is no owner, proxy, pause or withdraw function | totalFeeBps(), protocolTreasury() |
Launchpads are built for people clicking buttons. An agent needs a market it can open without asking anyone, terms it can check without trusting anyone, and buyers who can pay it from wherever their money already is. Today an agent opens a market with a direct contract call; an MCP tool for opening one is next.
Live on 0G, Base, Arbitrum One and Monad from one byte-identical factory. The contracts, tests
and web app live here; the chain-specific engineering lives in
0xcuy/adexto-arbitrum and
0xcuy/adexto-monad.
What this is
A launchpad hands a creator a token and a page. Here one transaction opens a working venue, whether an agent or a person sends it, and these arrive with it — none of them a roadmap item, none needing a listing or an application:
| What arrives | What it means |
|---|---|
| Machine buyers | An MCP server exposes the markets to AI agents — discover, quote, buy, read history — resolved from the same registry the site uses, so a new market answers on the first request. |
| A cross-chain price | A buyer holding only USDC on Base takes a position without bridging and without ever holding the market's gas token. Paid over plain HTTP with an EIP-3009 authorization the token contract verifies itself; settled with real funds. |
| Creator earnings in one place | /creator reads every curve an address created, on every chain, and claims the fees per market or per chain in one transaction. |
| An agent for the market | Answers questions about its own curve, fee split and depth. It carries its token and curve addresses because it is bound to them, and inference runs on the 0G Compute router. |
| A trading terminal | For the people who trade beside the agents: candles from one second up, with 1y and All ranges, RSI, MACD, Bollinger, VWAP, your own and the creator's trades marked on the chart, a curve depth ladder, a trade feed you can filter to your fills, the creator's or large ones, your position with PnL, the holder list, a watchlist and share cards — usable on a market that is minutes old. |
Launching is built to be quick to decide on. The studio shows what the launch will cost on the chain you picked before you sign, its default Express mode needs only a name, a ticker and an image, and the success screen drafts the announcement for X and Farcaster. Beside the markets, every market can be staked from its first block, and Agent Compute gives a staker an API key to an OpenAI-compatible endpoint on the 0G Compute router: with tiered allowances for $ADEXTO on 0G and $SAI on Monad, Arbitrum One and Robinhood Chain, and with an allowance funded by the market's own trading for every other market.
What is not here: no autonomous trading bot runs a market on a creator's behalf. ERC-8004 identity binding is real and verified on-chain at launch, but it is opt-in and it records an identity rather than starting a strategy.
How the market itself works
The token opens inside a bonding curve against a virtual reserve. There is nothing to seed, so a launch costs gas and nothing else. 100% of supply enters the curve, so the creator holds no allocation to sell. Income arrives instead as a share of every swap, taken from inside the fee the trader already pays: on the studio's standard preset a trade costs 1.00% and 0.70% of it goes to the creator. Nothing is added on top. Markets created by the previous factory keep their own rates permanently. Full breakdown in Fee split.
The curve is the permanent venue. There is no graduation step and no migration into an external pool, which is where most launchpad exploits have historically happened. There is also no withdrawal function anywhere in the curve, so no one — including us — can drain a market.
That is a statement about the protocol, not a restriction on the token. A v1 AdextoToken limits every receiving wallet to 1% of supply only while block.timestamp < launchTime + 180 (the six 0.11.0 tokens capped single transfers for their first 5 blocks); after that _update adds no condition at all, and there is no blacklist, no pause, no Ownable and no permanent transfer hook. It is a plain ERC-20. So anyone can list one of these tokens on any external AMM without our permission, and we could not stop it — a second market with its own price can exist alongside the curve. The guarantee is narrower than "one market": we never migrate, and nobody can withdraw the curve's reserves.
Fee split
Every swap pays four legs: creator, depth, buyback and protocol. Each rate is fixed when the market is created, and where the protocol leg sits depends on the factory generation that created it.
ADEXTO v1 (AdextoFactory 1.0.0), which every launch from the studio uses. The creator configures a total, and that total is exactly what a trader pays. The protocol's 0.10% is carved out of it rather than added on top. The studio's standard preset, which a curve reports as totalFeeBps 100:
| Share | Bps | Goes to |
|---|---|---|
| Creator | 0.70% | streamed to the creator's wallet on every swap |
| Depth | 0.10% | stays in the curve, raising the price floor as volume accumulates |
| Buyback | 0.10% | accrues on the curve as treasuryNative; a buyback call spends it on the curve and burns what it bought |
| Protocol | 0.10% | protocolOwed, claimable only to the factory's immutable protocolTreasury |
| Trader pays | 1.00% |
AdextoFactory 0.11.0, which created the six markets listed today. Its protocol leg is charged on top of the configured total. Those markets were configured at 0.30%, so a trader pays 0.40% on them, permanently:
| Share | Bps | Comes from | Goes to |
|---|---|---|---|
| Depth | 0.15% | inside the creator's 0.30% | stays in the curve |
| Creator | 0.10% | inside the creator's 0.30% | streamed to the creator's wallet |
| Buyback | 0.05% | inside the creator's 0.30% | treasuryNative, spent on buy-and-burn |
| Protocol | 0.10% | added on top | protocolOwed, claimable only to the immutable protocolTreasury |
| Trader pays | 0.40% |
Read totalFeeBps() on the curve instead of adding these up. It is the contract's own answer to what a trade costs, whichever generation created the market.
The protocol leg is a public constant PROTOCOL_FEE_BPS on the factory and an immutable protocolFeeBps on each curve, with no setter in either. A setter would make the contracts owned, which is the opposite of what /security claims about them. So a 0.11.0 market can never move its leg inside the total: its rates are immutable too. That is permanent, not a migration waiting to happen.
claimProtocolFees() is permissionless — anyone may call it, and the native always lands at the immutable treasury. No key is needed to collect the fee. The treasury's key is only needed by its owner, later, to move the money elsewhere.
The studio's three presets (0.60% / 1.00% / 2.00%) are UI only. The v1 contract accepts any split subject to swapFeeBps <= 500 and creatorShareBps + treasuryShareBps + PROTOCOL_FEE_BPS <= swapFeeBps, so the 5% cap applies to what a trader pays and there is always room for the protocol leg. Depth is the residual, not an input: the factory computes swapFeeBps − creatorShareBps − treasuryShareBps − PROTOCOL_FEE_BPS, and the curve re-checks the sum against its own ceiling. On 0.11.0 the cap read swapFeeBps + PROTOCOL_FEE_BPS <= 500 and depth was swapFeeBps − creatorShareBps − treasuryShareBps.
The buyback is permissionless and self-contained. executeBuyback carries only nonReentrant and live — no caller gate — so anyone can trigger it, capped at 1% of the native reserve per call. v1 curves also wait one hour between calls. The native never leaves the contract: the call moves treasuryNative into the curve reserve and burns whatever that purchase bought, so supply falls without paying anyone. That is deliberate — a burn path that depended on us being willing to run it would be a promise rather than a mechanism. It is not automatic either: the buyback share accrues on every swap, but a burn happens only when someone calls it. Our x402 gateway does after a delivery once the bucket covers three times the gas, and so far only $ADEXTO has burned anything.
⚙️ What one launch creates
graph TD
Creator([Creator]) -->|1 tx per chain, gas only<br/>deployTrinity is NOT payable| Factory[AdextoFactory v1.0.0]
Registry[[ERC-8004 Identity Registry<br/>optional, off by default]] -.->|ownerOf agentId — launch reverts<br/>unless the caller owns that agent| Factory
Meta[0G DA<br/>launch metadata anchored] -.->|metadataRoot in calldata| Factory
subgraph "Deployed atomically in that transaction"
Factory -->|1. deploys curve first,<br/>so the token can bind it immutably| Curve[AdextoCurve — own AMM<br/>virtual reserve, no deposit<br/>no owner, no withdraw/sweep/rescue]
Factory -->|2. deploys token,<br/>mints 100% of supply to itself| Token[AdextoToken — plain ERC-20<br/>no owner, no pause, no blacklist<br/>1%-per-tx cap through launchBlock+5]
Factory ==>|3. seeds 100% into the curve, then<br/>asserts its own balance is zero| Curve
end
Curve -->|0.10% depth| Depth[stays in the curve,<br/>raising the floor]
Curve -->|0.70% creator| CreatorFee[claimCreatorFees →<br/>immutable creator address]
Curve -->|0.10% buyback| Vault[treasuryNative —<br/>a balance on the curve,<br/>not a separate contract]
Curve -->|0.10% protocol, carved OUT OF<br/>the 1.00% standard preset| Protocol[protocolOwed →<br/>claimProtocolFees is permissionless,<br/>destination is immutable]
Vault -->|executeBuyback: no caller gate,<br/>max 1% of reserve per call, 1h apart| Burn[buys along the curve,<br/>burns what it bought]
classDef live fill:#f5f3ff,stroke:#7c3aed,stroke-width:2px,color:#201810;
classDef partial fill:#fffbeb,stroke:#f59e0b,stroke-width:2px,color:#201810;
classDef ext fill:#eef2ff,stroke:#4338ca,stroke-width:2px,color:#201810;
class Factory,Token,Curve,Depth,CreatorFee,Vault,Burn live;
class Meta partial;
class Registry ext;
Three things in that picture exist but are not part of deployTrinity:
agentIdentityis just an address. It is required non-zero and stored immutably on both the token and the curve, and it may callexecuteTreasuryBuybackto burn tokens it holds itself. It is not automatically the 0G Compute agent — the studio passes the creator's own wallet by default.- The x402 edge is a customer of the curve, not an operator of it. It calls
buywith the payer as recipient, exactly like any other address, and it holds no privileged position: it cannot deposit intotreasuryNative, which fills only from the buyback leg of swap fees. The 0G Compute agent is an inference route and holds no key to anything on-chain. See agent-to-agent. - The buyback burns, but nobody is in charge of it.
executeBuybackcarries onlynonReentrantandlive— no caller gate — so anyone may trigger it, bounded to 1% of the reserve per call and, on v1 curves, one call per hour.
🏛️ Mainnet deployments
Every address below was confirmed to hold bytecode by a direct eth_getCode call against the chain's RPC. Testnet deployments are deliberately not listed here — they belong in the operator runbook, not in the public README.
ADEXTO v1 (AdextoFactory VERSION 1.0.0) is the current, executable generation, broadcast on 2026-10-01 to five mainnets: it deploys the token and its curve in one transaction, needs no liquidity deposit, can bind an ERC-8004 agent identity, takes its 0.10% protocol fee out of the total the creator configures, and gives every market a 180-second launch window in which no wallet may hold more than 1% of supply. Every new launch goes through it.
Its runtime bytecode is byte-identical across all five chains (21,806 bytes, keccak 0x1ca02ca53a3b2a2082f9e5dab6924e1339110e3037608f750981699678881fd4) and reproducible from source at commit 71b5adfe774ed7a93f9fe589b4430c8122febb1f with node scripts/compile-contracts.mjs --via-ir (solc 0.8.37, EVM cancun, 200 runs, via-IR): the compiled output differs from the chain only in the two slots that hold the immutable protocolTreasury. With those two slots zeroed, the code on every chain and the compiled artefact hash to the same 0x0e70cb93fbb10b66109cc71d547329cb48b4c3953791c2c4609519ff92221d62. Sourcify reports an exact match, creation and runtime, on all five chains. A shallow clone (git clone --depth 1) does not contain that commit; fetch it by its full hash first, git fetch --depth 1 origin 71b5adfe774ed7a93f9fe589b4430c8122febb1f && git checkout FETCH_HEAD, or clone without --depth. /security has the commands to check each of these yourself.
Byte-identical is not automatic here. protocolTreasury is immutable, and Solidity puts immutables inside the runtime bytecode, so the hashes match only because the same treasury was used on every chain. One chain with a different treasury and the claim is false. The reserved tickers differ by chain (Robinhood Chain reserves more, see A note on reserved tickers), but they live in storage, not in the code.
0.11.0 is listed alongside it because the six earlier markets were created by it, and they keep its rates permanently. Each row states its VERSION as read from the contract.
AdextoStakeHub (VERSION 1.0.0) is the stake contract for every market that does not have its own AdextoAgentStake: one per chain, broadcast on 2026-10-01 from commit f8328ab43375c8a785ccf86fb4dfe39c83c2986f. It accepts a token only when one of the factories fixed in its constructor returns a curve for it from curveOf, which only a launch writes, so a new market is stakeable from its first block with nothing deployed for it. It refuses the four tokens that have their own stake, so no market has two stake contracts. The minimum is 0.001% of the token's current supply. There is no owner, pause, lock or reward. Its runtime is byte-identical across all five chains (4,278 bytes, keccak 0x88247303e4851282bbf22dd4f23e753b08a6862ea40f32d9c0464e92730b081a) because it has no immutables: the factory and exclusion lists live in storage. Sourcify reports an exact match, creation and runtime, on all five chains.
0G Mainnet · chain ID 16661
| Contract | Address | Notes |
|---|---|---|
| AdextoFactory | 0xEBbE0fB112859b57A0ad1afbeD4978e43dC96c5D | current · ADEXTO v1 · VERSION 1.0.0 · 21,806 B · block 45793987 · PROTOCOL_FEE_BPS 10, carved out of the total · 16 tickers reserved |
| AdextoFactory | 0x51c4168226463F7e5A141e1c6D30520734BC840a | superseded · VERSION 0.11.0 · 21,281 B · block 43704079 · PROTOCOL_FEE_BPS 10, charged on top · its markets keep these rates forever |
| ERC-8004 agent (ours) | 3545431 | registered, owned by the deployer · id is chain-specific |
| AdextoAgentStake | 0x5b44AEA7AC49C7a6DA8f700D991852A2970b9231 | live · stakes $ADEXTO for Agent Compute and the market's agent (ask_agent) · minStake 5,000 · no owner() · 0G only |
| AdextoStakeHub | 0x440B89416A3a907a7016F20A29DA18665269A52f | live · every 0G market except $ADEXTO, from the v1 and 0.11.0 factories · minimum 0.001% of supply · block 45891788 · no owner() |
Base Mainnet · chain ID 8453
| Contract | Address | Notes |
|---|---|---|
| AdextoFactory | 0xF5f904ca7763Fc6755bbCe5466a9DBd4C15c2708 | current · ADEXTO v1 · VERSION 1.0.0 · 21,806 B · block 52008858 · PROTOCOL_FEE_BPS 10, carved out of the total · 16 tickers reserved |
| AdextoFactory | 0x216E7880D64D94335B583c539802d3e61958d4A2 | superseded · VERSION 0.11.0 · 21,281 B · block 50971523 · PROTOCOL_FEE_BPS 10, charged on top · its markets keep these rates forever |
| ERC-8004 agent (ours) | 84622 | registered, owned by the deployer · id is chain-specific |
| AdextoStakeHub | 0x2ba1EcffCD624Dc18044531F3999F0445014240D | live · every Base market, from the v1 and 0.11.0 factories · minimum 0.001% of supply · block 52052214 · no owner() |
Arbitrum One · chain ID 42161
| Contract | Address | Notes |
|---|---|---|
| AdextoFactory | 0x79DF3671e7e7456832C84a34c2bC0DB7871C0E0E | current · ADEXTO v1 · VERSION 1.0.0 · 21,806 B · block 510474755 · PROTOCOL_FEE_BPS 10, carved out of the total · 16 tickers reserved |
| AdextoFactory | 0xE17f1027FC5f294327D701829baeD9d6519e922C | superseded · VERSION 0.11.0 · 21,281 B · block 502476317 · PROTOCOL_FEE_BPS 10, charged on top · its markets keep these rates forever |
| ERC-8004 agent (ours) | 1457 | registered, owned by the deployer · id is chain-specific |
| AdextoStakeHub | 0xdf8891bA9fd8e3DC2E7D0A0ccae279247cd2ddf3 | live · every Arbitrum One market except $SAI, from the v1 and 0.11.0 factories · minimum 0.001% of supply · block 510798163 · no owner() |
Monad Mainnet · chain ID 143
| Contract | Address | Notes |
|---|---|---|
| AdextoFactory | 0x3dFcBEd7dd889F465cC9f75c430B43Ef873b6056 | current · ADEXTO v1 · VERSION 1.0.0 · 21,806 B · block 109440540 · PROTOCOL_FEE_BPS 10, carved out of the total · 16 tickers reserved |
| AdextoFactory | 0x5800e9715a47a598fce9bc3B65a95FD6BeBf76A3 | superseded · VERSION 0.11.0 · 21,281 B · block 102583076 · PROTOCOL_FEE_BPS 10, charged on top · its markets keep these rates forever |
| ERC-8004 agent (ours) | 10247 and 10251 | both registered and both owned by the deployer · 10251 is the id $PARCEL and $CURB bind · ids are chain-specific |
SAi Monad ($SAI) | token 0xD873B033e2dffbF7E3107CD61E7156cE23B39f20 · curve 0x6CA74a83eB8d7e9fbaBd443218d2554028eD35Ea | the first v1 market on Monad · bound to ERC-8004 agent 10275, owned by its creator wallet · stake 0xAadb44692dC4c9A1759361ea973B83aa7f36700e · all three exact matches on Sourcify |
| AdextoStakeHub | 0xb89d17F7308Ac007b106EB400eB2A8CB51cf887A | live · every Monad market except $SAI, from the v1 and 0.11.0 factories · minimum 0.001% of supply · block 109727181 · no owner() |
Robinhood Chain · chain ID 4663
An Arbitrum Orbit chain. ADEXTO v1 is the first generation here, so there is no superseded factory. Its first market is $SAI (SAi Robin).
| Contract | Address | Notes |
|---|---|---|
| AdextoFactory | 0x8e63e117E71A80Cfc10fDF375F079e2e29cd7D7D | current · ADEXTO v1 · VERSION 1.0.0 · 21,806 B · block 76864198 · PROTOCOL_FEE_BPS 10, carved out of the total · 212 tickers reserved: the base 16, USDG and the 195 tokenized stocks active on the chain at deployment |
| AdextoStakeHub | 0x05EFA7F066FcbefbE650EDd58583C107831A600B | live · every Robinhood Chain market except $SAI, from the v1 factory · minimum 0.001% of supply · block 77733726 · no owner() |
The factory sits at the deployer's first-nonce address, and on Base and Monad that same address holds an unrelated pre-release contract. An address means nothing without its chain id.
Deployer: 0x8a3c7524Aaed081825aC88eC7f4cCECFc583ee7D
Shortened here. Read the whole README on GitHub.
Tools it offers (14)
What this server listed when ahel dialed its public endpoint in Oct 2026, with no key and no account of yours. The names are the server’s own.
list_marketsget_marketquote_buyhow_to_paybuy_tokenpay_and_buytrade_historycheck_stakeaccess_messageask_agentprepare_launchregister_launchprepare_stakeprepare_claim
Signals
- GitHub stars
- 2
- Last commit
- Oct 2026
Advanced
- Delivery
- ADEXTO MCP server → your ahel connector (mcp.ahel.ai) → your AI.
- Item type
- mcp-server
- Key
xyz-adexto-mcp- Source
- github.com/0xcuy/adexto
- Hosted endpoint
https://adexto.xyz/api/mcp