MCP server for 1ly.store β buy/sell APIs and launch tokens on Bags.fm with USDC & $1LY.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)
MCP server for 1ly.store β Enable AI agents to discover, pay for, and sell APIs using crypto.
This MCP server gives AI agents the ability to:
Supported Networks: Solana (mainnet), Base (mainnet) Payment Currency: USDC and $1LY (Solana only)
This MCP server enables AI agents (Claude, GPT, Cursor, and more) to:
Wallet path rule: wallet files must be located in your home directory (recommended) or /tmp. Paths outside those locations are rejected for security. ~/ is supported and expands to your home directory when running directly from the terminal.
Important: Claude Desktop and Cursor config JSON do not expand ~. Always use absolute paths in JSON config files (e.g. /Users/yourname/.1ly/wallets/solana.json).
When using Agentic Wallet, you do not pass raw private keys.
Make sure the Coinbase Agentic Wallet app is running and authenticated.
If you haven't installed Agentic Wallet yet:
Run MCP over HTTP (for cloud hosting or mcp.1ly.store):
| Variable | Required | Description |
|---|---|---|
ONELY_WALLET_SOLANA_KEY | No | Path to Solana keypair JSON file, or inline JSON array |
ONELY_WALLET_EVM_KEY | No | Path to EVM private key file, or inline hex key (with or without 0x) |
ONELY_API_KEY | No | API key for seller tools. Auto-loaded after 1ly_create_store |
ONELY_BUDGET_PER_CALL | No | Max USD per API call (default: 1.00) |
ONELY_BUDGET_DAILY | No | Daily USD spending limit (default: 50.00) |
ONELY_BUDGET_STATE_FILE | No | Path to local budget state file (default: ~/.1ly-mcp-budget.json) |
ONELY_NETWORK | No | Preferred network: solana or base (default: solana) |
ONELY_SOLANA_RPC_URL | No | Solana RPC URL (default: https://api.mainnet-beta.solana.com) |
ONELY_API_BASE | No | API base URL (default: https://1ly.store) |
ONELY_WALLET_PROVIDER | No | raw (default) or coinbase (Agentic Wallet, Base-only) |
ONELY_SOLANA_DRY_RUN | No | Set to 1 to simulate Solana transactions without broadcasting. No real payments. For testing only. |
MCP_TRANSPORT | No | http to run HTTP MCP server (default: stdio) |
MCP_HTTP_HOST | No | Host for HTTP MCP server (default: 0.0.0.0) |
MCP_HTTP_PORT | No | Port for HTTP MCP server (default: 3000) |
DCP_VAULT_ID | No | Vault ID for DCP relay (remote mode) |
DCP_RELAY_URL | No | Relay URL (e.g., wss://relay.dcp.1ly.store) |
DCP_RELAY_TOKEN | No | Pairing token for relay (if required) |
DCP_VAULT_HPKE_PUBLIC_KEY | No | Base64 HPKE public key for the vault (remote mode) |
DCP_RELAY_PLAINTEXT | No | Set to 1 to disable HPKE (dev only) |
A wallet is required only for paid calls. For free search/details you can run without a wallet.
Use one of: ONELY_WALLET_SOLANA_KEY, ONELY_WALLET_EVM_KEY, or ONELY_WALLET_PROVIDER=coinbase.
Add to claude_desktop_config.json:
Note: Replace
/Users/yournamewith your actual home directory. On Linux use/home/yourname.~does not work in Claude Desktop config.
Cursor uses .cursor/mcp.json. If you prefer manual setup, use:
Wallet required only for paid calls (1ly_call). Search/details work without a wallet.
1ly_searchSearch for APIs on 1ly.store marketplace.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | Yes | Search term (e.g., "weather api") |
type | string | No | Filter: "api" or "standard" |
maxPrice | number | No | Maximum price in USD |
minPrice | number | No | Minimum price in USD |
limit | number | No | Results to return (default: 10, max: 50) |
Returns:
1ly_get_detailsGet detailed information about a specific API.
| Parameter | Type | Required | Description |
|---|---|---|---|
endpoint | string | Yes | API endpoint (e.g., "joe/weather") |
Returns (example):
1ly_callCall a paid API with automatic crypto payment.
| Parameter | Type | Required | Description |
|---|---|---|---|
endpoint | string | Yes | API endpoint (e.g., "joe/weather") |
method | string | No | HTTP method: GET, POST, PUT, DELETE, PATCH (default: GET) |
body | object | No | Request body for POST/PUT/PATCH |
headers | object | No | Additional headers |
Returns (example):
Note: The
_1lyobject contains tokens needed for1ly_review. Save these if you want to leave a review.
For free APIs,_1lymay be{ "note": "No payment required (free API)" }.
Agentic Wallet (Base only):
ONELY_WALLET_PROVIDER=coinbase.1ly_reviewLeave a review after a successful purchase.
| Parameter | Type | Required | Description |
|---|---|---|---|
purchaseId | string | Yes | From _1ly.purchaseId in 1ly_call response |
reviewToken | string | Yes | From _1ly.reviewToken in 1ly_call response |
positive | boolean | Yes | true for positive, false for negative |
comment | string | No | Review comment (max 500 chars) |
Returns:
These tools require an API key. There are two ways to get one:
Option A β Via MCP tool (agent does it for you):
Run 1ly_create_store and the key is automatically saved locally.
Option B β Via UI (no wallet needed):
ONELY_API_KEY in your MCP config1ly_create_storeCreate a new store and get an API key. Run this once. The API key is automatically saved locally.
Note: Creating a store requires a raw wallet key (Solana or EVM). Agentic Wallet does not support store creation yet.
| Parameter | Type | Required | Description |
|---|---|---|---|
username | string | No | Store username (3-20 chars, auto-generated if omitted) |
displayName | string | No | Display name (max 50 chars) |
avatarUrl | string | No | Avatar URL |
Returns (example):
API Key Storage:
- macOS:
~/Library/Application Support/1ly/onely_api_key.json- Linux:
~/.config/1ly/onely_api_key.json- Windows:
%APPDATA%\1ly\onely_api_key.json
1ly_create_linkCreate a new API link (paid or free).
| Parameter | Type | Required | Description |
|---|---|---|---|
title | string | Yes | Link title (max 200 chars) |
url | string | Yes | Target URL (your API endpoint) |
price | string | No | Price in USD (e.g., "0.10"). Omit for free |
description | string | No | Description (max 500 chars) |
slug | string | No | Custom slug (3-64 chars, lowercase, hyphens allowed) |
currency | string | No | Always "USDC" |
isPublic | boolean | No | List publicly (default: true) |
isStealth | boolean | No | Hide from search (default: false) |
webhookUrl | string | No | Optional webhook URL for purchase events |
Returns (example):
1ly_list_linksList all your API links.
No parameters.
Returns (example):
1ly_update_linkUpdate an existing API link.
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string (UUID) | Yes | Link ID |
title | string | No | New title |
url | string | No | New target URL |
price | string | No | New price |
description | string | No | New description |
slug | string | No | New slug |
isPublic | boolean | No | Update visibility |
isStealth | boolean | No | Update stealth mode |
webhookUrl | string | No | Update webhook URL (set to null to clear) |
Returns (example):
1ly_delete_linkDelete an API link.
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string (UUID) | Yes | Link ID to delete |
Returns (example):
1ly_get_statsGet store or link statistics.
| Parameter | Type | Required | Description |
|---|---|---|---|
period | string | No | Time period: "7d", "30d", "90d", "all" |
linkId | string (UUID) | No | Specific link ID (omit for store-wide stats) |
Returns (example):
1ly_list_keysList all API keys for your store.
No parameters.
Returns (example):
1ly_create_keyCreate a new API key.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | No | Key name (max 64 chars) |
Returns (example when key limit is reached):
1ly_revoke_keyRevoke an API key.
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string (UUID) | Yes | Key ID to revoke |
Returns (example):
1ly_update_profileUpdate basic profile fields.
| Parameter | Type | Required | Description |
|---|---|---|---|
username | string | No | New username (lowercase + underscores) |
displayName | string | No | Public display name |
bio | string | No | Short bio (max 160 chars) |
1ly_update_socialsReplace socials list (up to 10).
| Parameter | Type | Required | Description |
|---|---|---|---|
socials | array | Yes | Social links |
1ly_update_avatarUpdate store avatar using a public URL or base64 image.
| Parameter | Type | Required | Description |
|---|---|---|---|
avatarUrl | string | No | Public image URL |
imageBase64 | string | No | Base64-encoded image (max 5MB decoded) |
mimeType | string | No | image/png, image/jpeg, image/webp, image/gif |
filename | string | No | Optional filename |
1ly_withdrawRequest a withdrawal (Solana only).
| Parameter | Type | Required | Description |
|---|---|---|---|
amount | string | Yes | Amount in USDC (min 0.1) |
walletAddress | string | Yes | Solana wallet address |
1ly_list_withdrawalsList recent withdrawals.
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | number | No | Max items (default 25, max 100) |
cursor | string | No | Pagination cursor |
These tools require a Solana wallet (ONELY_WALLET_SOLANA_KEY)
1ly_launch_tokenLaunch a token on Bags.fm (v2 flow).
Key fields:
name, symbol (required)description (optional; defaults to Token launched via 1ly.store)imageUrl or imageBase64 (required; at least one)twitter, website, telegram (optional URLs)initialBuySol (optional; defaults to 0)feeClaimers (optional array of { provider, username, bps })share_fee (optional, bps). Adds a 1ly marketplace fee claimer on the backend. If set, the creator share is autoβreduced.Validation (Bags.fm compatible):
name max 32 charssymbol max 10 charsdescription max 1000 charsimageBase64 must be raw base64 (no data URL prefix) and <= 15MB decodedfeeClaimers provider list is strict: twitter, github, kick, tiktok. Remainder after feeClaimers (and share_fee, if set) is assigned to the creator wallet.
bps = basis points: 10000 = 100%, 1000 = 10%, 100 = 1%.
Example: 90% to a GitHub claimer + 1% share_fee:
1ly_list_tokensList tokens launched by a wallet (public listing by wallet address, default limit 10).
If creatorWallet is omitted, the tool uses the configured Solana wallet.
Parameters:
creatorWallet (optional) β wallet address to list tokens forlimit (optional) β max results (default 10, max 200)1ly_claim_feesClaim Bags fee share for a token. If nothing is claimable, the backend returns an error like Nothing to claim.
Parameters:
tokenMint (required) β token mint addresswallet (optional) β wallet address to claim for (defaults to configured wallet)1ly_trade_tokenTrade tokens on Bags using Bags quote + swap flow.
Parameters:
inputMint (required) β input token mint (e.g., SOL = So11111111111111111111111111111111111111112)outputMint (required) β output token mintamount (required) β amount in smallest units (positive integer string)slippageMode (optional) β auto or manual (default auto)slippageBps (optional) β required if slippageMode=manual, range 0-100001ly_trade_quoteGet a Bags trade quote without executing a swap.
Parameters:
inputMint (required) β input token mintoutputMint (required) β output token mintamount (required) β amount in smallest units (positive integer string)slippageMode (optional) β auto or manual (default auto)slippageBps (optional) β required if slippageMode=manual, range 0-10000Create a new keypair:
Fund with USDC on Solana mainnet.
Export your private key or Create a new keypair:
Fund with USDC on Base mainnet.
All responses follow this structure:
Success:
Error:
| Error | Code | Cause | Solution |
|---|---|---|---|
Missing wallet config | MISSING_WALLET_CONFIG | No wallet env var set | Set ONELY_WALLET_SOLANA_KEY, ONELY_WALLET_EVM_KEY, or ONELY_WALLET_PROVIDER=coinbase |
Agentic Wallet not running | AGENTIC_WALLET_NOT_RUNNING | Wallet app not running or not authenticated | Open the Agentic Wallet app and sign in (npx awal show) |
Agentic Wallet Base-only | AGENTIC_WALLET_BASE_ONLY | API requires Solana payment | Use raw Solana wallet or a Base-compatible endpoint |
Agentic Wallet store creation | AGENTIC_WALLET_STORE_CREATION | 1ly_create_store requires raw wallet signature | Use raw Solana/EVM wallet keys for store creation |
Missing ONELY_API_KEY | MISSING_API_KEY | Seller tool called without API key | Run 1ly_create_store first |
Price exceeds per-call budget | PRICE_EXCEEDS_PER_CALL_BUDGET | API costs more than limit | Increase ONELY_BUDGET_PER_CALL |
Daily budget exceeded | DAILY_BUDGET_EXCEEDED | Spent more than daily limit | Wait until tomorrow or increase ONELY_BUDGET_DAILY |
Insufficient funds | INSUFFICIENT_FUNDS | Wallet balance too low | Add USDC to your wallet |
MIT
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/mcp-server-59)<a href="https://allmcps.com/mcp/mcp-server-59"><img src="https://allmcps.com/api/badge/mcp-server-59?style=directory" alt="Mcp Server on AllMCPs" /></a>