dodopayments-mcp 2.32.1 → 2.32.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/code-tool.d.mts.map +1 -1
- package/code-tool.d.ts.map +1 -1
- package/code-tool.js +2 -56
- package/code-tool.js.map +1 -1
- package/code-tool.mjs +3 -57
- package/code-tool.mjs.map +1 -1
- package/docs-search-tool.d.mts.map +1 -1
- package/docs-search-tool.d.ts.map +1 -1
- package/docs-search-tool.js +1 -41
- package/docs-search-tool.js.map +1 -1
- package/docs-search-tool.mjs +1 -41
- package/docs-search-tool.mjs.map +1 -1
- package/instructions.d.mts.map +1 -1
- package/instructions.d.ts.map +1 -1
- package/instructions.js +2 -18
- package/instructions.js.map +1 -1
- package/instructions.mjs +2 -18
- package/instructions.mjs.map +1 -1
- package/local-docs-search.d.mts.map +1 -1
- package/local-docs-search.d.ts.map +1 -1
- package/local-docs-search.js +400 -926
- package/local-docs-search.js.map +1 -1
- package/local-docs-search.mjs +400 -926
- package/local-docs-search.mjs.map +1 -1
- package/methods.js +205 -205
- package/methods.js.map +1 -1
- package/methods.mjs +205 -205
- package/methods.mjs.map +1 -1
- package/options.d.mts +2 -2
- package/options.d.mts.map +1 -1
- package/options.d.ts +2 -2
- package/options.d.ts.map +1 -1
- package/options.js +6 -6
- package/options.js.map +1 -1
- package/options.mjs +6 -6
- package/options.mjs.map +1 -1
- package/package.json +2 -2
- package/server.js +1 -1
- package/server.js.map +1 -1
- package/server.mjs +1 -1
- package/server.mjs.map +1 -1
- package/src/code-tool.ts +4 -87
- package/src/docs-search-tool.ts +2 -61
- package/src/instructions.ts +2 -28
- package/src/local-docs-search.ts +531 -1151
- package/src/methods.ts +205 -205
- package/src/options.ts +9 -9
- package/src/server.ts +1 -1
package/code-tool.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-tool.d.mts","sourceRoot":"","sources":["src/code-tool.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"code-tool.d.mts","sourceRoot":"","sources":["src/code-tool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmC,OAAO,EAA2C,oBAAgB;AAI5G,OAAO,EAAE,SAAS,EAAE,sBAAkB;AACtC,OAAO,EAAE,oBAAoB,EAAE,sBAAkB;AAyBjD;;;;;;;;;;;;GAYG;AACH,wBAAgB,QAAQ,CAAC,EACvB,cAAc,EACd,iBAAiB,GAClB,EAAE;IACD,cAAc,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;IACxC,iBAAiB,EAAE,oBAAoB,CAAC;CACzC,GAAG,OAAO,CAkEV"}
|
package/code-tool.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-tool.d.ts","sourceRoot":"","sources":["src/code-tool.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"code-tool.d.ts","sourceRoot":"","sources":["src/code-tool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmC,OAAO,EAA2C,mBAAgB;AAI5G,OAAO,EAAE,SAAS,EAAE,qBAAkB;AACtC,OAAO,EAAE,oBAAoB,EAAE,qBAAkB;AAyBjD;;;;;;;;;;;;GAYG;AACH,wBAAgB,QAAQ,CAAC,EACvB,cAAc,EACd,iBAAiB,GAClB,EAAE;IACD,cAAc,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;IACxC,iBAAiB,EAAE,oBAAoB,CAAC;CACzC,GAAG,OAAO,CAkEV"}
|
package/code-tool.js
CHANGED
|
@@ -36,7 +36,6 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
36
36
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
37
|
exports.codeTool = codeTool;
|
|
38
38
|
const types_1 = require("./types.js");
|
|
39
|
-
const util_1 = require("./util.js");
|
|
40
39
|
const logger_1 = require("./logger.js");
|
|
41
40
|
const prompt = `Runs JavaScript code to interact with the Dodo Payments API.
|
|
42
41
|
|
|
@@ -110,14 +109,8 @@ function codeTool({ blockedMethods, codeExecutionMode, }) {
|
|
|
110
109
|
}
|
|
111
110
|
let result;
|
|
112
111
|
const startTime = Date.now();
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
result = await localDenoHandler({ reqContext, args });
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
logger.debug('Executing code in remote Stainless environment');
|
|
119
|
-
result = await remoteStainlessHandler({ reqContext, args });
|
|
120
|
-
}
|
|
112
|
+
logger.debug('Executing code in local Deno environment');
|
|
113
|
+
result = await localDenoHandler({ reqContext, args });
|
|
121
114
|
logger.info({
|
|
122
115
|
codeExecutionMode,
|
|
123
116
|
durationMs: Date.now() - startTime,
|
|
@@ -128,53 +121,6 @@ function codeTool({ blockedMethods, codeExecutionMode, }) {
|
|
|
128
121
|
};
|
|
129
122
|
return { metadata, tool, handler };
|
|
130
123
|
}
|
|
131
|
-
const remoteStainlessHandler = async ({ reqContext, args, }) => {
|
|
132
|
-
const code = args.code;
|
|
133
|
-
const intent = args.intent;
|
|
134
|
-
const client = reqContext.client;
|
|
135
|
-
const codeModeEndpoint = (0, util_1.readEnv)('CODE_MODE_ENDPOINT_URL') ?? 'https://api.stainless.com/api/ai/code-tool';
|
|
136
|
-
const localClientEnvs = {
|
|
137
|
-
DODO_PAYMENTS_API_KEY: (0, util_1.requireValue)((0, util_1.readEnv)('DODO_PAYMENTS_API_KEY') ?? client.bearerToken, 'set DODO_PAYMENTS_API_KEY environment variable or provide bearerToken client option'),
|
|
138
|
-
DODO_PAYMENTS_WEBHOOK_KEY: (0, util_1.readEnv)('DODO_PAYMENTS_WEBHOOK_KEY') ?? client.webhookKey ?? undefined,
|
|
139
|
-
DODO_PAYMENTS_BASE_URL: (0, util_1.readEnv)('DODO_PAYMENTS_BASE_URL') ?? (0, util_1.readEnv)('DODO_PAYMENTS_ENVIRONMENT') ?
|
|
140
|
-
undefined
|
|
141
|
-
: client.baseURL ?? undefined,
|
|
142
|
-
};
|
|
143
|
-
// Merge any upstream client envs from the request header, with upstream values taking precedence.
|
|
144
|
-
const mergedClientEnvs = { ...localClientEnvs, ...reqContext.upstreamClientEnvs };
|
|
145
|
-
// Setting a Stainless API key authenticates requests to the code tool endpoint.
|
|
146
|
-
const res = await fetch(codeModeEndpoint, {
|
|
147
|
-
method: 'POST',
|
|
148
|
-
headers: {
|
|
149
|
-
...(reqContext.stainlessApiKey && { Authorization: reqContext.stainlessApiKey }),
|
|
150
|
-
'Content-Type': 'application/json',
|
|
151
|
-
'x-stainless-mcp-client-envs': JSON.stringify(mergedClientEnvs),
|
|
152
|
-
},
|
|
153
|
-
body: JSON.stringify({
|
|
154
|
-
project_name: 'dodo-payments',
|
|
155
|
-
code,
|
|
156
|
-
intent,
|
|
157
|
-
client_opts: { environment: ((0, util_1.readEnv)('DODO_PAYMENTS_ENVIRONMENT') || undefined) },
|
|
158
|
-
}),
|
|
159
|
-
});
|
|
160
|
-
if (!res.ok) {
|
|
161
|
-
if (res.status === 404 && !reqContext.stainlessApiKey) {
|
|
162
|
-
throw new Error('Could not access code tool for this project. You may need to provide a Stainless API key via the STAINLESS_API_KEY environment variable, the --stainless-api-key flag, or the x-stainless-api-key HTTP header.');
|
|
163
|
-
}
|
|
164
|
-
throw new Error(`${res.status}: ${res.statusText} error when trying to contact Code Tool server. Details: ${await res.text()}`);
|
|
165
|
-
}
|
|
166
|
-
const { is_error, result, log_lines, err_lines } = (await res.json());
|
|
167
|
-
const hasLogs = log_lines.length > 0 || err_lines.length > 0;
|
|
168
|
-
const output = {
|
|
169
|
-
result,
|
|
170
|
-
...(log_lines.length > 0 && { log_lines }),
|
|
171
|
-
...(err_lines.length > 0 && { err_lines }),
|
|
172
|
-
};
|
|
173
|
-
if (is_error) {
|
|
174
|
-
return (0, types_1.asErrorResult)(typeof result === 'string' && !hasLogs ? result : JSON.stringify(output, null, 2));
|
|
175
|
-
}
|
|
176
|
-
return (0, types_1.asTextContentResult)(output);
|
|
177
|
-
};
|
|
178
124
|
const localDenoHandler = async ({ reqContext, args, }) => {
|
|
179
125
|
const fs = await Promise.resolve().then(() => __importStar(require('node:fs')));
|
|
180
126
|
const path = await Promise.resolve().then(() => __importStar(require('node:path')));
|
package/code-tool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-tool.js","sourceRoot":"","sources":["src/code-tool.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"code-tool.js","sourceRoot":"","sources":["src/code-tool.ts"],"names":[],"mappings":"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"}
|
package/code-tool.mjs
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
-
import { asErrorResult
|
|
3
|
-
import { readEnv, requireValue } from "./util.mjs";
|
|
2
|
+
import { asErrorResult } from "./types.mjs";
|
|
4
3
|
import { getLogger } from "./logger.mjs";
|
|
5
4
|
const prompt = `Runs JavaScript code to interact with the Dodo Payments API.
|
|
6
5
|
|
|
@@ -74,14 +73,8 @@ export function codeTool({ blockedMethods, codeExecutionMode, }) {
|
|
|
74
73
|
}
|
|
75
74
|
let result;
|
|
76
75
|
const startTime = Date.now();
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
result = await localDenoHandler({ reqContext, args });
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
logger.debug('Executing code in remote Stainless environment');
|
|
83
|
-
result = await remoteStainlessHandler({ reqContext, args });
|
|
84
|
-
}
|
|
76
|
+
logger.debug('Executing code in local Deno environment');
|
|
77
|
+
result = await localDenoHandler({ reqContext, args });
|
|
85
78
|
logger.info({
|
|
86
79
|
codeExecutionMode,
|
|
87
80
|
durationMs: Date.now() - startTime,
|
|
@@ -92,53 +85,6 @@ export function codeTool({ blockedMethods, codeExecutionMode, }) {
|
|
|
92
85
|
};
|
|
93
86
|
return { metadata, tool, handler };
|
|
94
87
|
}
|
|
95
|
-
const remoteStainlessHandler = async ({ reqContext, args, }) => {
|
|
96
|
-
const code = args.code;
|
|
97
|
-
const intent = args.intent;
|
|
98
|
-
const client = reqContext.client;
|
|
99
|
-
const codeModeEndpoint = readEnv('CODE_MODE_ENDPOINT_URL') ?? 'https://api.stainless.com/api/ai/code-tool';
|
|
100
|
-
const localClientEnvs = {
|
|
101
|
-
DODO_PAYMENTS_API_KEY: requireValue(readEnv('DODO_PAYMENTS_API_KEY') ?? client.bearerToken, 'set DODO_PAYMENTS_API_KEY environment variable or provide bearerToken client option'),
|
|
102
|
-
DODO_PAYMENTS_WEBHOOK_KEY: readEnv('DODO_PAYMENTS_WEBHOOK_KEY') ?? client.webhookKey ?? undefined,
|
|
103
|
-
DODO_PAYMENTS_BASE_URL: readEnv('DODO_PAYMENTS_BASE_URL') ?? readEnv('DODO_PAYMENTS_ENVIRONMENT') ?
|
|
104
|
-
undefined
|
|
105
|
-
: client.baseURL ?? undefined,
|
|
106
|
-
};
|
|
107
|
-
// Merge any upstream client envs from the request header, with upstream values taking precedence.
|
|
108
|
-
const mergedClientEnvs = { ...localClientEnvs, ...reqContext.upstreamClientEnvs };
|
|
109
|
-
// Setting a Stainless API key authenticates requests to the code tool endpoint.
|
|
110
|
-
const res = await fetch(codeModeEndpoint, {
|
|
111
|
-
method: 'POST',
|
|
112
|
-
headers: {
|
|
113
|
-
...(reqContext.stainlessApiKey && { Authorization: reqContext.stainlessApiKey }),
|
|
114
|
-
'Content-Type': 'application/json',
|
|
115
|
-
'x-stainless-mcp-client-envs': JSON.stringify(mergedClientEnvs),
|
|
116
|
-
},
|
|
117
|
-
body: JSON.stringify({
|
|
118
|
-
project_name: 'dodo-payments',
|
|
119
|
-
code,
|
|
120
|
-
intent,
|
|
121
|
-
client_opts: { environment: (readEnv('DODO_PAYMENTS_ENVIRONMENT') || undefined) },
|
|
122
|
-
}),
|
|
123
|
-
});
|
|
124
|
-
if (!res.ok) {
|
|
125
|
-
if (res.status === 404 && !reqContext.stainlessApiKey) {
|
|
126
|
-
throw new Error('Could not access code tool for this project. You may need to provide a Stainless API key via the STAINLESS_API_KEY environment variable, the --stainless-api-key flag, or the x-stainless-api-key HTTP header.');
|
|
127
|
-
}
|
|
128
|
-
throw new Error(`${res.status}: ${res.statusText} error when trying to contact Code Tool server. Details: ${await res.text()}`);
|
|
129
|
-
}
|
|
130
|
-
const { is_error, result, log_lines, err_lines } = (await res.json());
|
|
131
|
-
const hasLogs = log_lines.length > 0 || err_lines.length > 0;
|
|
132
|
-
const output = {
|
|
133
|
-
result,
|
|
134
|
-
...(log_lines.length > 0 && { log_lines }),
|
|
135
|
-
...(err_lines.length > 0 && { err_lines }),
|
|
136
|
-
};
|
|
137
|
-
if (is_error) {
|
|
138
|
-
return asErrorResult(typeof result === 'string' && !hasLogs ? result : JSON.stringify(output, null, 2));
|
|
139
|
-
}
|
|
140
|
-
return asTextContentResult(output);
|
|
141
|
-
};
|
|
142
88
|
const localDenoHandler = async ({ reqContext, args, }) => {
|
|
143
89
|
const fs = await import('node:fs');
|
|
144
90
|
const path = await import('node:path');
|
package/code-tool.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-tool.mjs","sourceRoot":"","sources":["src/code-tool.ts"],"names":[],"mappings":"AAAA,sFAAsF;AAEtF,OAAO,
|
|
1
|
+
{"version":3,"file":"code-tool.mjs","sourceRoot":"","sources":["src/code-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs-search-tool.d.mts","sourceRoot":"","sources":["src/docs-search-tool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAuB,oBAAgB;AAE3E,OAAO,KAAK,EAAE,eAAe,EAAE,gCAA4B;AAE3D,eAAO,MAAM,QAAQ,EAAE,QAKtB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,IA2BlB,CAAC;
|
|
1
|
+
{"version":3,"file":"docs-search-tool.d.mts","sourceRoot":"","sources":["src/docs-search-tool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAuB,oBAAgB;AAE3E,OAAO,KAAK,EAAE,eAAe,EAAE,gCAA4B;AAE3D,eAAO,MAAM,QAAQ,EAAE,QAKtB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,IA2BlB,CAAC;AAIF,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAE5D;AAmBD,eAAO,MAAM,OAAO,GAAU,uBAG3B;IACD,UAAU,EAAE,iBAAiB,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;CAC3C,kDAIA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAPC;QACD,UAAU,EAAE,iBAAiB,CAAC;QAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;KAC3C;;AAMD,wBAA2C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs-search-tool.d.ts","sourceRoot":"","sources":["src/docs-search-tool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAuB,mBAAgB;AAE3E,OAAO,KAAK,EAAE,eAAe,EAAE,+BAA4B;AAE3D,eAAO,MAAM,QAAQ,EAAE,QAKtB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,IA2BlB,CAAC;
|
|
1
|
+
{"version":3,"file":"docs-search-tool.d.ts","sourceRoot":"","sources":["src/docs-search-tool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAuB,mBAAgB;AAE3E,OAAO,KAAK,EAAE,eAAe,EAAE,+BAA4B;AAE3D,eAAO,MAAM,QAAQ,EAAE,QAKtB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,IA2BlB,CAAC;AAIF,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAE5D;AAmBD,eAAO,MAAM,OAAO,GAAU,uBAG3B;IACD,UAAU,EAAE,iBAAiB,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;CAC3C,iDAIA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAPC;QACD,UAAU,EAAE,iBAAiB,CAAC;QAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;KAC3C;;AAMD,wBAA2C"}
|
package/docs-search-tool.js
CHANGED
|
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
exports.handler = exports.tool = exports.metadata = void 0;
|
|
5
5
|
exports.setLocalSearch = setLocalSearch;
|
|
6
6
|
const types_1 = require("./types.js");
|
|
7
|
-
const logger_1 = require("./logger.js");
|
|
8
7
|
exports.metadata = {
|
|
9
8
|
resource: 'all',
|
|
10
9
|
operation: 'read',
|
|
@@ -38,7 +37,6 @@ exports.tool = {
|
|
|
38
37
|
readOnlyHint: true,
|
|
39
38
|
},
|
|
40
39
|
};
|
|
41
|
-
const docsSearchURL = process.env['DOCS_SEARCH_URL'] || 'https://api.stainless.com/api/projects/dodo-payments/docs/search';
|
|
42
40
|
let _localSearch;
|
|
43
41
|
function setLocalSearch(search) {
|
|
44
42
|
_localSearch = search;
|
|
@@ -57,47 +55,9 @@ async function searchLocal(args) {
|
|
|
57
55
|
maxResults: 10,
|
|
58
56
|
}).results;
|
|
59
57
|
}
|
|
60
|
-
async function searchRemote(args, reqContext) {
|
|
61
|
-
const body = args;
|
|
62
|
-
const query = new URLSearchParams(body).toString();
|
|
63
|
-
const startTime = Date.now();
|
|
64
|
-
const result = await fetch(`${docsSearchURL}?${query}`, {
|
|
65
|
-
headers: {
|
|
66
|
-
...(reqContext.stainlessApiKey && { Authorization: reqContext.stainlessApiKey }),
|
|
67
|
-
...(reqContext.mcpSessionId && { 'x-stainless-mcp-session-id': reqContext.mcpSessionId }),
|
|
68
|
-
...(reqContext.mcpClientInfo && {
|
|
69
|
-
'x-stainless-mcp-client-info': JSON.stringify(reqContext.mcpClientInfo),
|
|
70
|
-
}),
|
|
71
|
-
},
|
|
72
|
-
});
|
|
73
|
-
const logger = (0, logger_1.getLogger)();
|
|
74
|
-
if (!result.ok) {
|
|
75
|
-
const errorText = await result.text();
|
|
76
|
-
logger.warn({
|
|
77
|
-
durationMs: Date.now() - startTime,
|
|
78
|
-
query: body.query,
|
|
79
|
-
status: result.status,
|
|
80
|
-
statusText: result.statusText,
|
|
81
|
-
errorText,
|
|
82
|
-
}, 'Got error response from docs search tool');
|
|
83
|
-
if (result.status === 404 && !reqContext.stainlessApiKey) {
|
|
84
|
-
throw new Error('Could not find docs for this project. You may need to provide a Stainless API key via the STAINLESS_API_KEY environment variable, the --stainless-api-key flag, or the x-stainless-api-key HTTP header.');
|
|
85
|
-
}
|
|
86
|
-
throw new Error(`${result.status}: ${result.statusText} when using doc search tool. Details: ${errorText}`);
|
|
87
|
-
}
|
|
88
|
-
const resultBody = await result.json();
|
|
89
|
-
logger.info({
|
|
90
|
-
durationMs: Date.now() - startTime,
|
|
91
|
-
query: body.query,
|
|
92
|
-
}, 'Got docs search result');
|
|
93
|
-
return resultBody;
|
|
94
|
-
}
|
|
95
58
|
const handler = async ({ reqContext, args, }) => {
|
|
96
59
|
const body = args ?? {};
|
|
97
|
-
|
|
98
|
-
return (0, types_1.asTextContentResult)(await searchLocal(body));
|
|
99
|
-
}
|
|
100
|
-
return (0, types_1.asTextContentResult)(await searchRemote(body, reqContext));
|
|
60
|
+
return (0, types_1.asTextContentResult)(await searchLocal(body));
|
|
101
61
|
};
|
|
102
62
|
exports.handler = handler;
|
|
103
63
|
exports.default = { metadata: exports.metadata, tool: exports.tool, handler: exports.handler };
|
package/docs-search-tool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs-search-tool.js","sourceRoot":"","sources":["src/docs-search-tool.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;
|
|
1
|
+
{"version":3,"file":"docs-search-tool.js","sourceRoot":"","sources":["src/docs-search-tool.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;AA6CtF,wCAEC;AA5CD,sCAA2E;AAI9D,QAAA,QAAQ,GAAa;IAChC,QAAQ,EAAE,KAAK;IACf,SAAS,EAAE,MAAM;IACjB,IAAI,EAAE,EAAE;IACR,UAAU,EAAE,KAAK;CAClB,CAAC;AAEW,QAAA,IAAI,GAAS;IACxB,IAAI,EAAE,aAAa;IACnB,WAAW,EACT,mLAAmL;IACrL,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,0BAA0B;aACxC;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,yCAAyC;gBACtD,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;aAClG;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iCAAiC;gBAC9C,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;aAC7B;SACF;QACD,QAAQ,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;KAChC;IACD,WAAW,EAAE;QACX,YAAY,EAAE,IAAI;KACnB;CACF,CAAC;AAEF,IAAI,YAAyC,CAAC;AAE9C,SAAgB,cAAc,CAAC,MAAuB;IACpD,YAAY,GAAG,MAAM,CAAC;AACxB,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,IAA6B;IACtD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,GAAI,IAAI,CAAC,OAAO,CAAY,IAAI,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAI,IAAI,CAAC,UAAU,CAAY,IAAI,YAAY,CAAC;IAC9D,MAAM,MAAM,GAAI,IAAI,CAAC,QAAQ,CAAY,IAAI,SAAS,CAAC;IAEvD,OAAO,YAAY,CAAC,MAAM,CAAC;QACzB,KAAK;QACL,QAAQ;QACR,MAAM;QACN,UAAU,EAAE,EAAE;KACf,CAAC,CAAC,OAAO,CAAC;AACb,CAAC;AAEM,MAAM,OAAO,GAAG,KAAK,EAAE,EAC5B,UAAU,EACV,IAAI,GAIL,EAAE,EAAE;IACH,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IAExB,OAAO,IAAA,2BAAmB,EAAC,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AACtD,CAAC,CAAC;AAVW,QAAA,OAAO,WAUlB;AAEF,kBAAe,EAAE,QAAQ,EAAR,gBAAQ,EAAE,IAAI,EAAJ,YAAI,EAAE,OAAO,EAAP,eAAO,EAAE,CAAC"}
|
package/docs-search-tool.mjs
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
2
|
import { asTextContentResult } from "./types.mjs";
|
|
3
|
-
import { getLogger } from "./logger.mjs";
|
|
4
3
|
export const metadata = {
|
|
5
4
|
resource: 'all',
|
|
6
5
|
operation: 'read',
|
|
@@ -34,7 +33,6 @@ export const tool = {
|
|
|
34
33
|
readOnlyHint: true,
|
|
35
34
|
},
|
|
36
35
|
};
|
|
37
|
-
const docsSearchURL = process.env['DOCS_SEARCH_URL'] || 'https://api.stainless.com/api/projects/dodo-payments/docs/search';
|
|
38
36
|
let _localSearch;
|
|
39
37
|
export function setLocalSearch(search) {
|
|
40
38
|
_localSearch = search;
|
|
@@ -53,47 +51,9 @@ async function searchLocal(args) {
|
|
|
53
51
|
maxResults: 10,
|
|
54
52
|
}).results;
|
|
55
53
|
}
|
|
56
|
-
async function searchRemote(args, reqContext) {
|
|
57
|
-
const body = args;
|
|
58
|
-
const query = new URLSearchParams(body).toString();
|
|
59
|
-
const startTime = Date.now();
|
|
60
|
-
const result = await fetch(`${docsSearchURL}?${query}`, {
|
|
61
|
-
headers: {
|
|
62
|
-
...(reqContext.stainlessApiKey && { Authorization: reqContext.stainlessApiKey }),
|
|
63
|
-
...(reqContext.mcpSessionId && { 'x-stainless-mcp-session-id': reqContext.mcpSessionId }),
|
|
64
|
-
...(reqContext.mcpClientInfo && {
|
|
65
|
-
'x-stainless-mcp-client-info': JSON.stringify(reqContext.mcpClientInfo),
|
|
66
|
-
}),
|
|
67
|
-
},
|
|
68
|
-
});
|
|
69
|
-
const logger = getLogger();
|
|
70
|
-
if (!result.ok) {
|
|
71
|
-
const errorText = await result.text();
|
|
72
|
-
logger.warn({
|
|
73
|
-
durationMs: Date.now() - startTime,
|
|
74
|
-
query: body.query,
|
|
75
|
-
status: result.status,
|
|
76
|
-
statusText: result.statusText,
|
|
77
|
-
errorText,
|
|
78
|
-
}, 'Got error response from docs search tool');
|
|
79
|
-
if (result.status === 404 && !reqContext.stainlessApiKey) {
|
|
80
|
-
throw new Error('Could not find docs for this project. You may need to provide a Stainless API key via the STAINLESS_API_KEY environment variable, the --stainless-api-key flag, or the x-stainless-api-key HTTP header.');
|
|
81
|
-
}
|
|
82
|
-
throw new Error(`${result.status}: ${result.statusText} when using doc search tool. Details: ${errorText}`);
|
|
83
|
-
}
|
|
84
|
-
const resultBody = await result.json();
|
|
85
|
-
logger.info({
|
|
86
|
-
durationMs: Date.now() - startTime,
|
|
87
|
-
query: body.query,
|
|
88
|
-
}, 'Got docs search result');
|
|
89
|
-
return resultBody;
|
|
90
|
-
}
|
|
91
54
|
export const handler = async ({ reqContext, args, }) => {
|
|
92
55
|
const body = args ?? {};
|
|
93
|
-
|
|
94
|
-
return asTextContentResult(await searchLocal(body));
|
|
95
|
-
}
|
|
96
|
-
return asTextContentResult(await searchRemote(body, reqContext));
|
|
56
|
+
return asTextContentResult(await searchLocal(body));
|
|
97
57
|
};
|
|
98
58
|
export default { metadata, tool, handler };
|
|
99
59
|
//# sourceMappingURL=docs-search-tool.mjs.map
|
package/docs-search-tool.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs-search-tool.mjs","sourceRoot":"","sources":["src/docs-search-tool.ts"],"names":[],"mappings":"AAAA,sFAAsF;AAGtF,OAAO,EAA+B,mBAAmB,EAAE,oBAAgB;
|
|
1
|
+
{"version":3,"file":"docs-search-tool.mjs","sourceRoot":"","sources":["src/docs-search-tool.ts"],"names":[],"mappings":"AAAA,sFAAsF;AAGtF,OAAO,EAA+B,mBAAmB,EAAE,oBAAgB;AAI3E,MAAM,CAAC,MAAM,QAAQ,GAAa;IAChC,QAAQ,EAAE,KAAK;IACf,SAAS,EAAE,MAAM;IACjB,IAAI,EAAE,EAAE;IACR,UAAU,EAAE,KAAK;CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAS;IACxB,IAAI,EAAE,aAAa;IACnB,WAAW,EACT,mLAAmL;IACrL,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,0BAA0B;aACxC;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,yCAAyC;gBACtD,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;aAClG;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iCAAiC;gBAC9C,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;aAC7B;SACF;QACD,QAAQ,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;KAChC;IACD,WAAW,EAAE;QACX,YAAY,EAAE,IAAI;KACnB;CACF,CAAC;AAEF,IAAI,YAAyC,CAAC;AAE9C,MAAM,UAAU,cAAc,CAAC,MAAuB;IACpD,YAAY,GAAG,MAAM,CAAC;AACxB,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,IAA6B;IACtD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,GAAI,IAAI,CAAC,OAAO,CAAY,IAAI,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAI,IAAI,CAAC,UAAU,CAAY,IAAI,YAAY,CAAC;IAC9D,MAAM,MAAM,GAAI,IAAI,CAAC,QAAQ,CAAY,IAAI,SAAS,CAAC;IAEvD,OAAO,YAAY,CAAC,MAAM,CAAC;QACzB,KAAK;QACL,QAAQ;QACR,MAAM;QACN,UAAU,EAAE,EAAE;KACf,CAAC,CAAC,OAAO,CAAC;AACb,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,EAAE,EAC5B,UAAU,EACV,IAAI,GAIL,EAAE,EAAE;IACH,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IAExB,OAAO,mBAAmB,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AACtD,CAAC,CAAC;AAEF,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC"}
|
package/instructions.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instructions.d.mts","sourceRoot":"","sources":["src/instructions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"instructions.d.mts","sourceRoot":"","sources":["src/instructions.ts"],"names":[],"mappings":"AAcA,wBAAsB,eAAe,CAAC,EACpC,eAAe,EACf,sBAAsB,GACvB,EAAE;IACD,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,sBAAsB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7C,GAAG,OAAO,CAAC,MAAM,CAAC,CA2BlB"}
|
package/instructions.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["src/instructions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["src/instructions.ts"],"names":[],"mappings":"AAcA,wBAAsB,eAAe,CAAC,EACpC,eAAe,EACf,sBAAsB,GACvB,EAAE;IACD,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,sBAAsB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7C,GAAG,OAAO,CAAC,MAAM,CAAC,CA2BlB"}
|
package/instructions.js
CHANGED
|
@@ -7,7 +7,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
7
7
|
exports.getInstructions = getInstructions;
|
|
8
8
|
const promises_1 = __importDefault(require("fs/promises"));
|
|
9
9
|
const logger_1 = require("./logger.js");
|
|
10
|
-
const util_1 = require("./util.js");
|
|
11
10
|
const INSTRUCTIONS_CACHE_TTL_MS = 15 * 60 * 1000; // 15 minutes
|
|
12
11
|
const instructionsCache = new Map();
|
|
13
12
|
async function getInstructions({ stainlessApiKey, customInstructionsPath, }) {
|
|
@@ -28,7 +27,8 @@ async function getInstructions({ stainlessApiKey, customInstructionsPath, }) {
|
|
|
28
27
|
fetchedInstructions = await fetchLatestInstructionsFromFile(customInstructionsPath);
|
|
29
28
|
}
|
|
30
29
|
else {
|
|
31
|
-
fetchedInstructions =
|
|
30
|
+
fetchedInstructions =
|
|
31
|
+
'\n This is the dodo payments MCP server.\n\n Available tools:\n - search_docs: Search SDK documentation to find the right methods and parameters.\n - execute: Run TypeScript code against a pre-authenticated SDK client. Define an async run(client) function.\n\n Workflow:\n - If unsure about the API, call search_docs first.\n - Write complete solutions in a single execute call when possible. For large datasets, use API filters to narrow results or paginate within a single execute block.\n - If execute returns an error, read the error and fix your code rather than retrying the same approach.\n - Variables do not persist between execute calls. Return or log all data you need.\n - Individual HTTP requests to the API have a 30-second timeout. If a request times out, try a smaller query or add filters.\n - Code execution has a total timeout of approximately 5 minutes. If your code times out, simplify it or break it into smaller steps.\n ';
|
|
32
32
|
}
|
|
33
33
|
instructionsCache.set(cacheKey, { fetchedInstructions, fetchedAt: now });
|
|
34
34
|
return fetchedInstructions;
|
|
@@ -42,20 +42,4 @@ async function fetchLatestInstructionsFromFile(path) {
|
|
|
42
42
|
throw error;
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
|
-
async function fetchLatestInstructionsFromApi(stainlessApiKey) {
|
|
46
|
-
// Setting the stainless API key is optional, but may be required
|
|
47
|
-
// to authenticate requests to the Stainless API.
|
|
48
|
-
const response = await fetch((0, util_1.readEnv)('CODE_MODE_INSTRUCTIONS_URL') ?? 'https://api.stainless.com/api/ai/instructions/dodo-payments', {
|
|
49
|
-
method: 'GET',
|
|
50
|
-
headers: { ...(stainlessApiKey && { Authorization: stainlessApiKey }) },
|
|
51
|
-
});
|
|
52
|
-
let instructions;
|
|
53
|
-
if (!response.ok) {
|
|
54
|
-
(0, logger_1.getLogger)().warn('Warning: failed to retrieve MCP server instructions. Proceeding with default instructions...');
|
|
55
|
-
instructions =
|
|
56
|
-
'\n This is the dodo-payments MCP server.\n\n Available tools:\n - search_docs: Search SDK documentation to find the right methods and parameters.\n - execute: Run TypeScript code against a pre-authenticated SDK client. Define an async run(client) function.\n\n Workflow:\n - If unsure about the API, call search_docs first.\n - Write complete solutions in a single execute call when possible. For large datasets, use API filters to narrow results or paginate within a single execute block.\n - If execute returns an error, read the error and fix your code rather than retrying the same approach.\n - Variables do not persist between execute calls. Return or log all data you need.\n - Individual HTTP requests to the API have a 30-second timeout. If a request times out, try a smaller query or add filters.\n - Code execution has a total timeout of approximately 5 minutes. If your code times out, simplify it or break it into smaller steps.\n ';
|
|
57
|
-
}
|
|
58
|
-
instructions ??= (await response.json()).instructions;
|
|
59
|
-
return instructions;
|
|
60
|
-
}
|
|
61
45
|
//# sourceMappingURL=instructions.js.map
|
package/instructions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instructions.js","sourceRoot":"","sources":["src/instructions.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;;;
|
|
1
|
+
{"version":3,"file":"instructions.js","sourceRoot":"","sources":["src/instructions.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;;;AActF,0CAiCC;AA7CD,2DAA6B;AAC7B,wCAAqC;AAErC,MAAM,yBAAyB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;AAO/D,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAkC,CAAC;AAE7D,KAAK,UAAU,eAAe,CAAC,EACpC,eAAe,EACf,sBAAsB,GAIvB;IACC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,QAAQ,GAAG,sBAAsB,IAAI,eAAe,IAAI,EAAE,CAAC;IACjE,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE/C,IAAI,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,SAAS,IAAI,yBAAyB,EAAE,CAAC;QAClE,OAAO,MAAM,CAAC,mBAAmB,CAAC;IACpC,CAAC;IAED,6DAA6D;IAC7D,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,iBAAiB,EAAE,CAAC;QAC7C,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,GAAG,yBAAyB,EAAE,CAAC;YACtD,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,IAAI,mBAA2B,CAAC;IAEhC,IAAI,sBAAsB,EAAE,CAAC;QAC3B,mBAAmB,GAAG,MAAM,+BAA+B,CAAC,sBAAsB,CAAC,CAAC;IACtF,CAAC;SAAM,CAAC;QACN,mBAAmB;YACjB,87BAA87B,CAAC;IACn8B,CAAC;IAED,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,mBAAmB,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IACzE,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,KAAK,UAAU,+BAA+B,CAAC,IAAY;IACzD,IAAI,CAAC;QACH,OAAO,MAAM,kBAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAA,kBAAS,GAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,uCAAuC,CAAC,CAAC;QAC5E,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
package/instructions.mjs
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
2
|
import fs from 'fs/promises';
|
|
3
3
|
import { getLogger } from "./logger.mjs";
|
|
4
|
-
import { readEnv } from "./util.mjs";
|
|
5
4
|
const INSTRUCTIONS_CACHE_TTL_MS = 15 * 60 * 1000; // 15 minutes
|
|
6
5
|
const instructionsCache = new Map();
|
|
7
6
|
export async function getInstructions({ stainlessApiKey, customInstructionsPath, }) {
|
|
@@ -22,7 +21,8 @@ export async function getInstructions({ stainlessApiKey, customInstructionsPath,
|
|
|
22
21
|
fetchedInstructions = await fetchLatestInstructionsFromFile(customInstructionsPath);
|
|
23
22
|
}
|
|
24
23
|
else {
|
|
25
|
-
fetchedInstructions =
|
|
24
|
+
fetchedInstructions =
|
|
25
|
+
'\n This is the dodo payments MCP server.\n\n Available tools:\n - search_docs: Search SDK documentation to find the right methods and parameters.\n - execute: Run TypeScript code against a pre-authenticated SDK client. Define an async run(client) function.\n\n Workflow:\n - If unsure about the API, call search_docs first.\n - Write complete solutions in a single execute call when possible. For large datasets, use API filters to narrow results or paginate within a single execute block.\n - If execute returns an error, read the error and fix your code rather than retrying the same approach.\n - Variables do not persist between execute calls. Return or log all data you need.\n - Individual HTTP requests to the API have a 30-second timeout. If a request times out, try a smaller query or add filters.\n - Code execution has a total timeout of approximately 5 minutes. If your code times out, simplify it or break it into smaller steps.\n ';
|
|
26
26
|
}
|
|
27
27
|
instructionsCache.set(cacheKey, { fetchedInstructions, fetchedAt: now });
|
|
28
28
|
return fetchedInstructions;
|
|
@@ -36,20 +36,4 @@ async function fetchLatestInstructionsFromFile(path) {
|
|
|
36
36
|
throw error;
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
-
async function fetchLatestInstructionsFromApi(stainlessApiKey) {
|
|
40
|
-
// Setting the stainless API key is optional, but may be required
|
|
41
|
-
// to authenticate requests to the Stainless API.
|
|
42
|
-
const response = await fetch(readEnv('CODE_MODE_INSTRUCTIONS_URL') ?? 'https://api.stainless.com/api/ai/instructions/dodo-payments', {
|
|
43
|
-
method: 'GET',
|
|
44
|
-
headers: { ...(stainlessApiKey && { Authorization: stainlessApiKey }) },
|
|
45
|
-
});
|
|
46
|
-
let instructions;
|
|
47
|
-
if (!response.ok) {
|
|
48
|
-
getLogger().warn('Warning: failed to retrieve MCP server instructions. Proceeding with default instructions...');
|
|
49
|
-
instructions =
|
|
50
|
-
'\n This is the dodo-payments MCP server.\n\n Available tools:\n - search_docs: Search SDK documentation to find the right methods and parameters.\n - execute: Run TypeScript code against a pre-authenticated SDK client. Define an async run(client) function.\n\n Workflow:\n - If unsure about the API, call search_docs first.\n - Write complete solutions in a single execute call when possible. For large datasets, use API filters to narrow results or paginate within a single execute block.\n - If execute returns an error, read the error and fix your code rather than retrying the same approach.\n - Variables do not persist between execute calls. Return or log all data you need.\n - Individual HTTP requests to the API have a 30-second timeout. If a request times out, try a smaller query or add filters.\n - Code execution has a total timeout of approximately 5 minutes. If your code times out, simplify it or break it into smaller steps.\n ';
|
|
51
|
-
}
|
|
52
|
-
instructions ??= (await response.json()).instructions;
|
|
53
|
-
return instructions;
|
|
54
|
-
}
|
|
55
39
|
//# sourceMappingURL=instructions.mjs.map
|
package/instructions.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instructions.mjs","sourceRoot":"","sources":["src/instructions.ts"],"names":[],"mappings":"AAAA,sFAAsF;AAEtF,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,qBAAiB;
|
|
1
|
+
{"version":3,"file":"instructions.mjs","sourceRoot":"","sources":["src/instructions.ts"],"names":[],"mappings":"AAAA,sFAAsF;AAEtF,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,qBAAiB;AAErC,MAAM,yBAAyB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;AAO/D,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAkC,CAAC;AAEpE,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,EACpC,eAAe,EACf,sBAAsB,GAIvB;IACC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,QAAQ,GAAG,sBAAsB,IAAI,eAAe,IAAI,EAAE,CAAC;IACjE,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE/C,IAAI,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,SAAS,IAAI,yBAAyB,EAAE,CAAC;QAClE,OAAO,MAAM,CAAC,mBAAmB,CAAC;IACpC,CAAC;IAED,6DAA6D;IAC7D,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,iBAAiB,EAAE,CAAC;QAC7C,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,GAAG,yBAAyB,EAAE,CAAC;YACtD,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,IAAI,mBAA2B,CAAC;IAEhC,IAAI,sBAAsB,EAAE,CAAC;QAC3B,mBAAmB,GAAG,MAAM,+BAA+B,CAAC,sBAAsB,CAAC,CAAC;IACtF,CAAC;SAAM,CAAC;QACN,mBAAmB;YACjB,87BAA87B,CAAC;IACn8B,CAAC;IAED,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,mBAAmB,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IACzE,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,KAAK,UAAU,+BAA+B,CAAC,IAAY;IACzD,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,SAAS,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,uCAAuC,CAAC,CAAC;QAC5E,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-docs-search.d.mts","sourceRoot":"","sources":["src/local-docs-search.ts"],"names":[],"mappings":"AA+CA,KAAK,YAAY,GAAG;IAClB,OAAO,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;CAC/C,CAAC;
|
|
1
|
+
{"version":3,"file":"local-docs-search.d.mts","sourceRoot":"","sources":["src/local-docs-search.ts"],"names":[],"mappings":"AA+CA,KAAK,YAAY,GAAG;IAClB,OAAO,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;CAC/C,CAAC;AAupQF;;;;GAIG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,UAAU,CAAiC;IAEnD,OAAO;WAKM,MAAM,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,eAAe,CAAC;IAY1E,MAAM,CAAC,KAAK,EAAE;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,YAAY;IA2EhB,OAAO,CAAC,YAAY;YAiBN,iBAAiB;IA4C/B,OAAO,CAAC,UAAU;CAgBnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-docs-search.d.ts","sourceRoot":"","sources":["src/local-docs-search.ts"],"names":[],"mappings":"AA+CA,KAAK,YAAY,GAAG;IAClB,OAAO,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;CAC/C,CAAC;
|
|
1
|
+
{"version":3,"file":"local-docs-search.d.ts","sourceRoot":"","sources":["src/local-docs-search.ts"],"names":[],"mappings":"AA+CA,KAAK,YAAY,GAAG;IAClB,OAAO,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;CAC/C,CAAC;AAupQF;;;;GAIG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,UAAU,CAAiC;IAEnD,OAAO;WAKM,MAAM,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,eAAe,CAAC;IAY1E,MAAM,CAAC,KAAK,EAAE;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,YAAY;IA2EhB,OAAO,CAAC,YAAY;YAiBN,iBAAiB;IA4C/B,OAAO,CAAC,UAAU;CAgBnB"}
|