@1ly/mcp-server 0.1.4 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +182 -36
- package/dist/budget.d.ts.map +1 -1
- package/dist/budget.js +3 -0
- package/dist/budget.js.map +1 -1
- package/dist/config.d.ts +6 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +6 -0
- package/dist/config.js.map +1 -1
- package/dist/error-codes.d.ts +8 -0
- package/dist/error-codes.d.ts.map +1 -0
- package/dist/error-codes.js +87 -0
- package/dist/error-codes.js.map +1 -0
- package/dist/index.js +32 -2
- package/dist/index.js.map +1 -1
- package/dist/mcp-server.d.ts +36 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +132 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/mcp.d.ts +16 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +38 -2
- package/dist/mcp.js.map +1 -1
- package/dist/security-log.d.ts +1 -1
- package/dist/security-log.d.ts.map +1 -1
- package/dist/security-log.js.map +1 -1
- package/dist/solana-tx.d.ts +5 -0
- package/dist/solana-tx.d.ts.map +1 -0
- package/dist/solana-tx.js +31 -0
- package/dist/solana-tx.js.map +1 -0
- package/dist/tools/call.d.ts.map +1 -1
- package/dist/tools/call.js +59 -20
- package/dist/tools/call.js.map +1 -1
- package/dist/tools/claim-fees.d.ts +31 -0
- package/dist/tools/claim-fees.d.ts.map +1 -0
- package/dist/tools/claim-fees.js +63 -0
- package/dist/tools/claim-fees.js.map +1 -0
- package/dist/tools/create-store.d.ts.map +1 -1
- package/dist/tools/create-store.js +3 -0
- package/dist/tools/create-store.js.map +1 -1
- package/dist/tools/launch-token.d.ts +85 -0
- package/dist/tools/launch-token.d.ts.map +1 -0
- package/dist/tools/launch-token.js +234 -0
- package/dist/tools/launch-token.js.map +1 -0
- package/dist/tools/list-tokens.d.ts +30 -0
- package/dist/tools/list-tokens.d.ts.map +1 -0
- package/dist/tools/list-tokens.js +47 -0
- package/dist/tools/list-tokens.js.map +1 -0
- package/dist/tools/review.d.ts.map +1 -1
- package/dist/tools/review.js +5 -3
- package/dist/tools/review.js.map +1 -1
- package/dist/tools/trade-quote.d.ts +43 -0
- package/dist/tools/trade-quote.d.ts.map +1 -0
- package/dist/tools/trade-quote.js +58 -0
- package/dist/tools/trade-quote.js.map +1 -0
- package/dist/tools/trade-token.d.ts +43 -0
- package/dist/tools/trade-token.d.ts.map +1 -0
- package/dist/tools/trade-token.js +141 -0
- package/dist/tools/trade-token.js.map +1 -0
- package/dist/wallet/agentic.d.ts +20 -0
- package/dist/wallet/agentic.d.ts.map +1 -0
- package/dist/wallet/agentic.js +93 -0
- package/dist/wallet/agentic.js.map +1 -0
- package/dist/wallet/evm.d.ts.map +1 -1
- package/dist/wallet/evm.js +13 -6
- package/dist/wallet/evm.js.map +1 -1
- package/dist/wallet/solana.d.ts.map +1 -1
- package/dist/wallet/solana.js +12 -6
- package/dist/wallet/solana.js.map +1 -1
- package/package.json +4 -1
package/README.md
CHANGED
|
@@ -6,49 +6,73 @@ MCP server for [1ly.store](https://1ly.store) — Enable AI agents to discover,
|
|
|
6
6
|
|
|
7
7
|
This MCP server gives AI agents the ability to:
|
|
8
8
|
|
|
9
|
-
- **Buy** — Search, discover, and pay for APIs
|
|
9
|
+
- **Buy** — Search, discover, and pay for APIs/resources with automatic crypto payments (x402 protocol)
|
|
10
10
|
- **Sell** — Create a store, list paid API endpoints or resources, and accept payments
|
|
11
|
+
- **Launch Tokens** — Create and trade tokens on Bags.fm, and claim fee shares
|
|
11
12
|
|
|
12
13
|
**Supported Networks:** Solana (mainnet), Base (mainnet)
|
|
13
14
|
**Payment Currency:** USDC
|
|
14
15
|
|
|
15
16
|
## What is this?
|
|
16
|
-
This MCP server enables AI agents (Claude, GPT, Cursor,
|
|
17
|
+
This MCP server enables AI agents (Claude, GPT, Cursor, and more) to:
|
|
18
|
+
|
|
19
|
+
- Create a store on 1ly.store
|
|
20
|
+
- Accept payments for your APIs/resources using 1ly as the payment layer
|
|
21
|
+
- Create paid links that any x402‑compatible agent can call and pay automatically
|
|
22
|
+
- List paid links on the 1ly marketplace for instant agent discovery
|
|
23
|
+
- Search for APIs and services on 1ly.store
|
|
24
|
+
- Get details about pricing, reviews, and usage
|
|
25
|
+
- Call paid APIs with automatic crypto payments (x402 protocol) securely
|
|
26
|
+
- Leave reviews after purchases (optional but recommended)
|
|
27
|
+
— Launch tokens on Bags.fm, trade solana tokens, and claim fees
|
|
17
28
|
|
|
18
|
-
Create store on 1ly.store
|
|
19
|
-
Accept payments for your own APIs/resources using 1ly as the payment layer
|
|
20
|
-
Create paid links that any x402‑compatible agent can call and pay automatically
|
|
21
|
-
Paid links are listed on the 1ly marketplace by default for instant agent discovery
|
|
22
|
-
Search for APIs and services on 1ly.store
|
|
23
|
-
Get details about pricing, reviews, and usage
|
|
24
|
-
Call paid APIs with automatic crypto payments (x402 protocol) in secure way.
|
|
25
|
-
Leave reviews after purchases, optional but recommended to make better experience for 1ly users
|
|
26
29
|
|
|
27
30
|
---
|
|
28
31
|
|
|
29
32
|
## Quick Start
|
|
30
33
|
|
|
34
|
+
**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.
|
|
35
|
+
**Important:** Claude/Cursor config JSON does **not** expand `~`. Use an absolute path in JSON configs.
|
|
36
|
+
|
|
31
37
|
### 1. Install and Run
|
|
32
38
|
|
|
39
|
+
#### Option A: Raw Wallet (default)
|
|
40
|
+
|
|
33
41
|
```bash
|
|
34
42
|
# Solana wallet
|
|
35
|
-
ONELY_WALLET_SOLANA_KEY="/
|
|
43
|
+
ONELY_WALLET_SOLANA_KEY="~/.1ly/wallets/solana.json" npx @1ly/mcp-server
|
|
36
44
|
|
|
37
45
|
# OR Base/EVM wallet
|
|
38
|
-
ONELY_WALLET_EVM_KEY="/
|
|
46
|
+
ONELY_WALLET_EVM_KEY="~/.1ly/wallets/evm.key" npx @1ly/mcp-server
|
|
39
47
|
|
|
40
48
|
# OR both wallets
|
|
41
|
-
ONELY_WALLET_SOLANA_KEY="/
|
|
42
|
-
ONELY_WALLET_EVM_KEY="/
|
|
49
|
+
ONELY_WALLET_SOLANA_KEY="~/.1ly/wallets/solana.json" \
|
|
50
|
+
ONELY_WALLET_EVM_KEY="~/.1ly/wallets/evm.key" \
|
|
43
51
|
npx @1ly/mcp-server
|
|
44
52
|
```
|
|
45
53
|
|
|
46
|
-
|
|
54
|
+
#### Option B: Coinbase Agentic Wallet (Base only)
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
ONELY_WALLET_PROVIDER="coinbase" npx @1ly/mcp-server
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
> When using Agentic Wallet, you **do not** pass raw private keys.
|
|
61
|
+
> Make sure the Coinbase Agentic Wallet app is running and authenticated.
|
|
47
62
|
|
|
63
|
+
If you haven't installed Agentic Wallet yet:
|
|
64
|
+
- Follow Coinbase Agentic Wallet docs: `https://docs.cdp.coinbase.com/agentic-wallet/welcome`
|
|
65
|
+
- Quick install:
|
|
48
66
|
```bash
|
|
49
|
-
|
|
67
|
+
npx skills add coinbase/agentic-wallet-skills
|
|
68
|
+
npx awal show
|
|
50
69
|
```
|
|
51
70
|
|
|
71
|
+
### 2. Verify Setup
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
ONELY_WALLET_SOLANA_KEY="~/.1ly/wallets/solana.json" npx @1ly/mcp-server --self-test
|
|
75
|
+
```
|
|
52
76
|
---
|
|
53
77
|
|
|
54
78
|
## Configuration
|
|
@@ -57,16 +81,19 @@ ONELY_WALLET_SOLANA_KEY="/path/to/solana-wallet.json" npx @1ly/mcp-server --self
|
|
|
57
81
|
|
|
58
82
|
| Variable | Required | Description |
|
|
59
83
|
|----------|----------|-------------|
|
|
60
|
-
| `ONELY_WALLET_SOLANA_KEY` |
|
|
61
|
-
| `ONELY_WALLET_EVM_KEY` |
|
|
84
|
+
| `ONELY_WALLET_SOLANA_KEY` | No | Path to Solana keypair JSON file, or inline JSON array |
|
|
85
|
+
| `ONELY_WALLET_EVM_KEY` | No | Path to EVM private key file, or inline hex key (with or without `0x`) |
|
|
62
86
|
| `ONELY_API_KEY` | No | API key for seller tools. Auto-loaded after `1ly_create_store` |
|
|
63
87
|
| `ONELY_BUDGET_PER_CALL` | No | Max USD per API call (default: `1.00`) |
|
|
64
88
|
| `ONELY_BUDGET_DAILY` | No | Daily USD spending limit (default: `50.00`) |
|
|
65
89
|
| `ONELY_BUDGET_STATE_FILE` | No | Path to local budget state file (default: `~/.1ly-mcp-budget.json`) |
|
|
66
90
|
| `ONELY_NETWORK` | No | Preferred network: `solana` or `base` (default: `solana`) |
|
|
91
|
+
| `ONELY_SOLANA_RPC_URL` | No | Solana RPC URL (default: `https://api.mainnet-beta.solana.com`) |
|
|
67
92
|
| `ONELY_API_BASE` | No | API base URL (default: `https://1ly.store`) |
|
|
93
|
+
| `ONELY_WALLET_PROVIDER` | No | `raw` (default) or `coinbase` (Agentic Wallet, Base-only) |
|
|
68
94
|
|
|
69
|
-
*
|
|
95
|
+
*A wallet is required only for **paid** calls. For free search/details you can run without a wallet.*
|
|
96
|
+
Use **one** of: `ONELY_WALLET_SOLANA_KEY`, `ONELY_WALLET_EVM_KEY`, or `ONELY_WALLET_PROVIDER=coinbase`.
|
|
70
97
|
|
|
71
98
|
### Claude Desktop Configuration
|
|
72
99
|
|
|
@@ -79,7 +106,7 @@ Add to `claude_desktop_config.json`:
|
|
|
79
106
|
"command": "npx",
|
|
80
107
|
"args": ["@1ly/mcp-server"],
|
|
81
108
|
"env": {
|
|
82
|
-
"ONELY_WALLET_SOLANA_KEY": "/
|
|
109
|
+
"ONELY_WALLET_SOLANA_KEY": "~/.1ly/wallets/solana.json",
|
|
83
110
|
"ONELY_BUDGET_PER_CALL": "1.00",
|
|
84
111
|
"ONELY_BUDGET_DAILY": "50.00"
|
|
85
112
|
}
|
|
@@ -98,7 +125,7 @@ Add to `claude_desktop_config.json`:
|
|
|
98
125
|
"command": "npx",
|
|
99
126
|
"args": ["@1ly/mcp-server"],
|
|
100
127
|
"env": {
|
|
101
|
-
"ONELY_WALLET_EVM_KEY": "/
|
|
128
|
+
"ONELY_WALLET_EVM_KEY": "~/.1ly/wallets/evm.key",
|
|
102
129
|
"ONELY_BUDGET_PER_CALL": "1.00",
|
|
103
130
|
"ONELY_BUDGET_DAILY": "50.00"
|
|
104
131
|
}
|
|
@@ -108,6 +135,26 @@ Add to `claude_desktop_config.json`:
|
|
|
108
135
|
```
|
|
109
136
|
</details>
|
|
110
137
|
|
|
138
|
+
### Cursor One-Click Install
|
|
139
|
+
|
|
140
|
+
[](https://cursor.com/en-US/install-mcp?name=1ly&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyJAMWx5L21jcC1zZXJ2ZXIiXSwiZW52Ijp7Ik9ORUxZX1dBTExFVF9TT0xBTkFfS0VZIjoiL2Fic29sdXRlL3BhdGgvdG8vc29sYW5hLmpzb24iLCJPTkVMWV9CVURHRVRfUEVSX0NBTEwiOiIxLjAwIiwiT05FTFlfQlVER0VUX0RBSUxZIjoiNTAuMDAifX0%3D)
|
|
141
|
+
|
|
142
|
+
Cursor uses `.cursor/mcp.json`. If you prefer manual setup, use:
|
|
143
|
+
```json
|
|
144
|
+
{
|
|
145
|
+
"mcpServers": {
|
|
146
|
+
"1ly": {
|
|
147
|
+
"command": "npx",
|
|
148
|
+
"args": ["@1ly/mcp-server"],
|
|
149
|
+
"env": {
|
|
150
|
+
"ONELY_WALLET_SOLANA_KEY": "/absolute/path/to/solana.json",
|
|
151
|
+
"ONELY_BUDGET_PER_CALL": "1.00",
|
|
152
|
+
"ONELY_BUDGET_DAILY": "50.00"
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
```
|
|
111
158
|
<details>
|
|
112
159
|
<summary>Both Solana + Base wallets</summary>
|
|
113
160
|
|
|
@@ -118,8 +165,8 @@ Add to `claude_desktop_config.json`:
|
|
|
118
165
|
"command": "npx",
|
|
119
166
|
"args": ["@1ly/mcp-server"],
|
|
120
167
|
"env": {
|
|
121
|
-
"ONELY_WALLET_SOLANA_KEY": "/
|
|
122
|
-
"ONELY_WALLET_EVM_KEY": "/
|
|
168
|
+
"ONELY_WALLET_SOLANA_KEY": "~/.1ly/wallets/solana.json",
|
|
169
|
+
"ONELY_WALLET_EVM_KEY": "~/.1ly/wallets/evm.key",
|
|
123
170
|
"ONELY_BUDGET_PER_CALL": "1.00",
|
|
124
171
|
"ONELY_BUDGET_DAILY": "50.00"
|
|
125
172
|
}
|
|
@@ -133,9 +180,9 @@ Add to `claude_desktop_config.json`:
|
|
|
133
180
|
|
|
134
181
|
## Tools Reference
|
|
135
182
|
|
|
136
|
-
### Buyer Tools
|
|
183
|
+
### Buyer Tools
|
|
137
184
|
|
|
138
|
-
|
|
185
|
+
Wallet **required only for paid calls** (`1ly_call`). Search/details work without a wallet.
|
|
139
186
|
|
|
140
187
|
#### `1ly_search`
|
|
141
188
|
|
|
@@ -260,6 +307,11 @@ Call a paid API with automatic crypto payment.
|
|
|
260
307
|
> **Note:** The `_1ly` object contains tokens needed for `1ly_review`. Save these if you want to leave a review.
|
|
261
308
|
> For free APIs, `_1ly` may be `{ "note": "No payment required (free API)" }`.
|
|
262
309
|
|
|
310
|
+
**Agentic Wallet (Base only):**
|
|
311
|
+
- Set `ONELY_WALLET_PROVIDER=coinbase`.
|
|
312
|
+
- Ensure Coinbase Agentic Wallet is installed, running, and authenticated.
|
|
313
|
+
- Local private keys are not required.
|
|
314
|
+
|
|
263
315
|
---
|
|
264
316
|
|
|
265
317
|
#### `1ly_review`
|
|
@@ -304,6 +356,8 @@ These tools require an **API key**. Run `1ly_create_store` first to get one.
|
|
|
304
356
|
|
|
305
357
|
Create a new store and get an API key. **Run this once.** The API key is automatically saved locally.
|
|
306
358
|
|
|
359
|
+
> **Note:** Creating a store requires a raw wallet key (Solana or EVM). Agentic Wallet does not support store creation yet.
|
|
360
|
+
|
|
307
361
|
| Parameter | Type | Required | Description |
|
|
308
362
|
|-----------|------|----------|-------------|
|
|
309
363
|
| `username` | string | No | Store username (3-20 chars, auto-generated if omitted) |
|
|
@@ -731,6 +785,81 @@ List recent withdrawals.
|
|
|
731
785
|
|
|
732
786
|
---
|
|
733
787
|
|
|
788
|
+
### Token Tools (Bags.fm)
|
|
789
|
+
|
|
790
|
+
These tools require a **Solana wallet** (`ONELY_WALLET_SOLANA_KEY`)
|
|
791
|
+
|
|
792
|
+
#### `1ly_launch_token`
|
|
793
|
+
|
|
794
|
+
Launch a token on Bags.fm (v2 flow).
|
|
795
|
+
|
|
796
|
+
Key fields:
|
|
797
|
+
- `name`, `symbol` (required)
|
|
798
|
+
- `description` (optional; defaults to `Token launched via 1ly.store`)
|
|
799
|
+
- `imageUrl` or `imageBase64` (required; at least one)
|
|
800
|
+
- `twitter`, `website`, `telegram` (optional URLs)
|
|
801
|
+
- `initialBuySol` (optional; defaults to `0`)
|
|
802
|
+
- `feeClaimers` (optional array of `{ provider, username, bps }`)
|
|
803
|
+
- `share_fee` (optional, bps). Adds a 1ly marketplace fee claimer on the backend. If set, the creator share is auto‑reduced.
|
|
804
|
+
|
|
805
|
+
Validation (Bags.fm compatible):
|
|
806
|
+
- `name` max 32 chars
|
|
807
|
+
- `symbol` max 10 chars
|
|
808
|
+
- `description` max 1000 chars
|
|
809
|
+
- `imageBase64` must be raw base64 (no data URL prefix) and <= 15MB decoded
|
|
810
|
+
|
|
811
|
+
`feeClaimers` provider list is strict: `twitter`, `github`, `kick`, `tiktok`. Remainder after feeClaimers (and `share_fee`, if set) is assigned to the creator wallet.
|
|
812
|
+
|
|
813
|
+
`bps` = basis points: **10000 = 100%**, **1000 = 10%**, **100 = 1%**.
|
|
814
|
+
Example: 90% to a GitHub claimer + 1% `share_fee`:
|
|
815
|
+
```json
|
|
816
|
+
{
|
|
817
|
+
"feeClaimers": [{ "provider": "github", "username": "abc", "bps": 9000 }],
|
|
818
|
+
"share_fee": 100
|
|
819
|
+
}
|
|
820
|
+
```
|
|
821
|
+
|
|
822
|
+
#### `1ly_list_tokens`
|
|
823
|
+
|
|
824
|
+
List tokens launched by a wallet (public listing by wallet address, default limit 10).
|
|
825
|
+
If `creatorWallet` is omitted, the tool uses the configured Solana wallet.
|
|
826
|
+
|
|
827
|
+
Parameters:
|
|
828
|
+
- `creatorWallet` (optional) — wallet address to list tokens for
|
|
829
|
+
- `limit` (optional) — max results (default 10, max 200)
|
|
830
|
+
|
|
831
|
+
#### `1ly_claim_fees`
|
|
832
|
+
|
|
833
|
+
Claim Bags fee share for a token. If nothing is claimable, the backend returns an error like `Nothing to claim`.
|
|
834
|
+
|
|
835
|
+
Parameters:
|
|
836
|
+
- `tokenMint` (**required**) — token mint address
|
|
837
|
+
- `wallet` (optional) — wallet address to claim for (defaults to configured wallet)
|
|
838
|
+
|
|
839
|
+
#### `1ly_trade_token`
|
|
840
|
+
|
|
841
|
+
Trade tokens on Bags using Bags quote + swap flow.
|
|
842
|
+
|
|
843
|
+
Parameters:
|
|
844
|
+
- `inputMint` (**required**) — input token mint (e.g., SOL = `So11111111111111111111111111111111111111112`)
|
|
845
|
+
- `outputMint` (**required**) — output token mint
|
|
846
|
+
- `amount` (**required**) — amount in smallest units (positive integer string)
|
|
847
|
+
- `slippageMode` (optional) — `auto` or `manual` (default `auto`)
|
|
848
|
+
- `slippageBps` (optional) — required if `slippageMode=manual`, range 0-10000
|
|
849
|
+
|
|
850
|
+
#### `1ly_trade_quote`
|
|
851
|
+
|
|
852
|
+
Get a Bags trade quote without executing a swap.
|
|
853
|
+
|
|
854
|
+
Parameters:
|
|
855
|
+
- `inputMint` (**required**) — input token mint
|
|
856
|
+
- `outputMint` (**required**) — output token mint
|
|
857
|
+
- `amount` (**required**) — amount in smallest units (positive integer string)
|
|
858
|
+
- `slippageMode` (optional) — `auto` or `manual` (default `auto`)
|
|
859
|
+
- `slippageBps` (optional) — required if `slippageMode=manual`, range 0-10000
|
|
860
|
+
|
|
861
|
+
---
|
|
862
|
+
|
|
734
863
|
## Common Workflows
|
|
735
864
|
|
|
736
865
|
### Workflow 1: Pay for an API
|
|
@@ -773,6 +902,14 @@ List recent withdrawals.
|
|
|
773
902
|
2. 1ly_list_withdrawals({ "limit": 10 })
|
|
774
903
|
```
|
|
775
904
|
|
|
905
|
+
### Workflow 6: Launch + Trade + Claim (Bags)
|
|
906
|
+
|
|
907
|
+
```
|
|
908
|
+
1. 1ly_launch_token({ "name": "BLANK", "symbol": "BLANK", "share_fee": 100, "feeClaimers": [{ "provider": "twitter", "username": "x_username", "bps": 9000 }] })
|
|
909
|
+
2. 1ly_trade_token({ "inputMint": "So11111111111111111111111111111111111111112", "outputMint": "<TOKEN_MINT>", "amount": "20000000" })
|
|
910
|
+
3. 1ly_claim_fees({ "tokenMint": "<TOKEN_MINT>" })
|
|
911
|
+
```
|
|
912
|
+
|
|
776
913
|
---
|
|
777
914
|
|
|
778
915
|
## Wallet Setup
|
|
@@ -781,16 +918,18 @@ List recent withdrawals.
|
|
|
781
918
|
|
|
782
919
|
Create a new keypair:
|
|
783
920
|
```bash
|
|
784
|
-
|
|
921
|
+
mkdir -p ~/.1ly/wallets
|
|
922
|
+
solana-keygen new -o ~/.1ly/wallets/solana.json
|
|
785
923
|
```
|
|
786
924
|
|
|
787
925
|
Fund with USDC on Solana mainnet.
|
|
788
926
|
|
|
789
927
|
### EVM (Base)
|
|
790
928
|
|
|
791
|
-
Export your private key
|
|
929
|
+
Export your private key or Create a new keypair:
|
|
792
930
|
```bash
|
|
793
|
-
|
|
931
|
+
mkdir -p ~/.1ly/wallets
|
|
932
|
+
echo "0xYOUR_PRIVATE_KEY" > ~/.1ly/wallets/evm.key
|
|
794
933
|
```
|
|
795
934
|
|
|
796
935
|
Fund with USDC on Base mainnet.
|
|
@@ -813,19 +952,26 @@ All responses follow this structure:
|
|
|
813
952
|
```json
|
|
814
953
|
{
|
|
815
954
|
"ok": false,
|
|
816
|
-
"error": {
|
|
955
|
+
"error": {
|
|
956
|
+
"message": "Error description",
|
|
957
|
+
"code": "MACHINE_READABLE_CODE",
|
|
958
|
+
"action": "recommended_next_step"
|
|
959
|
+
}
|
|
817
960
|
}
|
|
818
961
|
```
|
|
819
962
|
|
|
820
963
|
### Common Errors
|
|
821
964
|
|
|
822
|
-
| Error | Cause | Solution |
|
|
823
|
-
|
|
824
|
-
| `Missing wallet config` | No wallet env var set | Set `ONELY_WALLET_SOLANA_KEY` or `
|
|
825
|
-
| `
|
|
826
|
-
| `
|
|
827
|
-
| `
|
|
828
|
-
| `
|
|
965
|
+
| Error | Code | Cause | Solution |
|
|
966
|
+
|-------|------|-------|----------|
|
|
967
|
+
| `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` |
|
|
968
|
+
| `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`) |
|
|
969
|
+
| `Agentic Wallet Base-only` | `AGENTIC_WALLET_BASE_ONLY` | API requires Solana payment | Use raw Solana wallet or a Base-compatible endpoint |
|
|
970
|
+
| `Agentic Wallet store creation` | `AGENTIC_WALLET_STORE_CREATION` | `1ly_create_store` requires raw wallet signature | Use raw Solana/EVM wallet keys for store creation |
|
|
971
|
+
| `Missing ONELY_API_KEY` | `MISSING_API_KEY` | Seller tool called without API key | Run `1ly_create_store` first |
|
|
972
|
+
| `Price exceeds per-call budget` | `PRICE_EXCEEDS_PER_CALL_BUDGET` | API costs more than limit | Increase `ONELY_BUDGET_PER_CALL` |
|
|
973
|
+
| `Daily budget exceeded` | `DAILY_BUDGET_EXCEEDED` | Spent more than daily limit | Wait until tomorrow or increase `ONELY_BUDGET_DAILY` |
|
|
974
|
+
| `Insufficient funds` | `INSUFFICIENT_FUNDS` | Wallet balance too low | Add USDC to your wallet |
|
|
829
975
|
|
|
830
976
|
---
|
|
831
977
|
|
package/dist/budget.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"budget.d.ts","sourceRoot":"","sources":["../src/budget.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"budget.d.ts","sourceRoot":"","sources":["../src/budget.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AA0D1C;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAuC/E"}
|
package/dist/budget.js
CHANGED
|
@@ -11,6 +11,9 @@ const security_log_js_1 = require("./security-log.js");
|
|
|
11
11
|
function getBudgetStatePath() {
|
|
12
12
|
const envPath = process.env.ONELY_BUDGET_STATE_FILE;
|
|
13
13
|
if (envPath && envPath.trim().length > 0) {
|
|
14
|
+
if (envPath.startsWith("~/")) {
|
|
15
|
+
return path_1.default.join(os_1.default.homedir(), envPath.slice(2));
|
|
16
|
+
}
|
|
14
17
|
return envPath;
|
|
15
18
|
}
|
|
16
19
|
return path_1.default.join(os_1.default.homedir(), ".1ly-mcp-budget.json");
|
package/dist/budget.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"budget.js","sourceRoot":"","sources":["../src/budget.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"budget.js","sourceRoot":"","sources":["../src/budget.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -24,6 +24,8 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
24
24
|
daily?: number | undefined;
|
|
25
25
|
}>;
|
|
26
26
|
network: z.ZodDefault<z.ZodEnum<["solana", "base"]>>;
|
|
27
|
+
walletProvider: z.ZodDefault<z.ZodEnum<["raw", "coinbase"]>>;
|
|
28
|
+
solanaRpcUrl: z.ZodDefault<z.ZodString>;
|
|
27
29
|
apiKey: z.ZodNullable<z.ZodOptional<z.ZodString>>;
|
|
28
30
|
}, "strip", z.ZodTypeAny, {
|
|
29
31
|
apiBase: string;
|
|
@@ -32,6 +34,8 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
32
34
|
daily: number;
|
|
33
35
|
};
|
|
34
36
|
network: "solana" | "base";
|
|
37
|
+
walletProvider: "raw" | "coinbase";
|
|
38
|
+
solanaRpcUrl: string;
|
|
35
39
|
wallet?: {
|
|
36
40
|
type: "solana" | "evm";
|
|
37
41
|
key: string;
|
|
@@ -52,6 +56,8 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
52
56
|
walletSolana?: string | null | undefined;
|
|
53
57
|
walletEvm?: string | null | undefined;
|
|
54
58
|
network?: "solana" | "base" | undefined;
|
|
59
|
+
walletProvider?: "raw" | "coinbase" | undefined;
|
|
60
|
+
solanaRpcUrl?: string | undefined;
|
|
55
61
|
apiKey?: string | null | undefined;
|
|
56
62
|
}>;
|
|
57
63
|
export type Config = z.infer<typeof ConfigSchema>;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgDvB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD,wBAAgB,UAAU,IAAI,MAAM,CAwEnC;AAED,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,MAAM,CAAC,CAK/D"}
|
package/dist/config.js
CHANGED
|
@@ -45,6 +45,8 @@ exports.ConfigSchema = zod_1.z.object({
|
|
|
45
45
|
daily: zod_1.z.number().positive().finite().default(50.0),
|
|
46
46
|
}),
|
|
47
47
|
network: zod_1.z.enum(["solana", "base"]).default("solana"),
|
|
48
|
+
walletProvider: zod_1.z.enum(["raw", "coinbase"]).default("raw"),
|
|
49
|
+
solanaRpcUrl: zod_1.z.string().url().default("https://api.mainnet-beta.solana.com"),
|
|
48
50
|
apiKey: zod_1.z.string().optional().nullable(),
|
|
49
51
|
});
|
|
50
52
|
function loadConfig() {
|
|
@@ -54,6 +56,8 @@ function loadConfig() {
|
|
|
54
56
|
const walletEvm = process.env.ONELY_WALLET_EVM_KEY || null;
|
|
55
57
|
const apiKeyEnv = process.env.ONELY_API_KEY || null;
|
|
56
58
|
const apiBase = process.env.ONELY_API_BASE || "https://1ly.store";
|
|
59
|
+
const walletProvider = process.env.ONELY_WALLET_PROVIDER === "coinbase" ? "coinbase" : "raw";
|
|
60
|
+
const solanaRpcUrl = process.env.ONELY_SOLANA_RPC_URL || "https://api.mainnet-beta.solana.com";
|
|
57
61
|
// Parse and validate budget values to prevent NaN/negative bypasses
|
|
58
62
|
const perCallRaw = process.env.ONELY_BUDGET_PER_CALL || "1.0";
|
|
59
63
|
const dailyRaw = process.env.ONELY_BUDGET_DAILY || "50.0";
|
|
@@ -88,6 +92,8 @@ function loadConfig() {
|
|
|
88
92
|
daily,
|
|
89
93
|
},
|
|
90
94
|
network: process.env.ONELY_NETWORK || "solana",
|
|
95
|
+
walletProvider,
|
|
96
|
+
solanaRpcUrl,
|
|
91
97
|
apiKey: apiKeyEnv,
|
|
92
98
|
});
|
|
93
99
|
}
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type McpErrorCode = "MISSING_API_KEY" | "MISSING_WALLET_CONFIG" | "WALLET_FILE_NOT_FOUND" | "INVALID_WALLET_FORMAT" | "INVALID_WALLET_PATH" | "AGENTIC_WALLET_NOT_RUNNING" | "AGENTIC_WALLET_BASE_ONLY" | "AGENTIC_WALLET_STORE_CREATION" | "AGENTIC_WALLET_TIMEOUT" | "AGENTIC_WALLET_RESPONSE_INVALID" | "RATE_LIMIT_EXCEEDED" | "PRICE_EXCEEDS_PER_CALL_BUDGET" | "DAILY_BUDGET_EXCEEDED" | "INSUFFICIENT_FUNDS" | "MISSING_SLIPPAGE_BPS" | "INVALID_SLIPPAGE_BPS" | "INVALID_IMAGE_BASE64" | "IMAGE_TOO_LARGE" | "IMAGE_TOO_SMALL" | "PAYMENT_FAILED" | "PAYMENT_REQUIREMENTS_MISSING" | "INVALID_PAYMENT_AMOUNT" | "INVALID_INPUT" | "TX_UNCERTAIN" | "UNKNOWN_ERROR";
|
|
2
|
+
export type McpErrorAction = "run_create_store_or_set_onely_api_key" | "set_wallet_env" | "check_wallet_path" | "use_valid_wallet_format" | "use_home_or_tmp_path" | "start_agentic_wallet" | "use_evm_or_raw_solana" | "use_raw_wallet_keys" | "restart_agentic_wallet" | "reduce_request_rate" | "increase_per_call_budget" | "increase_daily_budget_or_wait" | "fund_wallet" | "set_slippage_bps" | "set_slippage_bps_0_10000" | "provide_valid_base64" | "reduce_image_size" | "use_valid_image" | "verify_funds_and_retry" | "retry_or_contact_support" | "fix_request" | "verify_on_chain_before_retry";
|
|
3
|
+
export type ErrorMapping = {
|
|
4
|
+
code: McpErrorCode;
|
|
5
|
+
action?: McpErrorAction;
|
|
6
|
+
};
|
|
7
|
+
export declare function mapErrorToCode(message: string): ErrorMapping;
|
|
8
|
+
//# sourceMappingURL=error-codes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-codes.d.ts","sourceRoot":"","sources":["../src/error-codes.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GACpB,iBAAiB,GACjB,uBAAuB,GACvB,uBAAuB,GACvB,uBAAuB,GACvB,qBAAqB,GACrB,4BAA4B,GAC5B,0BAA0B,GAC1B,+BAA+B,GAC/B,wBAAwB,GACxB,iCAAiC,GACjC,qBAAqB,GACrB,+BAA+B,GAC/B,uBAAuB,GACvB,oBAAoB,GACpB,sBAAsB,GACtB,sBAAsB,GACtB,sBAAsB,GACtB,iBAAiB,GACjB,iBAAiB,GACjB,gBAAgB,GAChB,8BAA8B,GAC9B,wBAAwB,GACxB,eAAe,GACf,cAAc,GACd,eAAe,CAAC;AAEpB,MAAM,MAAM,cAAc,GACtB,uCAAuC,GACvC,gBAAgB,GAChB,mBAAmB,GACnB,yBAAyB,GACzB,sBAAsB,GACtB,sBAAsB,GACtB,uBAAuB,GACvB,qBAAqB,GACrB,wBAAwB,GACxB,qBAAqB,GACrB,0BAA0B,GAC1B,+BAA+B,GAC/B,aAAa,GACb,kBAAkB,GAClB,0BAA0B,GAC1B,sBAAsB,GACtB,mBAAmB,GACnB,iBAAiB,GACjB,wBAAwB,GACxB,0BAA0B,GAC1B,aAAa,GACb,8BAA8B,CAAC;AAEnC,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB,CAAC;AAEF,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAsF5D"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mapErrorToCode = mapErrorToCode;
|
|
4
|
+
function mapErrorToCode(message) {
|
|
5
|
+
const msg = message.toLowerCase();
|
|
6
|
+
if (msg.includes("missing onely_api_key")) {
|
|
7
|
+
return { code: "MISSING_API_KEY", action: "run_create_store_or_set_onely_api_key" };
|
|
8
|
+
}
|
|
9
|
+
if (msg.includes("missing wallet config")) {
|
|
10
|
+
return { code: "MISSING_WALLET_CONFIG", action: "set_wallet_env" };
|
|
11
|
+
}
|
|
12
|
+
if (msg.includes("solana wallet not configured") || msg.includes("evm wallet not configured")) {
|
|
13
|
+
return { code: "MISSING_WALLET_CONFIG", action: "set_wallet_env" };
|
|
14
|
+
}
|
|
15
|
+
if (msg.includes("wallet key file not found") || msg.includes("evm wallet key file not found")) {
|
|
16
|
+
return { code: "WALLET_FILE_NOT_FOUND", action: "check_wallet_path" };
|
|
17
|
+
}
|
|
18
|
+
if (msg.includes("invalid wallet file format")) {
|
|
19
|
+
return { code: "INVALID_WALLET_FORMAT", action: "use_valid_wallet_format" };
|
|
20
|
+
}
|
|
21
|
+
if (msg.includes("wallet file must be in home directory") || msg.includes("invalid wallet file path")) {
|
|
22
|
+
return { code: "INVALID_WALLET_PATH", action: "use_home_or_tmp_path" };
|
|
23
|
+
}
|
|
24
|
+
if (msg.includes("agentic wallet") && msg.includes("not running")) {
|
|
25
|
+
return { code: "AGENTIC_WALLET_NOT_RUNNING", action: "start_agentic_wallet" };
|
|
26
|
+
}
|
|
27
|
+
if (msg.includes("agentic wallet ipc timeout")) {
|
|
28
|
+
return { code: "AGENTIC_WALLET_TIMEOUT", action: "restart_agentic_wallet" };
|
|
29
|
+
}
|
|
30
|
+
if (msg.includes("agentic wallet ipc returned empty result")) {
|
|
31
|
+
return { code: "AGENTIC_WALLET_RESPONSE_INVALID", action: "restart_agentic_wallet" };
|
|
32
|
+
}
|
|
33
|
+
if (msg.includes("agentic wallet returned an invalid address")) {
|
|
34
|
+
return { code: "AGENTIC_WALLET_RESPONSE_INVALID", action: "restart_agentic_wallet" };
|
|
35
|
+
}
|
|
36
|
+
if (msg.includes("agentic wallet only supports base")) {
|
|
37
|
+
return { code: "AGENTIC_WALLET_BASE_ONLY", action: "use_evm_or_raw_solana" };
|
|
38
|
+
}
|
|
39
|
+
if (msg.includes("agentic wallet does not support store creation")) {
|
|
40
|
+
return { code: "AGENTIC_WALLET_STORE_CREATION", action: "use_raw_wallet_keys" };
|
|
41
|
+
}
|
|
42
|
+
if (msg.includes("rate limit exceeded")) {
|
|
43
|
+
return { code: "RATE_LIMIT_EXCEEDED", action: "reduce_request_rate" };
|
|
44
|
+
}
|
|
45
|
+
if (msg.includes("exceeds per-call budget")) {
|
|
46
|
+
return { code: "PRICE_EXCEEDS_PER_CALL_BUDGET", action: "increase_per_call_budget" };
|
|
47
|
+
}
|
|
48
|
+
if (msg.includes("daily budget") && msg.includes("exceed")) {
|
|
49
|
+
return { code: "DAILY_BUDGET_EXCEEDED", action: "increase_daily_budget_or_wait" };
|
|
50
|
+
}
|
|
51
|
+
if (msg.includes("insufficient funds")) {
|
|
52
|
+
return { code: "INSUFFICIENT_FUNDS", action: "fund_wallet" };
|
|
53
|
+
}
|
|
54
|
+
if (msg.includes("missing slippagebps")) {
|
|
55
|
+
return { code: "MISSING_SLIPPAGE_BPS", action: "set_slippage_bps" };
|
|
56
|
+
}
|
|
57
|
+
if (msg.includes("slippage") && msg.includes("range")) {
|
|
58
|
+
return { code: "INVALID_SLIPPAGE_BPS", action: "set_slippage_bps_0_10000" };
|
|
59
|
+
}
|
|
60
|
+
if (msg.includes("invalid imagebase64")) {
|
|
61
|
+
return { code: "INVALID_IMAGE_BASE64", action: "provide_valid_base64" };
|
|
62
|
+
}
|
|
63
|
+
if (msg.includes("imagebase64 exceeds")) {
|
|
64
|
+
return { code: "IMAGE_TOO_LARGE", action: "reduce_image_size" };
|
|
65
|
+
}
|
|
66
|
+
if (msg.includes("image too small")) {
|
|
67
|
+
return { code: "IMAGE_TOO_SMALL", action: "use_valid_image" };
|
|
68
|
+
}
|
|
69
|
+
if (msg.includes("payment failed")) {
|
|
70
|
+
return { code: "PAYMENT_FAILED", action: "verify_funds_and_retry" };
|
|
71
|
+
}
|
|
72
|
+
if (msg.includes("402 response missing payment requirements")) {
|
|
73
|
+
return { code: "PAYMENT_REQUIREMENTS_MISSING", action: "retry_or_contact_support" };
|
|
74
|
+
}
|
|
75
|
+
if (msg.includes("invalid or missing payment amount")) {
|
|
76
|
+
return { code: "INVALID_PAYMENT_AMOUNT", action: "retry_or_contact_support" };
|
|
77
|
+
}
|
|
78
|
+
if (msg.includes("expected") ||
|
|
79
|
+
msg.includes("required") ||
|
|
80
|
+
msg.includes("unrecognized") ||
|
|
81
|
+
msg.includes("invalid_type") ||
|
|
82
|
+
msg.includes("invalid input")) {
|
|
83
|
+
return { code: "INVALID_INPUT", action: "fix_request" };
|
|
84
|
+
}
|
|
85
|
+
return { code: "UNKNOWN_ERROR" };
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=error-codes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-codes.js","sourceRoot":"","sources":["../src/error-codes.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -22,8 +22,14 @@ const list_withdrawals_js_1 = require("./tools/list-withdrawals.js");
|
|
|
22
22
|
const update_profile_js_1 = require("./tools/update-profile.js");
|
|
23
23
|
const update_socials_js_1 = require("./tools/update-socials.js");
|
|
24
24
|
const update_avatar_js_1 = require("./tools/update-avatar.js");
|
|
25
|
+
const launch_token_js_1 = require("./tools/launch-token.js");
|
|
26
|
+
const claim_fees_js_1 = require("./tools/claim-fees.js");
|
|
27
|
+
const trade_token_js_1 = require("./tools/trade-token.js");
|
|
28
|
+
const trade_quote_js_1 = require("./tools/trade-quote.js");
|
|
29
|
+
const list_tokens_js_1 = require("./tools/list-tokens.js");
|
|
25
30
|
const config_js_1 = require("./config.js");
|
|
26
31
|
const selftest_js_1 = require("./selftest.js");
|
|
32
|
+
const error_codes_js_1 = require("./error-codes.js");
|
|
27
33
|
const mcp_js_1 = require("./mcp.js");
|
|
28
34
|
const argv = process.argv.slice(2);
|
|
29
35
|
const isSelfTest = argv.includes("--self-test");
|
|
@@ -34,7 +40,7 @@ async function main() {
|
|
|
34
40
|
}
|
|
35
41
|
const server = new index_js_1.Server({
|
|
36
42
|
name: "1ly",
|
|
37
|
-
version: "0.1.
|
|
43
|
+
version: "0.1.5",
|
|
38
44
|
}, {
|
|
39
45
|
capabilities: {
|
|
40
46
|
tools: {},
|
|
@@ -60,6 +66,11 @@ async function main() {
|
|
|
60
66
|
update_profile_js_1.updateProfileTool,
|
|
61
67
|
update_socials_js_1.updateSocialsTool,
|
|
62
68
|
update_avatar_js_1.updateAvatarTool,
|
|
69
|
+
launch_token_js_1.launchTokenTool,
|
|
70
|
+
list_tokens_js_1.listTokensTool,
|
|
71
|
+
claim_fees_js_1.claimFeesTool,
|
|
72
|
+
trade_token_js_1.tradeTokenTool,
|
|
73
|
+
trade_quote_js_1.tradeQuoteTool,
|
|
63
74
|
],
|
|
64
75
|
}));
|
|
65
76
|
server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
|
|
@@ -103,6 +114,16 @@ async function main() {
|
|
|
103
114
|
return await (0, update_socials_js_1.handleUpdateSocials)(args, config);
|
|
104
115
|
case "1ly_update_avatar":
|
|
105
116
|
return await (0, update_avatar_js_1.handleUpdateAvatar)(args, config);
|
|
117
|
+
case "1ly_launch_token":
|
|
118
|
+
return await (0, launch_token_js_1.handleLaunchToken)(args, config);
|
|
119
|
+
case "1ly_claim_fees":
|
|
120
|
+
return await (0, claim_fees_js_1.handleClaimFees)(args, config);
|
|
121
|
+
case "1ly_trade_token":
|
|
122
|
+
return await (0, trade_token_js_1.handleTradeToken)(args, config);
|
|
123
|
+
case "1ly_trade_quote":
|
|
124
|
+
return await (0, trade_quote_js_1.handleTradeQuote)(args, config);
|
|
125
|
+
case "1ly_list_tokens":
|
|
126
|
+
return await (0, list_tokens_js_1.handleListTokens)(args, config);
|
|
106
127
|
default:
|
|
107
128
|
return {
|
|
108
129
|
content: [{ type: "text", text: `Unknown tool: ${name}` }],
|
|
@@ -111,8 +132,17 @@ async function main() {
|
|
|
111
132
|
}
|
|
112
133
|
}
|
|
113
134
|
catch (error) {
|
|
135
|
+
if (error instanceof mcp_js_1.McpToolError) {
|
|
136
|
+
const mapping = error.code ? { code: error.code, action: error.action } : (0, error_codes_js_1.mapErrorToCode)(error.message);
|
|
137
|
+
return (0, mcp_js_1.mcpError)(error.message, {
|
|
138
|
+
code: mapping.code,
|
|
139
|
+
action: mapping.action,
|
|
140
|
+
meta: error.meta,
|
|
141
|
+
});
|
|
142
|
+
}
|
|
114
143
|
const message = error instanceof Error ? error.message : "Unknown error";
|
|
115
|
-
|
|
144
|
+
const mapping = (0, error_codes_js_1.mapErrorToCode)(message);
|
|
145
|
+
return (0, mcp_js_1.mcpError)(message, { code: mapping.code, action: mapping.action });
|
|
116
146
|
}
|
|
117
147
|
});
|
|
118
148
|
const transport = new stdio_js_1.StdioServerTransport();
|