justi-mcp
Justi-mcp is an MCP server for justi.fun that lets AI assistants inspect coins, protocol rules, quotes, stats, and build unsigned Solana swap/launch transactions for users to sign.
Search or list justi.fun coins with sorting, filters, and paging.
Get full coin detail: metadata, socials, fee split, safety facts, curve progress, graduation, and pool info.
Explain protocol rules and fees: fee tiers/splits, sniper window, dev buy cap, copy rule, holder rewards, and graduation.
Quote buys or sells with expected/min output, price impact, and fee breakdown.
Build unsigned v0 swap transactions for buys/sells, including fresh quote, simulation, compute limit, and priority fee.
Build unsigned coin launch/create transactions with site rules and optional custom vanity mint.
View recent coin trades and platform-wide stats.
Check any Solana transaction signature status and associated justi.fun swap or launch.
Never holds keys or sends transactions; build tools return unsigned transactions for the user’s wallet to sign.
Provides tools for interacting with justi.fun, a Solana launchpad: searching and reading coin data, quoting buys and sells, viewing recent trades and platform stats, checking transaction status, and building unsigned Solana swap and launch transactions for a user's wallet to sign.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@justi-mcpquote 0.5 SOL of $SWORDOPE on justi.fun"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@justifun/mcp
An MCP server for justi.fun, a fair Solana launchpad on Meteora. It lets AI assistants (Claude, Cursor, any MCP client) find coins, read coin detail, explain the rules and fees, quote trades, and build unsigned swap and launch transactions for a user's wallet to sign.
It never holds keys and never sends a transaction. Build tools return unsigned transactions only.
Package name:
@justifun/mcpneeds thejustifunnpm org. Until it exists the same code is published asjusti-mcp; use that name in the configs below.
Tools
Tool | What it does |
| List or search coins (q = ticker, name or mint), sort by new, marketcap, volume24h, lastTrade, progress, trades |
| One coin: metadata, socials, fee split, safety facts, curve progress, graduation, launch block fee |
| Program, the 20 fee-tier configs, fee claimer, lookup table, every fee split, launch block fee, dev buy cap, copy rule |
| Quote a buy (amountSol) or sell (amountTokens): expected and minimum out, impact, fee and where it goes |
| Unsigned v0 swap transaction for a wallet, plus how to submit it |
| Unsigned create transaction for a new coin, same rules as the site |
| Recent trades of a coin, newest first |
| Platform totals |
| Status of any signature and the swap or launch it belongs to |
Related MCP server: Solana Web3.js MCP Server
Setup
Node 18 or newer. No API key needed. Optional env: JUSTI_API_KEY (higher limits), JUSTI_API_URL (default: the production API).
Claude Desktop
claude_desktop_config.json (Settings, Developer, Edit Config):
{
"mcpServers": {
"justi": {
"command": "npx",
"args": ["-y", "@justifun/mcp"]
}
}
}Claude Code
claude mcp add justi -- npx -y @justifun/mcpCursor
.cursor/mcp.json in your project (or ~/.cursor/mcp.json):
{
"mcpServers": {
"justi": {
"command": "npx",
"args": ["-y", "@justifun/mcp"],
"env": { "JUSTI_API_KEY": "" }
}
}
}VS Code
.vscode/mcp.json:
{
"servers": {
"justi": { "type": "stdio", "command": "npx", "args": ["-y", "@justifun/mcp"] }
}
}From source
git clone <this repo> && cd mcp && npm install && npm run build
# then use "command": "node", "args": ["/path/to/mcp/dist/index.js"]Things to ask
"What are the newest coins on justi.fun with the most volume today?"
"How are fees split on justi.fun if I pick holder rewards?"
"Quote 0.5 SOL of $SWORDOPE on justi.fun."
"Build a launch for my wallet : name Cattleaxe, ticker CAXE, holder rewards, image ."
An agent can build the transaction, but the user signs it in their own wallet. To do the full flow in code
(build, sign, submit, confirm) use the SDK: @justifun/sdk.
Build a launchpad feature on Solana
If you are adding token launches or trading to an app, the pieces are:
REST API with an OpenAPI 3.1 spec: https://api.justi.fun/v1/openapi.json
TypeScript SDK:
@justifun/sdk(launch, quote, buy, sell, subscribe, verifyWebhook)Webhooks and a WebSocket for live trades, launches and graduations
Development
npm install
npm run dev # stdio server from source
npm test # spawns the server with the official MCP client and calls every tool (JUSTI_API_URL=...)
npx @modelcontextprotocol/inspector --cli node dist/index.js --method tools/listLicense
MIT
Available Tools
9 toolsjusti_build_launchBuild an unsigned coin launchA
Build the create transaction for a new coin on justi.fun, with the same rules as the site (fee tiers, 5 second sniper window, dev buy cap of 15% of supply, copy rule, 10 launches per wallet per day). The creator wallet must sign it; nothing is sent. mode: creator (creator earns 0 to 2.5%), holders (holders earn 0.5% in SOL), split (0.5% holders plus creator 0.25 to 2%). Without customMint the server picks a ...JUST vanity mint and signs that slot.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | ||
| name | Yes | ||
| xUrl | No | ||
| image | Yes | https URL of the coin image (png, jpeg, gif or webp, up to 5 MB) | |
| ticker | Yes | 2 to 10 letters or numbers | |
| wallet | Yes | Creator wallet: pays, signs, owns the coin | |
| website | No | ||
| devBuySol | No | Optional dev buy in SOL inside the create transaction | |
| creatorBps | No | creator: 0-250 in steps of 25. split: 25-200. holders: 0 | |
| customMint | No | Public key of a vanity mint the user holds. They sign with it too. Never pass a secret key. | |
| description | No | ||
| telegramUrl | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond annotations by disclosing rate limits (10 launches per wallet per day), the 15% dev buy cap, the 5 second sniper window, fee/mode economics, and the server-side vanity mint behavior when customMint is absent. These are meaningful behavioral constraints that annotations do not carry. It stops short of explaining transaction expiry, error conditions, or exactly what the unsigned transaction contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose and core constraints in three dense sentences with little waste. The long parenthetical rule list is slightly run-on but every clause carries information about fees, caps, or signing behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter mutation-style build tool with no output schema, the description covers the essential semantics, signing requirement, rate limits, and server behavior. It would be more complete if it stated the shape of the returned unsigned transaction and any failure or expiry behavior, but the core call-preparation context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 50% schema description coverage across 12 parameters, the description compensates well for the most consequential ones: mode is explained in terms of creator/holder earnings, customMint triggers server-side mint selection and an extra signature, and devBuySol is bounded by the 15% supply cap. Several metadata parameters (xUrl, website, telegramUrl, description, name/ticker) receive no explanation beyond the schema, which keeps it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Build the create transaction for a new coin on justi.fun,' and immediately distinguishes it from a send operation with 'nothing is sent.' An agent can tell this is the launch-preparation step rather than a swap or query without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it by saying the creator wallet must sign the result and nothing is sent, but it never names an alternative sibling or an explicit when-not condition. The signing requirement is a prerequisite, not a usage guideline, so the agent must infer the workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
justi_build_swapBuild an unsigned swap transactionA
Build an unsigned Solana v0 transaction that buys or sells a justi.fun coin for a wallet. Nothing is signed or sent: the user's wallet must sign it. The server quotes fresh, simulates, and sets the compute limit and priority fee. Returns swapId, the base64 transaction, the quote and how to submit.
| Name | Required | Description | Default |
|---|---|---|---|
| mint | Yes | ||
| side | Yes | ||
| wallet | Yes | The wallet that pays and signs | |
| amountRaw | No | Raw units instead of the decimal amounts | |
| amountSol | No | Buy: SOL to spend | |
| priorityFee | No | "auto" or micro-lamports per compute unit | |
| slippageBps | No | ||
| amountTokens | No | Sell: whole tokens |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: nothing is signed or sent, the user's wallet must sign, the server re-quotes, simulates, and sets compute limit and priority fee. That explains the non-destructive but state-changing workflow clearly. It stops short of stating auth requirements or whether the quote can expire.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with purpose, then the no-signing constraint, then server behavior, then the return shape. No filler and every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, spelling out the return (swapId, base64 tx, quote, submission instructions) is genuinely useful, and the simulation/priority-fee behavior is covered. The gaps are the amount-parameter selection rules and slippage defaults for an 8-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 63%, so the schema already documents most fields, including the buy/sell amount fields. The description only mentions priority fee indirectly and adds no guidance on which amount parameter to use per side or on slippage defaults, so it doesn't compensate for the uncovered parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Build an unsigned Solana v0 transaction that buys or sells a justi.fun coin') and its scope (unsigned, per-wallet). The 'unsigned build' framing clearly separates it from justi_quote and from the signing/submission siblings like justi_tx_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: you call this to get a swap transaction to sign. It never explicitly says when to prefer justi_quote first, or when not to use this (e.g. for launches, which belong to justi_build_launch). No alternatives or exclusions are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
justi_get_coinGet one justi.fun coinARead-only
Full detail of one coin by mint: name, ticker, description, socials, fee split, safety facts (mint and freeze authority, metadata, LP lock), bonding curve progress, graduation and DAMM v2 pool, sniper window, totals.
| Name | Required | Description | Default |
|---|---|---|---|
| mint | Yes | Coin mint address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so safety is covered; the description's added value is enumerating exactly what comes back (socials, fee split, safety facts, bonding curve progress, graduation/DAMM v2 pool, sniper window, totals). With no output schema, that return-shape disclosure is genuinely useful. It stops short of noting not-found behavior or data freshness for an open-world live endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with the key (mint) stated early and no filler. The trailing field list is dense but each item signals real payload content an agent may need to plan around.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read with no output schema, the description covers the important ground by describing the returned record's composition. Remaining gaps (behavior for invalid/nonexistent mints, whether the payload is live or cached) are minor for a read-only lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter already carries a base58 pattern and "Coin mint address" description. The description only restates "by mint", adding no format hints, case sensitivity, or examples, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific retrieval ("Full detail of one coin") plus the lookup key (mint), and the phrase "one coin" implicitly contrasts with the sibling justi_list_coins. It does not name justi_list_coins explicitly, so differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the per-coin lookup to run once it has a mint (e.g., from justi_list_coins or a trade). There is no explicit when-to-use/when-not guidance, no mention of what to do if the mint is unknown, and no alternatives named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
justi_list_coinsList or search justi.fun coinsARead-only
List coins launched on justi.fun (a Solana launchpad on Meteora), newest first by default. Search by ticker or name with q, or pass an exact mint. Sort by new, marketcap, volume24h, lastTrade, progress or trades. Returns compact rows and nextCursor for paging.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Ticker or name contains, or an exact mint | |
| sort | No | ||
| limit | No | Default 20 | |
| cursor | No | nextCursor from the previous call | |
| status | No | curve: on the bonding curve. graduated: trading on Meteora DAMM v2 | |
| creator | No | Only coins created by this wallet |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered; the description adds genuine context by disclosing the default ordering and the return shape ('compact rows and nextCursor'), which matters because there is no output schema. It doesn't mention rate limits or what fields 'compact rows' actually contain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, zero waste, with the resource identification and default ordering front-loaded before the parameter guidance and return note.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the necessary work of noting compact rows plus nextCursor for paging, and the filter surface is covered by the schema. Minor gaps: no guidance on the boundary with justi_get_coin and no sense of what a 'compact row' includes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 83%, with enum values and the status semantics documented in the schema itself. The description largely restates the sort enum and the q behavior already described in the schema, adding little beyond baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ('List coins launched on justi.fun') with the platform identified as a Solana launchpad on Meteora, plus the default ordering stated. The dual list/search framing plus 'pass an exact mint' implicitly separates it from the single-coin sibling justi_get_coin.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains how to search (q for ticker/name, exact mint, or filter by sort) and that newest-first is the default, giving clear usage context. It stops short of exclusions, e.g. it never says to use justi_get_coin instead when you already have a mint and want full detail.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
justi_platform_statsjusti.fun platform totalsARead-only
Platform-wide totals of justi.fun: coins launched, volume, fees, holder payouts, burns.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and external-data exposure are covered. The description adds the metric categories being totaled, which is meaningful value, but says nothing about data freshness, whether totals are cumulative historical or a current snapshot, or how recently they are computed — a real concern for an open-world stats endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the scope ('Platform-wide totals of justi.fun') followed by the metric list. It is efficient with no filler, though the phrase overlaps substantially with the title rather than adding new framing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of telling the agent what comes back; the metric list partially does this, but leaves open units, snapshot vs. cumulative semantics, and whether data is live or cached. Given the tool is simple and read-only, this is adequate but leaves a genuine gap for an open-world stats call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing to disambiguate; baseline 4 applies. The description avoids inventing or misdescribing inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb-free but precise resource: platform-wide aggregate totals, and enumerates the metrics (coins launched, volume, fees, holder payouts, burns). This clearly distinguishes it from per-coin siblings like justi_get_coin, justi_recent_trades and justi_tx_status, which are all scoped to individual items rather than platform aggregates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the tool for 'give me overall platform numbers' as opposed to per-coin or per-transaction lookups. There is no explicit when-to-use / when-not-to-use statement and no naming of an alternative (e.g. justi_protocol_info), which is the obvious potential overlap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
justi_protocol_infojusti.fun protocol, rules and feesARead-only
What justi.fun is and how it works on chain: Meteora DBC program, the 20 fee-tier configs, fee claimer, lookup table, how to tell a coin is from justi.fun, every fee split, the 5 second sniper window schedule, dev buy cap, copy rule, holder rewards and graduation. Use this before explaining fees or building a launch.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds that this is a static knowledge/policy surface rather than a live query, but says nothing about return shape, size, or caching behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then a compact comma-delimited topic inventory. The list is dense and slightly comma-spliced, but every item is a genuine content pointer rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter reference tool with no output schema, the description must convey what comes back, and it does so by enumerating the covered topics. An agent knows exactly what questions this tool can answer before calling it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so there is nothing to disambiguate; baseline 4 applies. The description correctly signals that no arguments select a sub-topic, implying the whole reference is returned at once.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: what justi.fun is and how it works on chain, then enumerates the exact content domains (Meteora DBC program, fee tiers, sniper window, dev buy cap, graduation). This lets an agent distinguish it immediately from action-oriented siblings like justi_build_launch or justi_quote.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use this before explaining fees or building a launch" gives a concrete trigger condition tied to two downstream tasks. It does not explicitly name an alternative tool to use instead when this one is wrong, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
justi_quoteQuote a buy or sellARead-only
Quote a trade on a justi.fun coin (bonding curve before graduation, Meteora DAMM v2 after). For a buy give amountSol, for a sell give amountTokens (whole tokens) or amountRaw. Returns expected and minimum output, price impact, the fee and where it goes (creator, holders, burns, Meteora).
| Name | Required | Description | Default |
|---|---|---|---|
| mint | Yes | ||
| side | Yes | ||
| amountRaw | No | Raw units instead: lamports for a buy, token base units (6 decimals) for a sell | |
| amountSol | No | Buy: SOL to spend, e.g. 0.5 | |
| slippageBps | No | Default 1000 (10%) | |
| amountTokens | No | Sell: whole tokens, e.g. 250000 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds meaningful behavioral context: pricing depends on whether the coin is pre- or post-graduation, and the response includes expected/minimum output, price impact, fee amount, and fee recipients.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the first establishes purpose and venue behavior, the second covers side-specific inputs and return values. It is front-loaded and contains no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only quote tool with no output schema, the description explains the relevant return fields and platform-dependent pricing behavior. The main remaining gap is an explicit statement that this does not execute a trade, though readOnlyHint=true already signals that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds side-dependent meaning beyond the schema by tying amountSol to buys and amountTokens/amountRaw to sells, including that amountTokens is in whole tokens. SlippageBps is left to the schema, which already documents its default and range, so the 67% schema coverage is reasonably supplemented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: "Quote a trade on a justi.fun coin," and clarifies the pricing venue changes from bonding curve to Meteora DAMM v2 after graduation. It is clearly a quoting tool rather than an execution tool, though it does not explicitly name justi_build_swap as the execution sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete input guidance: use amountSol for buys and amountTokens or amountRaw for sells, with whole-token semantics for amountTokens. However, it does not explicitly state when to use this instead of justi_build_swap or that it only previews a trade and does not execute it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
justi_recent_tradesRecent trades of a coinARead-only
Trades of one justi.fun coin, newest first, on the curve and on DAMM v2 after graduation. Filter by side or wallet. Amounts in SOL and whole tokens.
| Name | Required | Description | Default |
|---|---|---|---|
| mint | Yes | ||
| side | No | ||
| limit | No | Default 20 | |
| cursor | No | ||
| wallet | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, and the description adds real value on top: newest-first ordering, coverage of both pre- and post-graduation venues, and unit disclosure (amounts in SOL and whole tokens) that an agent would otherwise have to guess. It is silent on pagination behavior and result-size caps, which keeps it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, no filler, with the core identity and ordering front-loaded and filtering/units following. Every clause conveys information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With five parameters, low schema coverage, and no output schema, the description should describe the shape of returned trades (price, timestamp, tx signature, side) and how cursor/limit interact. It covers venue scope and units well but leaves the return shape and pagination mechanics unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 20% (just limit), so the description carries most of the burden; it does explain that side and wallet act as filters, which gives those two params meaning beyond their bare types and enum. The mint parameter and, critically, the cursor parameter receive no explanation in either the schema or the description, leaving the pagination contract undefined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete resource (trades of one justi.fun coin), the ordering (newest first), and the venue scope (bonding curve plus DAMM v2 after graduation), which is far more specific than the title alone. It doesn't name a sibling to differentiate from, but no sibling tool in the list covers trade history, so the risk of mis-selection is low.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Filter by side or wallet" implies the two narrowing options, giving some usage context. However, there is no explicit when-to-use guidance, no mention of pagination workflow despite a cursor parameter, and no statement of what happens when filters are omitted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
justi_tx_statusStatus of a transactionARead-only
Status of any Solana signature (pending, confirmed, finalized, failed, unknown), and the swap or launch it belongs to when it was built through justi.fun.
| Name | Required | Description | Default |
|---|---|---|---|
| signature | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered; the description adds real value beyond that by disclosing the possible status values and the fact that results are enriched with the originating swap/launch. It stops short of saying what happens for an unknown or non-justi signature (error vs. bare status), which is the one remaining behavioral question.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the status enumeration and the justi.fun scoping caveat each earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, the description covers what is returned (status values plus associated swap/launch) and the input scope. Only the edge-case behavior for unrecognized signatures is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the JSON schema's base58 pattern already constrains the format; the description contributes the important semantic point that the parameter accepts ANY Solana signature, not only justi.fun-built ones, which prevents an agent from wrongly narrowing its use. It does not add format or example details, but the pattern covers that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource – the status of any Solana signature – and enumerates the full result space (pending, confirmed, finalized, failed, unknown) plus the enrichment (associated swap or launch). No sibling tool does anything comparable, so an agent can distinguish it from justi_recent_trades or justi_quote without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the phrase 'when it was built through justi.fun' signals this is the follow-up check after justi_build_swap or justi_build_launch, but the description never says when to call it or what to do instead for non-justi transactions. No prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
9 tool updates
v0.1.0- First observed
justi_build_launch - First observed
justi_build_swap - First observed
justi_get_coin - First observed
justi_list_coins - First observed
justi_platform_stats - First observed
justi_protocol_info - First observed
justi_quote - First observed
justi_recent_trades - First observed
justi_tx_status
TDQS
Scored across 9 tools
Each tool has a clearly distinct resource and action: stats, transaction status, recent trades, coin listing, coin detail, protocol info, quote, swap building, and launch building. The only potential overlap is quote versus build_swap, but quote is explicitly read-only while build_swap constructs an unsigned transaction, so the boundary is clear.
All tools share the predictable justi_ prefix and snake_case style, with mostly verb_noun names such as list_coins, get_coin, build_swap, and build_launch. A few names are noun phrases like platform_stats, tx_status, protocol_info, and quote, which is a minor deviation but still readable and consistent enough.
Nine tools is well-scoped for a launchpad trading and launch-building server, with each tool covering a distinct part of the workflow. There is no obvious redundancy or missing slot that would justify adding or removing tools.
The surface covers the core lifecycle: protocol explanation, coin discovery and detail, quotes, transaction building for swaps and launches, transaction status, trade history, and platform stats. Minor gaps exist around wallet-centric views such as a wallet's coin holdings or creator fee claims, but these are not blockers for the stated read-and-build workflow.
Maintenance
Related MCP Connectors
Non-custodial DeFi tools for AI agents on Solana: swaps, perps, lending, staking, equities.
Trading tools for AI agents: token risk checks, swap quotes, unsigned swaps, holdings on 5 chains.
Solana token rug checks and safety-checked Jupiter swaps for AI agents; paid data via x402.
Solana token safety for AI agents — rug-pull, honeypot & Token-2022 trap detection before you buy.
Related MCP Servers
- AlicenseCqualityDmaintenanceEnables AI agents to interact with cryptocurrency ecosystems through wallet management, trading operations (swaps, DCA, limit orders), staking, and multi-chain support starting with Solana.37GPL 3.0
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with the Solana blockchain, manage accounts and tokens, and develop and deploy smart contracts end-to-end.4MIT

Monorail MCP Serverofficial
AlicenseNot gradedqualityDmaintenanceEnables AI agents to fetch real-time quotes, token information, and trade transaction data from Monorail's aggregation of 11 exchanges and 7000+ tokens.2MIT- AlicenseAqualityCmaintenanceEnables assistants to query Solana DEX and Pump.fun data through typed tools, including token prices, metadata, trades, creations, graduations, and bounded live stream tails.987 npmMIT