drain-mcp 0.3.1 → 0.3.2
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/dist/index.js
CHANGED
|
@@ -49,7 +49,8 @@ MCP TOOLS PROVIDED:
|
|
|
49
49
|
drain_channel_status Check channel status and balance
|
|
50
50
|
drain_channels List all known channels with status
|
|
51
51
|
drain_chat Send a paid request via DRAIN channel
|
|
52
|
-
mpp_chat Send a per-request payment to an MPP provider
|
|
52
|
+
mpp_chat Send a per-request payment to an MPP provider (chat format)
|
|
53
|
+
mpp_request Send a raw HTTP request to an MPP REST API
|
|
53
54
|
drain_feedback Report quality feedback (success/failure)
|
|
54
55
|
|
|
55
56
|
PROTOCOLS:
|
|
@@ -83,6 +84,7 @@ import { balanceTools, getBalance, approveUsdc } from './tools/balance.js';
|
|
|
83
84
|
import { channelTools, openChannel, closeChannel, cooperativeClose, getChannelStatus, listChannels } from './tools/channel.js';
|
|
84
85
|
import { chatTools, chat } from './tools/chat.js';
|
|
85
86
|
import { mppTools, mppChat } from './tools/mpp.js';
|
|
87
|
+
import { mppRequestTools, mppRequest } from './tools/mpp-request.js';
|
|
86
88
|
import { feedbackTools, submitFeedback } from './tools/feedback.js';
|
|
87
89
|
// ============================================================================
|
|
88
90
|
// SERVER SETUP
|
|
@@ -106,7 +108,7 @@ class DrainMcpServer {
|
|
|
106
108
|
// Create MCP server
|
|
107
109
|
this.server = new Server({
|
|
108
110
|
name: 'drain-mcp',
|
|
109
|
-
version: '0.3.
|
|
111
|
+
version: '0.3.2',
|
|
110
112
|
}, {
|
|
111
113
|
capabilities: {
|
|
112
114
|
tools: {},
|
|
@@ -124,6 +126,7 @@ class DrainMcpServer {
|
|
|
124
126
|
...channelTools,
|
|
125
127
|
...chatTools,
|
|
126
128
|
...mppTools,
|
|
129
|
+
...mppRequestTools,
|
|
127
130
|
...feedbackTools,
|
|
128
131
|
],
|
|
129
132
|
}));
|
|
@@ -171,6 +174,10 @@ class DrainMcpServer {
|
|
|
171
174
|
case 'mpp_chat':
|
|
172
175
|
result = await mppChat(this.providerService, this.telemetryService, args);
|
|
173
176
|
break;
|
|
177
|
+
// MPP request (REST APIs)
|
|
178
|
+
case 'mpp_request':
|
|
179
|
+
result = await mppRequest(this.telemetryService, args);
|
|
180
|
+
break;
|
|
174
181
|
// Feedback tools
|
|
175
182
|
case 'drain_feedback':
|
|
176
183
|
result = await submitFeedback(this.config, args);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AAEH,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MPP Request Tool
|
|
3
|
+
*
|
|
4
|
+
* Generic HTTP requests to MPP endpoints with raw JSON payloads.
|
|
5
|
+
* For REST-style MPP services (Tavily, Wolfram, etc.) that don't use chat format.
|
|
6
|
+
*/
|
|
7
|
+
import type { TelemetryService } from '../services/telemetry.js';
|
|
8
|
+
export declare function mppRequest(telemetryService: TelemetryService, args: {
|
|
9
|
+
url: string;
|
|
10
|
+
body?: Record<string, unknown>;
|
|
11
|
+
method?: string;
|
|
12
|
+
}): Promise<string>;
|
|
13
|
+
export declare const mppRequestTools: {
|
|
14
|
+
name: string;
|
|
15
|
+
description: string;
|
|
16
|
+
inputSchema: {
|
|
17
|
+
type: string;
|
|
18
|
+
properties: {
|
|
19
|
+
url: {
|
|
20
|
+
type: string;
|
|
21
|
+
description: string;
|
|
22
|
+
};
|
|
23
|
+
body: {
|
|
24
|
+
type: string;
|
|
25
|
+
description: string;
|
|
26
|
+
};
|
|
27
|
+
method: {
|
|
28
|
+
type: string;
|
|
29
|
+
enum: string[];
|
|
30
|
+
description: string;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
required: string[];
|
|
34
|
+
};
|
|
35
|
+
}[];
|
|
36
|
+
//# sourceMappingURL=mpp-request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mpp-request.d.ts","sourceRoot":"","sources":["../../src/tools/mpp-request.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,wBAAsB,UAAU,CAC9B,gBAAgB,EAAE,gBAAgB,EAClC,IAAI,EAAE;IACJ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GACA,OAAO,CAAC,MAAM,CAAC,CAgGjB;AAED,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;GAiC3B,CAAC"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MPP Request Tool
|
|
3
|
+
*
|
|
4
|
+
* Generic HTTP requests to MPP endpoints with raw JSON payloads.
|
|
5
|
+
* For REST-style MPP services (Tavily, Wolfram, etc.) that don't use chat format.
|
|
6
|
+
*/
|
|
7
|
+
export async function mppRequest(telemetryService, args) {
|
|
8
|
+
if (!args.url) {
|
|
9
|
+
return 'Error: url is required (full MPP endpoint URL including path, e.g. https://tavily.mpp.paywithlocus.com/tavily/search).';
|
|
10
|
+
}
|
|
11
|
+
const method = (args.method || 'POST').toUpperCase();
|
|
12
|
+
const start = Date.now();
|
|
13
|
+
let httpStatus = 0;
|
|
14
|
+
try {
|
|
15
|
+
const fetchOpts = {
|
|
16
|
+
method,
|
|
17
|
+
headers: { 'Content-Type': 'application/json' },
|
|
18
|
+
};
|
|
19
|
+
if (args.body && method !== 'GET') {
|
|
20
|
+
fetchOpts.body = JSON.stringify(args.body);
|
|
21
|
+
}
|
|
22
|
+
const res = await fetch(args.url, fetchOpts);
|
|
23
|
+
httpStatus = res.status;
|
|
24
|
+
const latency = Date.now() - start;
|
|
25
|
+
if (res.status === 402) {
|
|
26
|
+
const wwwAuth = res.headers.get('www-authenticate') || '';
|
|
27
|
+
const paymentInfo = res.headers.get('x-payment') || '';
|
|
28
|
+
const body402 = await res.text().catch(() => '');
|
|
29
|
+
telemetryService.report({
|
|
30
|
+
providerId: args.url,
|
|
31
|
+
latencyMs: latency,
|
|
32
|
+
httpStatus: 402,
|
|
33
|
+
costUsdc: 0,
|
|
34
|
+
protocol: 'mpp',
|
|
35
|
+
});
|
|
36
|
+
return [
|
|
37
|
+
'Payment required (HTTP 402). This endpoint requires per-request payment.',
|
|
38
|
+
'',
|
|
39
|
+
wwwAuth ? `WWW-Authenticate: ${wwwAuth}` : '',
|
|
40
|
+
paymentInfo ? `X-Payment: ${paymentInfo}` : '',
|
|
41
|
+
body402 ? `\nPayment details:\n${body402.slice(0, 2000)}` : '',
|
|
42
|
+
'',
|
|
43
|
+
'To pay: your agent needs an MPP payment handler (Tempo wallet or mppx).',
|
|
44
|
+
].filter(Boolean).join('\n');
|
|
45
|
+
}
|
|
46
|
+
if (!res.ok) {
|
|
47
|
+
const errText = await res.text().catch(() => res.statusText);
|
|
48
|
+
telemetryService.report({
|
|
49
|
+
providerId: args.url,
|
|
50
|
+
latencyMs: latency,
|
|
51
|
+
httpStatus: res.status,
|
|
52
|
+
costUsdc: 0,
|
|
53
|
+
protocol: 'mpp',
|
|
54
|
+
});
|
|
55
|
+
return `Error from MPP endpoint: ${errText.slice(0, 500)} (HTTP ${res.status})`;
|
|
56
|
+
}
|
|
57
|
+
const contentType = res.headers.get('content-type') || '';
|
|
58
|
+
const costHeader = res.headers.get('x-cost') || res.headers.get('x-drain-cost');
|
|
59
|
+
const cost = costHeader ? parseFloat(costHeader) / 1_000_000 : 0;
|
|
60
|
+
telemetryService.report({
|
|
61
|
+
providerId: args.url,
|
|
62
|
+
latencyMs: latency,
|
|
63
|
+
httpStatus: 200,
|
|
64
|
+
costUsdc: cost,
|
|
65
|
+
protocol: 'mpp',
|
|
66
|
+
});
|
|
67
|
+
let content;
|
|
68
|
+
if (contentType.includes('json')) {
|
|
69
|
+
const data = await res.json();
|
|
70
|
+
content = JSON.stringify(data, null, 2);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
content = await res.text();
|
|
74
|
+
}
|
|
75
|
+
const costStr = cost > 0 ? ` | Cost: $${cost.toFixed(6)}` : '';
|
|
76
|
+
return `${content}\n\n---\n*MPP ${method} completed in ${latency}ms${costStr}*`;
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
const latency = Date.now() - start;
|
|
80
|
+
telemetryService.report({
|
|
81
|
+
providerId: args.url,
|
|
82
|
+
latencyMs: latency,
|
|
83
|
+
httpStatus: httpStatus || 0,
|
|
84
|
+
costUsdc: 0,
|
|
85
|
+
protocol: 'mpp',
|
|
86
|
+
});
|
|
87
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
88
|
+
return `MPP request failed: ${msg}`;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
export const mppRequestTools = [
|
|
92
|
+
{
|
|
93
|
+
name: 'mpp_request',
|
|
94
|
+
description: `Send a raw HTTP request to an MPP endpoint (REST APIs, not chat format).
|
|
95
|
+
|
|
96
|
+
Use this for non-LLM MPP services like Tavily (search), Wolfram|Alpha (data), etc.
|
|
97
|
+
These services expect raw JSON payloads, not chat messages.
|
|
98
|
+
|
|
99
|
+
For LLM-style MPP providers (Anthropic, OpenAI via MPP), use mpp_chat instead.
|
|
100
|
+
|
|
101
|
+
Use drain_provider_info to read the provider's docs and find the correct endpoint paths and request format.
|
|
102
|
+
|
|
103
|
+
Example: mpp_request(url: "https://tavily.mpp.paywithlocus.com/tavily/search", body: {"query": "AI agents", "max_results": 5})`,
|
|
104
|
+
inputSchema: {
|
|
105
|
+
type: 'object',
|
|
106
|
+
properties: {
|
|
107
|
+
url: {
|
|
108
|
+
type: 'string',
|
|
109
|
+
description: 'Full MPP endpoint URL including path (e.g. https://tavily.mpp.paywithlocus.com/tavily/search)',
|
|
110
|
+
},
|
|
111
|
+
body: {
|
|
112
|
+
type: 'object',
|
|
113
|
+
description: 'JSON request body to send (raw, not wrapped in messages)',
|
|
114
|
+
},
|
|
115
|
+
method: {
|
|
116
|
+
type: 'string',
|
|
117
|
+
enum: ['GET', 'POST', 'PUT', 'DELETE'],
|
|
118
|
+
description: 'HTTP method (default: POST)',
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
required: ['url'],
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
];
|
|
125
|
+
//# sourceMappingURL=mpp-request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mpp-request.js","sourceRoot":"","sources":["../../src/tools/mpp-request.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "drain-mcp",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"mcpName": "io.github.kimbo128/drain-mcp",
|
|
5
5
|
"description": "MCP server for the Handshake58 AI marketplace. DRAIN payment channels, MPP per-request payments, quality feedback. Agents discover providers, pay, and report.",
|
|
6
6
|
"repository": {
|