1ly MCP
Permite que agentes de IA descubram, lancem tokens, paguem e vendam APIs e recursos usando x402
Documentação
@1ly/mcp-server
Servidor MCP para 1ly.store — Permite que agentes de IA descubram, paguem e vendam APIs usando criptomoedas.
Visão Geral
Este servidor MCP dá aos agentes de IA a capacidade de:
- Comprar — Pesquisar, descobrir e pagar por APIs/recursos com pagamentos automáticos em cripto (protocolo x402)
- Vender — Criar uma loja, listar endpoints de APIs pagos ou recursos, e aceitar pagamentos
- Lançar Tokens — Criar e negociar tokens no Bags.fm, e reivindicar participação nas taxas
Redes suportadas: Solana (mainnet), Base (mainnet) Moeda de pagamento: USDC e $1LY (somente Solana)
O que é isso?
Este servidor MCP permite que agentes de IA (Claude, GPT, Cursor e outros) possam:
- Criar uma loja no 1ly.store
- Aceitar pagamentos para suas APIs/recursos usando 1ly como camada de pagamento
- Criar links pagos que qualquer agente compatível com x402 pode chamar e pagar automaticamente
- Listar links pagos no marketplace 1ly para descoberta instantânea por agentes
- Pesquisar APIs e serviços no 1ly.store
- Obter detalhes sobre preços, avaliações e uso
- Chamar APIs pagas com pagamentos automáticos em cripto (protocolo x402) de forma segura
- Deixar avaliações após compras (opcional, mas recomendado)
- Lançar tokens no Bags.fm, negociar tokens Solana e reivindicar taxas
Início Rápido
Regra do caminho da carteira: os arquivos de carteira devem estar localizados no seu diretório home (recomendado) ou /tmp. Caminhos fora desses locais são rejeitados por segurança. ~/ é suportado e expande para o seu diretório home quando executado diretamente do terminal.
Importante: Claude Desktop e Cursor não expandem ~ em JSON de configuração. Sempre use caminhos absolutos em arquivos JSON de configuração (ex.: /Users/yourname/.1ly/wallets/solana.json).
1. Instalar e Executar
Opção A: Carteira Bruta (padrão)
# Solana wallet
ONELY_WALLET_SOLANA_KEY="~/.1ly/wallets/solana.json" npx @1ly/mcp-server
# OR Base/EVM wallet
ONELY_WALLET_EVM_KEY="~/.1ly/wallets/evm.key" npx @1ly/mcp-server
# OR both wallets
ONELY_WALLET_SOLANA_KEY="~/.1ly/wallets/solana.json" \
ONELY_WALLET_EVM_KEY="~/.1ly/wallets/evm.key" \
npx @1ly/mcp-server
Opção B: Coinbase Agentic Wallet (somente Base)
ONELY_WALLET_PROVIDER="coinbase" npx @1ly/mcp-server
Ao usar Agentic Wallet, você não passa chaves privadas brutas.
Certifique-se de que o aplicativo Coinbase Agentic Wallet esteja em execução e autenticado.
Se você ainda não instalou o Agentic Wallet:
- Siga a documentação do Coinbase Agentic Wallet: docs.cdp.coinbase.com/agentic-wallet/welcome
- Instalação rápida:
npx skills add coinbase/agentic-wallet-skills
npx awal show
Opção C: DCP Local (recomendado para assinatura segura)
# Start DCP locally
dcp init
npx @dcprotocol/server
# Run MCP (auto-detects DCP at localhost:8420)
npx @1ly/mcp-server
Opção D: DCP Remoto (relay)
# Pairing outputs these values
DCP_VAULT_ID="vault_..." \
DCP_RELAY_URL="wss://relay.dcp.1ly.store" \
DCP_VAULT_HPKE_PUBLIC_KEY="base64..." \
npx @1ly/mcp-server
2. Verificar Configuração
ONELY_WALLET_SOLANA_KEY="~/.1ly/wallets/solana.json" npx @1ly/mcp-server --self-test
Configuração
Modo HTTP (MCP na Nuvem)
Execute MCP via HTTP (para hospedagem em nuvem ou mcp.1ly.store):
# HTTP transport
MCP_TRANSPORT=http npx @1ly/mcp-server
# Custom host/port
MCP_TRANSPORT=http MCP_HTTP_HOST=0.0.0.0 MCP_HTTP_PORT=3000 npx @1ly/mcp-server
Variáveis de Ambiente
| Variável | Obrigatória | Descrição |
|---|---|---|
ONELY_WALLET_SOLANA_KEY | Não | Caminho para o arquivo JSON do keypair Solana, ou array JSON inline |
ONELY_WALLET_EVM_KEY | Não | Caminho para o arquivo de chave privada EVM, ou chave hex inline (com ou sem 0x) |
ONELY_API_KEY | Não | Chave de API para ferramentas de vendedor. Carregada automaticamente após 1ly_create_store |
ONELY_BUDGET_PER_CALL | Não | Máximo em USD por chamada de API (padrão: 1.00) |
ONELY_BUDGET_DAILY | Não | Limite diário de gastos em USD (padrão: 50.00) |
ONELY_BUDGET_STATE_FILE | Não | Caminho para o arquivo local de estado do orçamento (padrão: ~/.1ly-mcp-budget.json) |
ONELY_NETWORK | Não | Rede preferida: solana ou base (padrão: solana) |
ONELY_SOLANA_RPC_URL | Não | URL RPC da Solana (padrão: https://api.mainnet-beta.solana.com) |
ONELY_API_BASE | Não | URL base da API (padrão: https://1ly.store) |
ONELY_WALLET_PROVIDER | Não | raw (padrão) ou coinbase (Agentic Wallet, somente Base) |
ONELY_SOLANA_DRY_RUN | Não | Defina como 1 para simular transações Solana sem transmitir. Sem pagamentos reais. Apenas para testes. |
MCP_TRANSPORT | Não | http para executar o servidor MCP HTTP (padrão: stdio) |
MCP_HTTP_HOST | Não | Host para o servidor MCP HTTP (padrão: 0.0.0.0) |
MCP_HTTP_PORT | Não | Porta para o servidor MCP HTTP (padrão: 3000) |
DCP_VAULT_ID | Não | ID do cofre para relay DCP (modo remoto) |
DCP_RELAY_URL | Não | URL do relay (ex.: wss://relay.dcp.1ly.store) |
DCP_RELAY_TOKEN | Não | Token de pareamento para relay (se necessário) |
DCP_VAULT_HPKE_PUBLIC_KEY | Não | Chave pública HPKE em Base64 para o cofre (modo remoto) |
DCP_RELAY_PLAINTEXT | Não | Defina como 1 para desabilitar HPKE (apenas desenvolvimento) |
Uma carteira é necessária apenas para chamadas pagas. Para busca/detalhes gratuitos, você pode executar sem carteira.
Use uma das opções: ONELY_WALLET_SOLANA_KEY, ONELY_WALLET_EVM_KEY, ou ONELY_WALLET_PROVIDER=coinbase.
Configuração do Claude Desktop
Adicione ao claude_desktop_config.json:
{
"mcpServers": {
"1ly": {
"command": "npx",
"args": ["@1ly/mcp-server"],
"env": {
"ONELY_WALLET_SOLANA_KEY": "/Users/yourname/.1ly/wallets/solana.json",
"ONELY_BUDGET_PER_CALL": "1.00",
"ONELY_BUDGET_DAILY": "50.00"
}
}
}
}
Nota: Substitua
/Users/yournamepelo seu diretório home real. No Linux use/home/yourname.~não funciona na configuração do Claude Desktop.
Configuração de carteira Base/EVM
{
"mcpServers": {
"1ly": {
"command": "npx",
"args": ["@1ly/mcp-server"],
"env": {
"ONELY_WALLET_EVM_KEY": "/Users/yourname/.1ly/wallets/evm.key",
"ONELY_BUDGET_PER_CALL": "1.00",
"ONELY_BUDGET_DAILY": "50.00"
}
}
}
}
Instalação com Um Clique no Cursor
O Cursor usa .cursor/mcp.json. Se preferir configuração manual, use:
{
"mcpServers": {
"1ly": {
"command": "npx",
"args": ["@1ly/mcp-server"],
"env": {
"ONELY_WALLET_SOLANA_KEY": "/absolute/path/to/solana.json",
"ONELY_BUDGET_PER_CALL": "1.00",
"ONELY_BUDGET_DAILY": "50.00"
}
}
}
}
Carteiras Solana + Base
{
"mcpServers": {
"1ly": {
"command": "npx",
"args": ["@1ly/mcp-server"],
"env": {
"ONELY_WALLET_SOLANA_KEY": "~/.1ly/wallets/solana.json",
"ONELY_WALLET_EVM_KEY": "~/.1ly/wallets/evm.key",
"ONELY_BUDGET_PER_CALL": "1.00",
"ONELY_BUDGET_DAILY": "50.00"
}
}
}
}
Referência de Ferramentas
Ferramentas do Comprador
Carteira necessária apenas para chamadas pagas (1ly_call). Busca/detalhes funcionam sem carteira.
1ly_search
Pesquise APIs no marketplace 1ly.store.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
query | string | Sim | Termo de busca (ex.: "weather api") |
type | string | Não | Filtro: "api" ou "standard" |
maxPrice | number | Não | Preço máximo em USD |
minPrice | number | Não | Preço mínimo em USD |
limit | number | Não | Resultados a retornar (padrão: 10, máx: 50) |
{
"query": "weather api",
"type": "api",
"maxPrice": 0.10
}
Retornos:
{
"ok": true,
"data": {
"results": [
{
"title": "Real-time Weather",
"endpoint": "/api/link/joe/weather",
"price": "$0.010000000000000000 USDC",
"type": "api",
"seller": "Joe's APIs",
"stats": { "buyers": 150, "rating": "95%" }
}
],
"total": 42,
"showing": 10
}
}
1ly_get_details
Obtenha informações detalhadas sobre uma API específica.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
endpoint | string | Sim | Endpoint da API (ex.: "joe/weather") |
{
"endpoint": "joe/weather"
}
Retornos (exemplo):
{
"ok": true,
"data": {
"endpoint": "/api/link/joe/weather",
"fullUrl": "https://1ly.store/api/link/joe/weather",
"link": {
"title": "Real-time Weather",
"description": "Global weather data",
"slug": "weather",
"price": "0.010000000000000000",
"currency": "USDC"
},
"paymentInfo": { "networks": ["solana", "base"] },
"reviews": {
"stats": { "total": 50, "positive": 48 },
"recent": [{ "positive": true, "comment": "Fast!" }]
}
}
}
1ly_call
Chame uma API paga com pagamento automático em cripto.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
endpoint | string | Sim | Endpoint da API (ex.: "joe/weather") |
method | string | Não | Método HTTP: GET, POST, PUT, DELETE, PATCH (padrão: GET) |
body | object | Não | Corpo da requisição para POST/PUT/PATCH |
headers | object | Não | Cabeçalhos adicionais |
{
"endpoint": "joe/weather",
"method": "POST",
"body": { "city": "NYC" }
}
Retornos (exemplo):
{
"ok": true,
"data": {
"data": {
"temp": 72,
"conditions": "sunny"
},
"_1ly": {
"purchaseId": "abc123",
"txHash": "tx_hash_here",
"reviewUrl": "https://1ly.store/api/review/abc123",
"reviewToken": "xyz789"
}
}
}
Nota: O objeto
_1lycontém tokens necessários para1ly_review. Salve-os se quiser deixar uma avaliação.
Para APIs gratuitas,_1lypode ser{ "note": "No payment required (free API)" }.
Agentic Wallet (somente Base):
- Defina
ONELY_WALLET_PROVIDER=coinbase. - Certifique-se de que o Coinbase Agentic Wallet esteja instalado, em execução e autenticado.
- Chaves privadas locais não são necessárias.
1ly_review
Deixe uma avaliação após uma compra bem-sucedida.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
purchaseId | string | Sim | De _1ly.purchaseId na resposta de 1ly_call |
reviewToken | string | Sim | De _1ly.reviewToken na resposta de 1ly_call |
positive | boolean | Sim | true para positiva, false para negativa |
comment | string | Não | Comentário da avaliação (máx. 500 caracteres) |
{
"purchaseId": "abc123",
"reviewToken": "xyz789",
"positive": true,
"comment": "Fast and accurate!"
}
Retornos:
{
"ok": true,
"data": {
"success": true,
"reviewId": "rev_456",
"message": "Positive review submitted!"
}
}
Ferramentas do Vendedor (Aceitar Pagamentos)
Estas ferramentas exigem uma chave de API. Há duas maneiras de obter uma:
Opção A — Via ferramenta MCP (o agente faz por você):
Execute 1ly_create_store e a chave é salva automaticamente localmente.
Opção B — Via interface (sem necessidade de carteira):
- Vá para 1ly.store e faça login
- Abra Configurações → ative o Modo Desenvolvedor
- Crie uma chave de API no painel
- Defina-a como
ONELY_API_KEYna sua configuração MCP
1ly_create_store
Crie uma nova loja e obtenha uma chave de API. Execute apenas uma vez. A chave de API é salva automaticamente localmente.
Nota: Criar uma loja requer uma chave de carteira bruta (Solana ou EVM). O Agentic Wallet ainda não suporta criação de lojas.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
username | string | Não | Nome de usuário da loja (3-20 caracteres, gerado automaticamente se omitido) |
displayName | string | Não | Nome de exibição (máx. 50 caracteres) |
avatarUrl | string | Não | URL do avatar |
{
"username": "myagent",
"displayName": "My Agent Store"
}
Retornos (exemplo):
{
"ok": true,
"data": {
"success": true,
"data": {
"store": {
"username": "myagent",
"displayName": "My Agent Store",
"storeUrl": "https://1ly.store/myagent",
"createdBy": "agent",
"avatarUrl": null
},
"apiKey": "1ly_live_...",
"apiKeyPrefix": "1ly_live_..."
},
"meta": {
"savedKeyPath": "~/Library/Application Support/1ly/onely_api_key.json"
}
}
}
Armazenamento da Chave de API:
- 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_link
Crie um novo link de API (pago ou gratuito).
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
title | string | Sim | Título do link (máx. 200 caracteres) |
url | string | Sim | URL de destino (seu endpoint de API) |
price | string | Não | Preço em USD (ex.: "0.10"). Omita para gratuito |
description | string | Não | Descrição (máx. 500 caracteres) |
slug | string | Não | Slug personalizado (3-64 caracteres, minúsculas, hífens permitidos) |
currency | string | Não | Sempre "USDC" |
isPublic | boolean | Não | Listar publicamente (padrão: true) |
isStealth | boolean | Não | Ocultar da busca (padrão: false) |
webhookUrl | string | Não | URL de webhook opcional para eventos de compra |
{
"title": "Premium Weather API",
"url": "https://api.example.com/weather",
"price": "0.05",
"description": "Real-time weather data",
"webhookUrl": "https://example.com/webhooks/1ly"
}
Retornos (exemplo):
{
"ok": true,
"data": {
"success": true,
"data": {
"id": "uuid-here",
"slug": "premium-weather-api",
"fullUrl": "https://1ly.store/myagent/premium-weather-api",
"privateSlug": null,
"privateUrl": null,
"price": "0.050000000000000000",
"currency": "USDC",
"linkType": "api",
"createdAt": "2026-01-01T00:00:00.000Z"
}
}
}
1ly_list_links
Liste todos os seus links de API.
Sem parâmetros.
{}
Retornos (exemplo):
{
"ok": true,
"data": {
"success": true,
"data": {
"links": [
{
"id": "uuid-here",
"url": "https://api.example.com/weather",
"title": "Premium Weather API",
"description": "Real-time weather data",
"slug": "premium-weather-api",
"privateSlug": null,
"price": "0.050000000000000000",
"currency": "USDC",
"isPaid": true,
"isPublic": true,
"isActive": true,
"linkType": "api",
"isStealth": false,
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z"
}
]
}
}
}
1ly_update_link
Atualize um link de API existente.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string (UUID) | Sim | ID do link |
title | string | Não | Novo título |
url | string | Não | Nova URL de destino |
price | string | Não | Novo preço |
description | string | Não | Nova descrição |
slug | string | Não | Novo slug |
isPublic | boolean | Não | Atualizar visibilidade |
isStealth | boolean | Não | Atualizar modo furtivo |
webhookUrl | string | Não | Atualizar URL do webhook (defina como null para limpar) |
{
"id": "uuid-here",
"price": "0.10"
}
Retornos (exemplo):
{
"ok": true,
"data": {
"success": true,
"data": {
"id": "uuid-here",
"profileId": "profile-id",
"url": "https://api.example.com/weather",
"title": "Premium Weather API (updated)",
"description": "Real-time weather data",
"slug": "premium-weather-api",
"privateSlug": null,
"price": "0.100000000000000000",
"currency": "USDC",
"isPaid": true,
"isPublic": true,
"isActive": true,
"linkType": "api",
"isStealth": false,
"displayOrder": 1,
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z"
}
}
}
1ly_delete_link
Exclua um link de API.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string (UUID) | Sim | ID do link a excluir |
{
"id": "uuid-here"
}
Retornos (exemplo):
{
"ok": true,
"data": {
"success": true
}
}
1ly_get_stats
Obtenha estatísticas da loja ou do link.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
period | string | Não | Período: "7d", "30d", "90d", "all" |
linkId | string (UUID) | Não | ID específico do link (omita para estatísticas da loja inteira) |
{
"period": "30d"
}
Retornos (exemplo):
{
"ok": true,
"data": {
"success": true,
"data": {
"period": "30d",
"views": 0,
"buyers": 9,
"revenue": "0.081000000000000009"
}
}
}
1ly_list_keys
Liste todas as chaves de API da sua loja.
Sem parâmetros.
Retornos (exemplo):
{
"ok": true,
"data": {
"success": true,
"data": {
"keys": [
{
"id": "uuid-here",
"name": "Agent Key",
"keyPrefix": "1ly_live_...",
"isActive": true,
"lastUsedAt": "2026-01-01T00:00:00.000Z",
"createdAt": "2026-01-01T00:00:00.000Z"
}
]
}
}
}
1ly_create_key
Crie uma nova chave de API.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Não | Nome da chave (máx. 64 caracteres) |
{
"name": "production-key"
}
Retornos (exemplo quando o limite de chaves é atingido):
{
"ok": false,
"error": {
"message": "Create key failed | status=400 | ... | body={\"success\":false,\"error\":{\"code\":\"LIMIT_REACHED\",\"message\":\"Maximum number of API keys reached\"}}"
}
}
1ly_revoke_key
Revogue uma chave de API.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string (UUID) | Sim | ID da chave a revogar |
{
"id": "uuid-here"
}
Retornos (exemplo):
{
"ok": true,
"data": {
"success": true,
"data": {
"id": "uuid-here",
"revoked": true
}
}
}
1ly_update_profile
Atualize campos básicos do perfil.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
username | string | Não | Novo nome de usuário (minúsculas + underscores) |
displayName | string | Não | Nome de exibição público |
bio | string | Não | Biografia curta (máx. 160 caracteres) |
{
"displayName": "My Store",
"bio": "We build paid APIs for agents."
}
1ly_update_socials
Substituir lista de redes sociais (até 10).
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
socials | array | Sim | Links de redes sociais |
{
"socials": [
{ "type": "x", "url": "https://x.com/1ly_store", "displayOrder": 0, "isVisible": true },
{ "type": "website", "url": "https://1ly.store", "displayOrder": 1 }
]
}
1ly_update_avatar
Atualizar avatar da loja usando uma URL pública ou imagem base64.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
avatarUrl | string | Não | URL pública da imagem |
imageBase64 | string | Não | Imagem codificada em base64 (máx. 5MB decodificada) |
mimeType | string | Não | image/png, image/jpeg, image/webp, image/gif |
filename | string | Não | Nome de arquivo opcional |
{
"avatarUrl": "https://example.com/avatar.png"
}
1ly_withdraw
Solicitar um saque (somente Solana).
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
amount | string | Sim | Valor em USDC (mín. 0.1) |
walletAddress | string | Sim | Endereço da carteira Solana |
{
"amount": "1.25",
"walletAddress": "7GmjjDitbCwW77dZmJko3pBDWhEh12soGNLR7zwAkf6M"
}
1ly_list_withdrawals
Listar saques recentes.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
limit | number | Não | Máx. de itens (padrão 25, máx. 100) |
cursor | string | Não | Cursor de paginação |
{
"limit": 10
}
Ferramentas de Token (Bags.fm)
Estas ferramentas exigem uma carteira Solana (ONELY_WALLET_SOLANA_KEY)
1ly_launch_token
Lançar um token no Bags.fm (fluxo v2).
Campos principais:
name,symbol(obrigatórios)description(opcional; padrão éToken launched via 1ly.store)imageUrlouimageBase64(obrigatório; pelo menos um)twitter,website,telegram(URLs opcionais)initialBuySol(opcional; padrão é0)feeClaimers(array opcional de{ provider, username, bps })share_fee(opcional, bps). Adiciona um reivindicador de taxa de marketplace 1ly no backend. Se definido, a participação do criador é reduzida automaticamente.
Validação (compatível com Bags.fm):
namemáx. 32 caracteressymbolmáx. 10 caracteresdescriptionmáx. 1000 caracteresimageBase64deve ser base64 bruto (sem prefixo de URL de dados) e <= 15MB decodificado
A lista de provedores feeClaimers é estrita: twitter, github, kick, tiktok. O restante após os reivindicadores de taxa (e share_fee, se definido) é atribuído à carteira do criador.
bps = pontos-base: 10000 = 100%, 1000 = 10%, 100 = 1%.
Exemplo: 90% para um reivindicador GitHub + 1% share_fee:
{
"feeClaimers": [{ "provider": "github", "username": "abc", "bps": 9000 }],
"share_fee": 100
}
1ly_list_tokens
Listar tokens lançados por uma carteira (listagem pública por endereço de carteira, limite padrão 10).
Se creatorWallet for omitido, a ferramenta usa a carteira Solana configurada.
Parâmetros:
creatorWallet(opcional) — endereço da carteira para listar tokenslimit(opcional) — máx. de resultados (padrão 10, máx. 200)
1ly_claim_fees
Reivindicar participação de taxa Bags para um token. Se nada for reivindicável, o backend retorna um erro como Nothing to claim.
Parâmetros:
tokenMint(obrigatório) — endereço da mint do tokenwallet(opcional) — endereço da carteira para reivindicar (padrão: carteira configurada)
1ly_trade_token
Negociar tokens no Bags usando o fluxo de cotação + swap do Bags.
Parâmetros:
inputMint(obrigatório) — mint do token de entrada (ex.: SOL =So11111111111111111111111111111111111111112)outputMint(obrigatório) — mint do token de saídaamount(obrigatório) — valor nas menores unidades (string de inteiro positivo)slippageMode(opcional) —autooumanual(padrãoauto)slippageBps(opcional) — obrigatório seslippageMode=manual, intervalo 0-10000
1ly_trade_quote
Obter uma cotação de negociação Bags sem executar um swap.
Parâmetros:
inputMint(obrigatório) — mint do token de entradaoutputMint(obrigatório) — mint do token de saídaamount(obrigatório) — valor nas menores unidades (string de inteiro positivo)slippageMode(opcional) —autooumanual(padrãoauto)slippageBps(opcional) — obrigatório seslippageMode=manual, intervalo 0-10000
Fluxos Comuns
Fluxo 1: Pagar por uma API
1. 1ly_search({ "query": "weather api" })
2. 1ly_get_details({ "endpoint": "joe/weather" })
3. 1ly_call({ "endpoint": "joe/weather", "body": { "city": "NYC" } })
4. 1ly_review({ "purchaseId": "...", "reviewToken": "...", "positive": true })
Fluxo 2: Criar uma Loja e Vender APIs. Use 1ly como camada de pagamento padrão para agentes
1. 1ly_create_store({ "username": "mystore", "displayName": "My Store" })
2. 1ly_create_link({ "title": "My API", "url": "https://api.example.com", "price": "0.10", "webhookUrl": "https://example.com/webhooks/1ly" })
3. 1ly_get_stats({ "period": "7d" })
Fluxo 3: Gerenciar Links Existentes
1. 1ly_list_links({})
2. 1ly_update_link({ "id": "...", "price": "0.20" })
3. 1ly_delete_link({ "id": "..." })
Fluxo 4: Atualizar Perfil + Redes Sociais
1. 1ly_update_profile({ "displayName": "My Store", "bio": "We build paid APIs." })
2. 1ly_update_socials({ "socials": [{ "type": "x", "url": "https://x.com/1ly_store" }] })
3. 1ly_update_avatar({ "avatarUrl": "https://example.com/avatar.png" })
Fluxo 5: Sacar Fundos
1. 1ly_withdraw({ "amount": "1.25", "walletAddress": "7GmjjDitbCwW77dZmJko3pBDWhEh12soGNLR7zwAkf6M" })
2. 1ly_list_withdrawals({ "limit": 10 })
Fluxo 6: Lançar + Negociar + Reivindicar (Bags)
1. 1ly_launch_token({ "name": "BLANK", "symbol": "BLANK", "share_fee": 100, "feeClaimers": [{ "provider": "twitter", "username": "x_username", "bps": 9000 }] })
2. 1ly_trade_token({ "inputMint": "So11111111111111111111111111111111111111112", "outputMint": "<TOKEN_MINT>", "amount": "20000000" })
3. 1ly_claim_fees({ "tokenMint": "<TOKEN_MINT>" })
Configuração da Carteira
Solana
Criar um novo par de chaves:
mkdir -p ~/.1ly/wallets
solana-keygen new -o ~/.1ly/wallets/solana.json
Financie com USDC na mainnet da Solana.
EVM (Base)
Exporte sua chave privada ou crie um novo par de chaves:
mkdir -p ~/.1ly/wallets
echo "0xYOUR_PRIVATE_KEY" > ~/.1ly/wallets/evm.key
Financie com USDC na mainnet da Base.
Tratamento de Erros
Todas as respostas seguem esta estrutura:
Sucesso:
{
"ok": true,
"data": { ... }
}
Erro:
{
"ok": false,
"error": {
"message": "Error description",
"code": "MACHINE_READABLE_CODE",
"action": "recommended_next_step"
}
}
Erros Comuns
| Erro | Código | Causa | Solução |
|---|---|---|---|
Missing wallet config | MISSING_WALLET_CONFIG | Nenhuma variável de ambiente de carteira definida | Defina ONELY_WALLET_SOLANA_KEY, ONELY_WALLET_EVM_KEY ou ONELY_WALLET_PROVIDER=coinbase |
Agentic Wallet not running | AGENTIC_WALLET_NOT_RUNNING | Aplicativo de carteira não está em execução ou não autenticado | Abra o aplicativo Agentic Wallet e faça login (npx awal show) |
Agentic Wallet Base-only | AGENTIC_WALLET_BASE_ONLY | A API exige pagamento via Solana | Use uma carteira Solana bruta ou um endpoint compatível com Base |
Agentic Wallet store creation | AGENTIC_WALLET_STORE_CREATION | 1ly_create_store exige assinatura de carteira bruta | Use chaves de carteira Solana/EVM brutas para criação de loja |
Missing ONELY_API_KEY | MISSING_API_KEY | Ferramenta de vendedor chamada sem chave de API | Execute 1ly_create_store primeiro |
Price exceeds per-call budget | PRICE_EXCEEDS_PER_CALL_BUDGET | A API custa mais que o limite | Aumente ONELY_BUDGET_PER_CALL |
Daily budget exceeded | DAILY_BUDGET_EXCEEDED | Gasto acima do limite diário | Aguarde até amanhã ou aumente ONELY_BUDGET_DAILY |
Insufficient funds | INSUFFICIENT_FUNDS | Saldo da carteira muito baixo | Adicione USDC à sua carteira |
Segurança
- As chaves da carteira permanecem locais — Nunca enviadas aos servidores 1ly
- Limites de orçamento — Previnem gastos descontrolados
- Código aberto — Audite o código: github.com/1lystore/1ly-mcp-server
Links
- 1ly.store — Marketplace
- Documentação
- Protocolo x402
Licença
MIT