@blindmarket/mcp-server 0.3.0
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 +90 -0
- package/dist/config.d.ts +6 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +12 -0
- package/dist/config.js.map +1 -0
- package/dist/crypto.d.ts +14 -0
- package/dist/crypto.d.ts.map +1 -0
- package/dist/crypto.js +33 -0
- package/dist/crypto.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +135 -0
- package/dist/index.js.map +1 -0
- package/dist/rent.d.ts +5 -0
- package/dist/rent.d.ts.map +1 -0
- package/dist/rent.js +353 -0
- package/dist/rent.js.map +1 -0
- package/dist/runtime.d.ts +7 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +73 -0
- package/dist/runtime.js.map +1 -0
- package/dist/state.d.ts +45 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +61 -0
- package/dist/state.js.map +1 -0
- package/dist/tools.d.ts +4 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +260 -0
- package/dist/tools.js.map +1 -0
- package/dist/wallet.d.ts +23 -0
- package/dist/wallet.d.ts.map +1 -0
- package/dist/wallet.js +42 -0
- package/dist/wallet.js.map +1 -0
- package/package.json +35 -0
package/dist/tools.js
ADDED
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export function registerMarketTools(server, bb) {
|
|
3
|
+
// ── Health & Stats ────────────────────────────────────────────────────
|
|
4
|
+
server.registerTool('health', {
|
|
5
|
+
title: 'Health Check',
|
|
6
|
+
description: 'Check if the BlindMarket backend is reachable and healthy',
|
|
7
|
+
inputSchema: {},
|
|
8
|
+
}, async () => {
|
|
9
|
+
const result = await bb.health();
|
|
10
|
+
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
11
|
+
});
|
|
12
|
+
server.registerTool('stats', {
|
|
13
|
+
title: 'Platform Stats',
|
|
14
|
+
description: 'Get live BlindMarket platform statistics (tasks, agents, users)',
|
|
15
|
+
inputSchema: {},
|
|
16
|
+
}, async () => {
|
|
17
|
+
const result = await bb.stats();
|
|
18
|
+
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
19
|
+
});
|
|
20
|
+
// ── Tasks ─────────────────────────────────────────────────────────────
|
|
21
|
+
server.registerTool('list_open_tasks', {
|
|
22
|
+
title: 'List Open Tasks',
|
|
23
|
+
description: 'List open tasks available for assignment on BlindMarket',
|
|
24
|
+
inputSchema: {
|
|
25
|
+
limit: z.number().optional().describe('Maximum number of tasks to return (default 20)'),
|
|
26
|
+
},
|
|
27
|
+
}, async ({ limit }) => {
|
|
28
|
+
const tasks = await bb.listTasks(limit ?? 20);
|
|
29
|
+
return { content: [{ type: 'text', text: JSON.stringify(tasks, null, 2) }] };
|
|
30
|
+
});
|
|
31
|
+
server.registerTool('get_task', {
|
|
32
|
+
title: 'Get Task Details',
|
|
33
|
+
description: 'Get full details for a specific task by ID',
|
|
34
|
+
inputSchema: {
|
|
35
|
+
taskId: z.string().describe('Task ID (numeric or 0x)'),
|
|
36
|
+
},
|
|
37
|
+
}, async ({ taskId }) => {
|
|
38
|
+
const task = await bb.getTask(taskId);
|
|
39
|
+
return { content: [{ type: 'text', text: JSON.stringify(task, null, 2) }] };
|
|
40
|
+
});
|
|
41
|
+
server.registerTool('browse_a2a_tasks', {
|
|
42
|
+
title: 'Browse A2A Tasks',
|
|
43
|
+
description: 'Browse agent-to-agent tasks available for execution, optionally filtered by capabilities',
|
|
44
|
+
inputSchema: {
|
|
45
|
+
capabilities: z.string().optional().describe('Comma-separated capability filter (e.g. "data_processing,web_research")'),
|
|
46
|
+
minReputation: z.number().optional().describe('Minimum reputation filter'),
|
|
47
|
+
},
|
|
48
|
+
}, async ({ capabilities, minReputation }) => {
|
|
49
|
+
const result = await bb.browseA2ATasks({
|
|
50
|
+
capabilities: capabilities ? capabilities.split(',').map(s => s.trim()) : undefined,
|
|
51
|
+
minReputation: minReputation ?? undefined,
|
|
52
|
+
});
|
|
53
|
+
return { content: [{ type: 'text', text: JSON.stringify(result.tasks, null, 2) }] };
|
|
54
|
+
});
|
|
55
|
+
// ── Agents ────────────────────────────────────────────────────────────
|
|
56
|
+
server.registerTool('create_agent', {
|
|
57
|
+
title: 'Create Agent',
|
|
58
|
+
description: 'One-shot agent creation: generates a wallet and registers as A2A executor. Returns the wallet private key — store it securely!',
|
|
59
|
+
inputSchema: {
|
|
60
|
+
displayName: z.string().describe('Display name for the agent'),
|
|
61
|
+
capabilities: z.string().describe('Comma-separated capabilities (e.g. "data_processing,web_research")'),
|
|
62
|
+
minReward: z.string().optional().describe('Minimum reward per task in wei'),
|
|
63
|
+
preferredCapabilities: z.string().optional().describe('Comma-separated preferred capabilities (subset of capabilities)'),
|
|
64
|
+
},
|
|
65
|
+
}, async ({ displayName, capabilities, minReward, preferredCapabilities }) => {
|
|
66
|
+
const result = await bb.createAgent({
|
|
67
|
+
displayName,
|
|
68
|
+
capabilities: capabilities.split(',').map(s => s.trim()),
|
|
69
|
+
minReward: minReward ?? undefined,
|
|
70
|
+
preferredCapabilities: preferredCapabilities
|
|
71
|
+
? preferredCapabilities.split(',').map(s => s.trim())
|
|
72
|
+
: undefined,
|
|
73
|
+
});
|
|
74
|
+
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
75
|
+
});
|
|
76
|
+
server.registerTool('register_as_executor', {
|
|
77
|
+
title: 'Register as Executor',
|
|
78
|
+
description: 'Register an existing wallet as an A2A executor to receive task offers',
|
|
79
|
+
inputSchema: {
|
|
80
|
+
address: z.string().describe('Wallet address (0x...)'),
|
|
81
|
+
displayName: z.string().describe('Display name'),
|
|
82
|
+
capabilities: z.string().describe('Comma-separated capabilities'),
|
|
83
|
+
publicKey: z.string().describe('Uncompressed secp256k1 public key (hex, no 0x prefix)'),
|
|
84
|
+
minReward: z.string().optional().describe('Minimum reward in wei'),
|
|
85
|
+
},
|
|
86
|
+
}, async ({ address, displayName, capabilities, publicKey, minReward }) => {
|
|
87
|
+
const result = await bb.registerExecutor({
|
|
88
|
+
address: address,
|
|
89
|
+
displayName,
|
|
90
|
+
capabilities: capabilities.split(',').map(s => s.trim()),
|
|
91
|
+
publicKey,
|
|
92
|
+
minReward: minReward ?? undefined,
|
|
93
|
+
});
|
|
94
|
+
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
95
|
+
});
|
|
96
|
+
server.registerTool('list_agents', {
|
|
97
|
+
title: 'List Agents',
|
|
98
|
+
description: 'List deployed agents, optionally filtered by owner address',
|
|
99
|
+
inputSchema: {
|
|
100
|
+
ownerAddress: z.string().optional().describe('Filter by owner wallet address'),
|
|
101
|
+
},
|
|
102
|
+
}, async ({ ownerAddress }) => {
|
|
103
|
+
const agents = await bb.listAgents(ownerAddress ?? undefined);
|
|
104
|
+
return { content: [{ type: 'text', text: JSON.stringify(agents, null, 2) }] };
|
|
105
|
+
});
|
|
106
|
+
server.registerTool('get_agent', {
|
|
107
|
+
title: 'Get Agent Details',
|
|
108
|
+
description: 'Get details for a single deployed agent by ID',
|
|
109
|
+
inputSchema: {
|
|
110
|
+
agentId: z.string().describe('Agent ID'),
|
|
111
|
+
},
|
|
112
|
+
}, async ({ agentId }) => {
|
|
113
|
+
const agent = await bb.getAgent(agentId);
|
|
114
|
+
return { content: [{ type: 'text', text: JSON.stringify(agent, null, 2) }] };
|
|
115
|
+
});
|
|
116
|
+
// ── A2A Actions ───────────────────────────────────────────────────────
|
|
117
|
+
server.registerTool('bid_on_task', {
|
|
118
|
+
title: 'Bid on Task',
|
|
119
|
+
description: 'Register bid intent on an A2A task',
|
|
120
|
+
inputSchema: {
|
|
121
|
+
taskId: z.string().describe('Task ID'),
|
|
122
|
+
},
|
|
123
|
+
}, async ({ taskId }) => {
|
|
124
|
+
await bb.bidOnTask(taskId);
|
|
125
|
+
return { content: [{ type: 'text', text: JSON.stringify({ success: true }) }] };
|
|
126
|
+
});
|
|
127
|
+
server.registerTool('accept_task', {
|
|
128
|
+
title: 'Accept Task',
|
|
129
|
+
description: 'Accept an assigned A2A task and get the wrapped AES key for decryption',
|
|
130
|
+
inputSchema: {
|
|
131
|
+
taskId: z.string().describe('Task ID'),
|
|
132
|
+
},
|
|
133
|
+
}, async ({ taskId }) => {
|
|
134
|
+
const result = await bb.acceptTask(taskId);
|
|
135
|
+
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
136
|
+
});
|
|
137
|
+
server.registerTool('submit_result', {
|
|
138
|
+
title: 'Submit Task Result',
|
|
139
|
+
description: 'Submit the execution result for an accepted A2A task',
|
|
140
|
+
inputSchema: {
|
|
141
|
+
taskId: z.string().describe('Task ID'),
|
|
142
|
+
output: z.string().describe('Result output text'),
|
|
143
|
+
},
|
|
144
|
+
}, async ({ taskId, output }) => {
|
|
145
|
+
const result = await bb.submitResult(taskId, { output });
|
|
146
|
+
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
147
|
+
});
|
|
148
|
+
server.registerTool('verify_task', {
|
|
149
|
+
title: 'Verify Task',
|
|
150
|
+
description: 'Trigger AI/TEE verification for a submitted task result',
|
|
151
|
+
inputSchema: {
|
|
152
|
+
taskId: z.number().describe('Numeric task ID'),
|
|
153
|
+
taskCategory: z.string().describe('Task category (e.g. photography, research)'),
|
|
154
|
+
taskRequirements: z.string().describe('What the task required'),
|
|
155
|
+
evidenceSummary: z.string().describe('Summary of submitted evidence'),
|
|
156
|
+
},
|
|
157
|
+
}, async ({ taskId, taskCategory, taskRequirements, evidenceSummary }) => {
|
|
158
|
+
const result = await bb.verify({ taskId, taskCategory, taskRequirements, evidenceSummary });
|
|
159
|
+
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
160
|
+
});
|
|
161
|
+
// ── Reputation ────────────────────────────────────────────────────────
|
|
162
|
+
server.registerTool('get_reputation', {
|
|
163
|
+
title: 'Get Reputation',
|
|
164
|
+
description: "Get an address's on-chain + off-chain reputation on BlindMarket",
|
|
165
|
+
inputSchema: {
|
|
166
|
+
address: z.string().describe('Wallet address (0x...)'),
|
|
167
|
+
},
|
|
168
|
+
}, async ({ address }) => {
|
|
169
|
+
const rep = await bb.getReputation(address);
|
|
170
|
+
return { content: [{ type: 'text', text: JSON.stringify(rep, null, 2) }] };
|
|
171
|
+
});
|
|
172
|
+
server.registerTool('get_leaderboard', {
|
|
173
|
+
title: 'Get Leaderboard',
|
|
174
|
+
description: 'Get top workers ranked by reputation score',
|
|
175
|
+
inputSchema: {
|
|
176
|
+
limit: z.number().optional().describe('Number of top workers to return (default 50)'),
|
|
177
|
+
},
|
|
178
|
+
}, async ({ limit }) => {
|
|
179
|
+
const board = await bb.getLeaderboard(limit ?? 50);
|
|
180
|
+
return { content: [{ type: 'text', text: JSON.stringify(board, null, 2) }] };
|
|
181
|
+
});
|
|
182
|
+
// ── Marketplace ───────────────────────────────────────────────────────
|
|
183
|
+
server.registerTool('search_agents', {
|
|
184
|
+
title: 'Search Agents',
|
|
185
|
+
description: 'Search registered agents by capability or minimum rating',
|
|
186
|
+
inputSchema: {
|
|
187
|
+
capability: z.string().optional().describe('Capability filter'),
|
|
188
|
+
minRating: z.number().optional().describe('Minimum rating (1-5)'),
|
|
189
|
+
},
|
|
190
|
+
}, async ({ capability, minRating }) => {
|
|
191
|
+
const agents = await bb.searchAgents({
|
|
192
|
+
capability: capability ?? undefined,
|
|
193
|
+
minRating: minRating ?? undefined,
|
|
194
|
+
});
|
|
195
|
+
return { content: [{ type: 'text', text: JSON.stringify(agents, null, 2) }] };
|
|
196
|
+
});
|
|
197
|
+
// ── Messages ─────────────────────────────────────────────────────────
|
|
198
|
+
server.registerTool('send_message', {
|
|
199
|
+
title: 'Send Message',
|
|
200
|
+
description: 'Send a message to a task participant',
|
|
201
|
+
inputSchema: {
|
|
202
|
+
taskId: z.string().describe('Task ID'),
|
|
203
|
+
to: z.string().describe('Recipient address or "poster"/"agent" shortcut'),
|
|
204
|
+
content: z.string().describe('Message content'),
|
|
205
|
+
},
|
|
206
|
+
}, async ({ taskId, to, content }) => {
|
|
207
|
+
const result = await bb.sendMessage({ taskId, to, content });
|
|
208
|
+
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
209
|
+
});
|
|
210
|
+
server.registerTool('get_inbox', {
|
|
211
|
+
title: 'Get Inbox',
|
|
212
|
+
description: 'Read inbox messages for the authenticated user',
|
|
213
|
+
inputSchema: {},
|
|
214
|
+
}, async () => {
|
|
215
|
+
const result = await bb.getInbox();
|
|
216
|
+
return { content: [{ type: 'text', text: JSON.stringify(result.messages, null, 2) }] };
|
|
217
|
+
});
|
|
218
|
+
// ── Agent Management (write) ──────────────────────────────────────────
|
|
219
|
+
server.registerTool('start_agent', {
|
|
220
|
+
title: 'Start Agent',
|
|
221
|
+
description: 'Start a deployed BlindMarket agent',
|
|
222
|
+
inputSchema: {
|
|
223
|
+
agentId: z.string().describe('Agent ID'),
|
|
224
|
+
},
|
|
225
|
+
}, async ({ agentId }) => {
|
|
226
|
+
const result = await bb.startAgent(agentId);
|
|
227
|
+
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
228
|
+
});
|
|
229
|
+
server.registerTool('stop_agent', {
|
|
230
|
+
title: 'Stop Agent',
|
|
231
|
+
description: 'Stop a deployed BlindMarket agent',
|
|
232
|
+
inputSchema: {
|
|
233
|
+
agentId: z.string().describe('Agent ID'),
|
|
234
|
+
},
|
|
235
|
+
}, async ({ agentId }) => {
|
|
236
|
+
const result = await bb.stopAgent(agentId);
|
|
237
|
+
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
238
|
+
});
|
|
239
|
+
server.registerTool('pause_agent', {
|
|
240
|
+
title: 'Pause Agent',
|
|
241
|
+
description: 'Pause a deployed BlindMarket agent',
|
|
242
|
+
inputSchema: {
|
|
243
|
+
agentId: z.string().describe('Agent ID'),
|
|
244
|
+
},
|
|
245
|
+
}, async ({ agentId }) => {
|
|
246
|
+
const result = await bb.pauseAgent(agentId);
|
|
247
|
+
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
248
|
+
});
|
|
249
|
+
server.registerTool('restart_agent', {
|
|
250
|
+
title: 'Restart Agent',
|
|
251
|
+
description: 'Restart a deployed BlindMarket agent',
|
|
252
|
+
inputSchema: {
|
|
253
|
+
agentId: z.string().describe('Agent ID'),
|
|
254
|
+
},
|
|
255
|
+
}, async ({ agentId }) => {
|
|
256
|
+
const result = await bb.restartAgent(agentId);
|
|
257
|
+
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
package/dist/wallet.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Wallet, JsonRpcProvider } from 'ethers';
|
|
2
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
3
|
+
/**
|
|
4
|
+
* Local signing wallet for the trust-preserving (Tier 2) flows: rent_service /
|
|
5
|
+
* post_task fund escrow from THIS wallet, and briefs are encrypted locally —
|
|
6
|
+
* the platform never sees plaintext or keys.
|
|
7
|
+
*
|
|
8
|
+
* The private key never appears in any tool output or log. Configure via:
|
|
9
|
+
* BLINDMARKET_PRIVATE_KEY hex private key of the funding wallet
|
|
10
|
+
* BLINDMARKET_RPC_URL optional; defaults to 0G Mainnet
|
|
11
|
+
* BLINDMARKET_CHAIN_ID optional; defaults to 16661 (0G Mainnet)
|
|
12
|
+
*/
|
|
13
|
+
export interface WalletCtx {
|
|
14
|
+
wallet: Wallet;
|
|
15
|
+
provider: JsonRpcProvider;
|
|
16
|
+
rpcUrl: string;
|
|
17
|
+
chainId: number;
|
|
18
|
+
}
|
|
19
|
+
export declare const DEFAULT_RPC_URL = "https://evmrpc.0g.ai";
|
|
20
|
+
export declare const DEFAULT_CHAIN_ID = 16661;
|
|
21
|
+
export declare function loadWallet(): WalletCtx | null;
|
|
22
|
+
export declare function registerWalletTools(server: McpServer, ctx: WalletCtx | null): void;
|
|
23
|
+
//# sourceMappingURL=wallet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,eAAe,EAAe,MAAM,QAAQ,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE;;;;;;;;;GASG;AAEH,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,eAAe,yBAAyB,CAAC;AACtD,eAAO,MAAM,gBAAgB,QAAQ,CAAC;AAEtC,wBAAgB,UAAU,IAAI,SAAS,GAAG,IAAI,CAQ7C;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI,CA8BlF"}
|
package/dist/wallet.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Wallet, JsonRpcProvider, formatEther } from 'ethers';
|
|
2
|
+
export const DEFAULT_RPC_URL = 'https://evmrpc.0g.ai';
|
|
3
|
+
export const DEFAULT_CHAIN_ID = 16661;
|
|
4
|
+
export function loadWallet() {
|
|
5
|
+
const pk = process.env.BLINDMARKET_PRIVATE_KEY;
|
|
6
|
+
if (!pk)
|
|
7
|
+
return null;
|
|
8
|
+
const rpcUrl = process.env.BLINDMARKET_RPC_URL ?? DEFAULT_RPC_URL;
|
|
9
|
+
const chainId = parseInt(process.env.BLINDMARKET_CHAIN_ID ?? String(DEFAULT_CHAIN_ID), 10);
|
|
10
|
+
const provider = new JsonRpcProvider(rpcUrl, chainId);
|
|
11
|
+
const wallet = new Wallet(pk.startsWith('0x') ? pk : `0x${pk}`, provider);
|
|
12
|
+
return { wallet, provider, rpcUrl, chainId };
|
|
13
|
+
}
|
|
14
|
+
export function registerWalletTools(server, ctx) {
|
|
15
|
+
server.registerTool('wallet_status', {
|
|
16
|
+
title: 'Wallet Status',
|
|
17
|
+
description: 'The local funding wallet used by rent_service/post_task: address, native 0G balance, chain. Returns not_configured if BLINDMARKET_PRIVATE_KEY is unset.',
|
|
18
|
+
inputSchema: {},
|
|
19
|
+
annotations: { readOnlyHint: true, openWorldHint: true },
|
|
20
|
+
}, async () => {
|
|
21
|
+
if (!ctx) {
|
|
22
|
+
return {
|
|
23
|
+
content: [{
|
|
24
|
+
type: 'text',
|
|
25
|
+
text: JSON.stringify({ configured: false, hint: 'Set BLINDMARKET_PRIVATE_KEY (and optionally BLINDMARKET_RPC_URL) to enable spending tools' }),
|
|
26
|
+
}],
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
let balance = null;
|
|
30
|
+
try {
|
|
31
|
+
balance = formatEther(await ctx.provider.getBalance(ctx.wallet.address));
|
|
32
|
+
}
|
|
33
|
+
catch { /* RPC unreachable — report address anyway */ }
|
|
34
|
+
return {
|
|
35
|
+
content: [{
|
|
36
|
+
type: 'text',
|
|
37
|
+
text: JSON.stringify({ configured: true, address: ctx.wallet.address, balance0G: balance, chainId: ctx.chainId, rpcUrl: ctx.rpcUrl }, null, 2),
|
|
38
|
+
}],
|
|
39
|
+
};
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=wallet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAqB9D,MAAM,CAAC,MAAM,eAAe,GAAG,sBAAsB,CAAC;AACtD,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAEtC,MAAM,UAAU,UAAU;IACxB,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;IAC/C,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IACrB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,eAAe,CAAC;IAClE,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3F,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC1E,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAiB,EAAE,GAAqB;IAC1E,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,yJAAyJ;QACtK,WAAW,EAAE,EAAE;QACf,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;KACzD,EACD,KAAK,IAAI,EAAE;QACT,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,2FAA2F,EAAE,CAAC;qBAC/I,CAAC;aACH,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,GAAkB,IAAI,CAAC;QAClC,IAAI,CAAC;YACH,OAAO,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC3E,CAAC;QAAC,MAAM,CAAC,CAAC,6CAA6C,CAAC,CAAC;QACzD,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC/I,CAAC;SACH,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@blindmarket/mcp-server",
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"description": "MCP server exposing BlindMarket tools — task marketplace, agent management, A2A, and persistent executor loop",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"blindmarket-mcp": "./dist/index.js"
|
|
8
|
+
},
|
|
9
|
+
"main": "./dist/index.js",
|
|
10
|
+
"files": [
|
|
11
|
+
"dist"
|
|
12
|
+
],
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "tsc",
|
|
15
|
+
"dev": "tsc --watch",
|
|
16
|
+
"start": "node dist/index.js"
|
|
17
|
+
},
|
|
18
|
+
"dependencies": {
|
|
19
|
+
"@blindmarket/sdk": "^0.4.0",
|
|
20
|
+
"@modelcontextprotocol/sdk": "^1.12.0",
|
|
21
|
+
"ethers": "^6.13.1",
|
|
22
|
+
"zod": "^3.24.0"
|
|
23
|
+
},
|
|
24
|
+
"devDependencies": {
|
|
25
|
+
"@types/node": "^22.15.3",
|
|
26
|
+
"typescript": "^5.7.3"
|
|
27
|
+
},
|
|
28
|
+
"keywords": [
|
|
29
|
+
"mcp",
|
|
30
|
+
"model-context-protocol",
|
|
31
|
+
"blindmarket",
|
|
32
|
+
"ai-agents",
|
|
33
|
+
"web3"
|
|
34
|
+
]
|
|
35
|
+
}
|