@deeprelay/mcp 0.1.0 → 0.1.1
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
CHANGED
|
@@ -173,7 +173,13 @@ finishes, the reservation is dropped and the real charge appears in
|
|
|
173
173
|
**Money (4):** `deeprelay_chat_completion`, `deeprelay_embeddings_create`,
|
|
174
174
|
`deeprelay_images_generate`, `deeprelay_videos_create`.
|
|
175
175
|
|
|
176
|
-
`deeprelay_health`
|
|
176
|
+
`deeprelay_health` calls the unauthenticated liveness endpoint, so it answers
|
|
177
|
+
even when the key is wrong or revoked; the server itself still needs
|
|
178
|
+
`DEEPRELAY_API_KEY` set to start. `deeprelay_usage_get` reports serverless
|
|
179
|
+
inference usage: optional `modality` (`chat`, `image`, `video`, `embedding`),
|
|
180
|
+
`model`, `bucket`, `start` and `end`; with no `modality` or `model` it covers
|
|
181
|
+
all four modalities and returns `total_cost_cents` plus per-modality subtotals.
|
|
182
|
+
`deeprelay_videos_content` saves the MP4
|
|
177
183
|
to a local file (under the system temp directory by default, or an absolute
|
|
178
184
|
`output_path`) instead of returning it inline.
|
|
179
185
|
|
|
@@ -4,7 +4,8 @@ exports.readonlyTools = exports.videoReadTools = exports.VIDEO_TMP_DIR = exports
|
|
|
4
4
|
exports.renderSessionBudget = renderSessionBudget;
|
|
5
5
|
// The free read tier (Phase 104, D-03/D-04/D-05/D-10). Authored fresh (D-12).
|
|
6
6
|
//
|
|
7
|
-
// Every tool here is a
|
|
7
|
+
// Every tool here is a GET mapped to one @deeprelay/sdk method (D-05; the usage
|
|
8
|
+
// tool calls it once per modality when unfiltered, see usage.ts),
|
|
8
9
|
// built with defineTool (define.ts): no confirmation, no quote, no budget
|
|
9
10
|
// accounting, and every result goes through ok(), so credential fields are
|
|
10
11
|
// sanitized and key-shaped text is redacted before the agent sees it.
|
|
@@ -17,6 +18,7 @@ const auth_js_1 = require("../../auth.js");
|
|
|
17
18
|
const errors_js_1 = require("../../errors.js");
|
|
18
19
|
const budget_js_1 = require("../../guardrail/budget.js");
|
|
19
20
|
const define_js_1 = require("./define.js");
|
|
21
|
+
const usage_js_1 = require("./usage.js");
|
|
20
22
|
const video_reads_js_1 = require("./video-reads.js");
|
|
21
23
|
var define_js_2 = require("./define.js");
|
|
22
24
|
Object.defineProperty(exports, "defineTool", { enumerable: true, get: function () { return define_js_2.defineTool; } });
|
|
@@ -106,7 +108,7 @@ const coreReadTools = [
|
|
|
106
108
|
name: "deeprelay_health",
|
|
107
109
|
title: "Check deeprelay API liveness",
|
|
108
110
|
description: "Is the deeprelay API up? Call this when other calls fail with network errors, to tell an outage apart from " +
|
|
109
|
-
`a
|
|
111
|
+
`a key problem. It uses the unauthenticated liveness endpoint, so a wrong or revoked key does not affect it. ${FREE}`,
|
|
110
112
|
inputSchema: {},
|
|
111
113
|
context: "checking deeprelay API health",
|
|
112
114
|
keyless: true,
|
|
@@ -158,26 +160,18 @@ const coreReadTools = [
|
|
|
158
160
|
}),
|
|
159
161
|
(0, define_js_1.defineTool)({
|
|
160
162
|
name: "deeprelay_usage_get",
|
|
161
|
-
title: "Get deeprelay usage",
|
|
162
|
-
description: "How much has this account used and spent, over time? Returns time-bucketed
|
|
163
|
-
"
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
start
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
limit: zod_1.z.number().int().min(1).max(100).default(31).describe("Buckets per page (1-100)."),
|
|
171
|
-
},
|
|
163
|
+
title: "Get deeprelay inference usage",
|
|
164
|
+
description: "How much serverless inference has this account used and spent, over time? Returns time-bucketed inference " +
|
|
165
|
+
"usage (hour, day, week or month buckets; default day over the last 30 days), one row per bucket, modality " +
|
|
166
|
+
"and model, with cost in cents and token/image counts, plus `total_cost_cents` and per-modality subtotals " +
|
|
167
|
+
"(`by_modality`). Filter with `modality` (chat, image, video, embedding) and/or `model`; with neither it " +
|
|
168
|
+
"covers all four modalities. Pages are followed automatically; `truncated: true` means the window was too " +
|
|
169
|
+
"large, so narrow `start`/`end`. Use this to answer spend questions about past days; for this session's " +
|
|
170
|
+
`spend use deeprelay_auth_status. ${FREE}`,
|
|
171
|
+
inputSchema: usage_js_1.usageInputSchema,
|
|
172
172
|
context: "getting usage",
|
|
173
173
|
async call(args, config) {
|
|
174
|
-
return
|
|
175
|
-
bucket: args.bucket,
|
|
176
|
-
start: args.start === undefined ? undefined : new Date(args.start),
|
|
177
|
-
end: args.end === undefined ? undefined : new Date(args.end),
|
|
178
|
-
cursor: args.cursor,
|
|
179
|
-
limit: args.limit,
|
|
180
|
-
});
|
|
174
|
+
return (0, usage_js_1.getInferenceUsage)(args, config);
|
|
181
175
|
},
|
|
182
176
|
}),
|
|
183
177
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/readonly/index.ts"],"names":[],"mappings":";;;AAkDA,kDAiBC;AAnED,8EAA8E;AAC9E,EAAE;AACF,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/readonly/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type Configuration } from "@deeprelay/sdk";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
/** Rows per page requested from the API (its maximum). */
|
|
4
|
+
export declare const USAGE_PAGE_SIZE = 100;
|
|
5
|
+
/** Pages followed per query before the result is reported as truncated. */
|
|
6
|
+
export declare const USAGE_MAX_PAGES = 10;
|
|
7
|
+
/** Every modality, in the order the fan-out queries them. */
|
|
8
|
+
export declare const USAGE_MODALITIES: ("chat" | "image" | "video" | "embedding")[];
|
|
9
|
+
export declare const usageInputSchema: {
|
|
10
|
+
modality: z.ZodOptional<z.ZodEnum<{
|
|
11
|
+
readonly Chat: "chat";
|
|
12
|
+
readonly Image: "image";
|
|
13
|
+
readonly Video: "video";
|
|
14
|
+
readonly Embedding: "embedding";
|
|
15
|
+
}>>;
|
|
16
|
+
model: z.ZodOptional<z.ZodString>;
|
|
17
|
+
bucket: z.ZodDefault<z.ZodEnum<{
|
|
18
|
+
readonly Hour: "hour";
|
|
19
|
+
readonly Day: "day";
|
|
20
|
+
readonly Week: "week";
|
|
21
|
+
readonly Month: "month";
|
|
22
|
+
}>>;
|
|
23
|
+
start: z.ZodOptional<z.ZodISODateTime>;
|
|
24
|
+
end: z.ZodOptional<z.ZodISODateTime>;
|
|
25
|
+
};
|
|
26
|
+
type UsageArgs = z.infer<z.ZodObject<typeof usageInputSchema>>;
|
|
27
|
+
/** Read inference usage: one query when filtered, one per modality otherwise. */
|
|
28
|
+
export declare function getInferenceUsage(args: UsageArgs, config: Configuration): Promise<Record<string, unknown>>;
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.usageInputSchema = exports.USAGE_MODALITIES = exports.USAGE_MAX_PAGES = exports.USAGE_PAGE_SIZE = void 0;
|
|
4
|
+
exports.getInferenceUsage = getInferenceUsage;
|
|
5
|
+
// deeprelay_usage_get: serverless inference usage (Phase 104 follow-up).
|
|
6
|
+
//
|
|
7
|
+
// GET /v1/usage has two row shapes. With `modality` or `model` set it returns
|
|
8
|
+
// inference-usage rows (one per bucket × modality × model); with neither it
|
|
9
|
+
// returns GPU-instance usage, which deeprelay does not surface (no GPU supply
|
|
10
|
+
// on the platform), so an unfiltered call reads as "no usage" even for an
|
|
11
|
+
// account that spent money on inference. There is no single call for every
|
|
12
|
+
// modality, so with no filter this tool asks once per modality and merges.
|
|
13
|
+
//
|
|
14
|
+
// It never sends `group_by` (instance/GPU split) and drops `gpu_seconds`,
|
|
15
|
+
// which is always 0 on inference rows.
|
|
16
|
+
const sdk_1 = require("@deeprelay/sdk");
|
|
17
|
+
const zod_1 = require("zod");
|
|
18
|
+
/** Rows per page requested from the API (its maximum). */
|
|
19
|
+
exports.USAGE_PAGE_SIZE = 100;
|
|
20
|
+
/** Pages followed per query before the result is reported as truncated. */
|
|
21
|
+
exports.USAGE_MAX_PAGES = 10;
|
|
22
|
+
/** Every modality, in the order the fan-out queries them. */
|
|
23
|
+
exports.USAGE_MODALITIES = Object.values(sdk_1.ListUsageModalityEnum);
|
|
24
|
+
exports.usageInputSchema = {
|
|
25
|
+
modality: zod_1.z
|
|
26
|
+
.enum(sdk_1.ListUsageModalityEnum)
|
|
27
|
+
.optional()
|
|
28
|
+
.describe("Only this modality (chat, image, video or embedding). Omit for all four."),
|
|
29
|
+
model: zod_1.z.string().min(1).optional().describe("Only this model id, as returned by deeprelay_models_list."),
|
|
30
|
+
bucket: zod_1.z.enum(sdk_1.ListUsageBucketEnum).default("day").describe("Bucket width (hour, day, week or month)."),
|
|
31
|
+
start: zod_1.z.iso
|
|
32
|
+
.datetime({ offset: true })
|
|
33
|
+
.optional()
|
|
34
|
+
.describe("ISO-8601 start of the window (inclusive). Default: 30 days before end."),
|
|
35
|
+
end: zod_1.z.iso.datetime({ offset: true }).optional().describe("ISO-8601 end of the window (exclusive). Default: now."),
|
|
36
|
+
};
|
|
37
|
+
/** Sum cents without binary-float noise (costs can be fractional cents). */
|
|
38
|
+
function addCents(a, b) {
|
|
39
|
+
return Math.round((a + b) * 1e6) / 1e6;
|
|
40
|
+
}
|
|
41
|
+
function toRow(b, fallbackModality) {
|
|
42
|
+
const start = b.bucketStart instanceof Date ? b.bucketStart.toISOString() : String(b.bucketStart);
|
|
43
|
+
return {
|
|
44
|
+
bucket_start: start,
|
|
45
|
+
modality: b.modality ?? fallbackModality ?? null,
|
|
46
|
+
model: b.model ?? null,
|
|
47
|
+
cost_cents: b.costCents,
|
|
48
|
+
prompt_tokens: b.promptTokens ?? null,
|
|
49
|
+
completion_tokens: b.completionTokens ?? null,
|
|
50
|
+
image_count: b.imageCount ?? null,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/** One filtered query, following cursors up to USAGE_MAX_PAGES. */
|
|
54
|
+
async function fetchAll(api, args, filter) {
|
|
55
|
+
const rows = [];
|
|
56
|
+
let cursor;
|
|
57
|
+
for (let pageNo = 0; pageNo < exports.USAGE_MAX_PAGES; pageNo += 1) {
|
|
58
|
+
const page = await api.listUsage({
|
|
59
|
+
bucket: args.bucket,
|
|
60
|
+
start: args.start === undefined ? undefined : new Date(args.start),
|
|
61
|
+
end: args.end === undefined ? undefined : new Date(args.end),
|
|
62
|
+
cursor,
|
|
63
|
+
limit: exports.USAGE_PAGE_SIZE,
|
|
64
|
+
modality: filter.modality,
|
|
65
|
+
model: filter.model,
|
|
66
|
+
});
|
|
67
|
+
rows.push(...page.data.map((b) => toRow(b, filter.modality)));
|
|
68
|
+
if (page.nextCursor === null || page.nextCursor === undefined || page.nextCursor === "") {
|
|
69
|
+
return { rows, truncated: false };
|
|
70
|
+
}
|
|
71
|
+
cursor = page.nextCursor;
|
|
72
|
+
}
|
|
73
|
+
return { rows, truncated: true };
|
|
74
|
+
}
|
|
75
|
+
/** Read inference usage: one query when filtered, one per modality otherwise. */
|
|
76
|
+
async function getInferenceUsage(args, config) {
|
|
77
|
+
const api = new sdk_1.UsageApi(config);
|
|
78
|
+
const filtered = args.modality !== undefined || args.model !== undefined;
|
|
79
|
+
const queries = filtered
|
|
80
|
+
? [{ modality: args.modality, model: args.model }]
|
|
81
|
+
: exports.USAGE_MODALITIES.map((modality) => ({ modality }));
|
|
82
|
+
const results = await Promise.all(queries.map((q) => fetchAll(api, args, q)));
|
|
83
|
+
const rows = results.flatMap((r) => r.rows);
|
|
84
|
+
// Newest bucket first (the API's order), then by modality and model.
|
|
85
|
+
rows.sort((a, b) => b.bucket_start.localeCompare(a.bucket_start) ||
|
|
86
|
+
(a.modality ?? "").localeCompare(b.modality ?? "") ||
|
|
87
|
+
(a.model ?? "").localeCompare(b.model ?? ""));
|
|
88
|
+
const byModality = {};
|
|
89
|
+
// With no filter every modality was asked, so report the zeros too.
|
|
90
|
+
if (!filtered) {
|
|
91
|
+
for (const m of exports.USAGE_MODALITIES)
|
|
92
|
+
byModality[m] = { cost_cents: 0, rows: 0 };
|
|
93
|
+
}
|
|
94
|
+
let total = 0;
|
|
95
|
+
for (const row of rows) {
|
|
96
|
+
const key = row.modality ?? "unknown";
|
|
97
|
+
const sub = (byModality[key] ??= { cost_cents: 0, rows: 0 });
|
|
98
|
+
sub.cost_cents = addCents(sub.cost_cents, row.cost_cents);
|
|
99
|
+
sub.rows += 1;
|
|
100
|
+
total = addCents(total, row.cost_cents);
|
|
101
|
+
}
|
|
102
|
+
const truncatedQueries = queries.filter((_, i) => results[i].truncated);
|
|
103
|
+
const truncated = truncatedQueries.length > 0;
|
|
104
|
+
return {
|
|
105
|
+
usage_kind: "inference",
|
|
106
|
+
note: "Serverless inference usage (what this account is billed for), from GET /v1/usage filtered by modality/model. " +
|
|
107
|
+
(filtered
|
|
108
|
+
? "One filtered query."
|
|
109
|
+
: `No modality or model was given, so this merges one query per modality (${exports.USAGE_MODALITIES.join(", ")}).`) +
|
|
110
|
+
(truncated
|
|
111
|
+
? ` TRUNCATED: stopped after ${exports.USAGE_MAX_PAGES} pages of ${exports.USAGE_PAGE_SIZE} rows for ` +
|
|
112
|
+
truncatedQueries.map((q) => q.modality ?? q.model ?? "the query").join(", ") +
|
|
113
|
+
"; totals cover only the rows returned. Narrow start/end or use a wider bucket."
|
|
114
|
+
: ""),
|
|
115
|
+
filter: { modality: args.modality ?? null, model: args.model ?? null },
|
|
116
|
+
bucket: args.bucket,
|
|
117
|
+
start: args.start ?? null,
|
|
118
|
+
end: args.end ?? null,
|
|
119
|
+
total_cost_cents: total,
|
|
120
|
+
total_cost_dollars: `$${(total / 100).toFixed(2)}`,
|
|
121
|
+
by_modality: byModality,
|
|
122
|
+
truncated,
|
|
123
|
+
rows,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../../../src/tools/readonly/usage.ts"],"names":[],"mappings":";;;AAqGA,8CAyDC;AA9JD,yEAAyE;AACzE,EAAE;AACF,8EAA8E;AAC9E,4EAA4E;AAC5E,8EAA8E;AAC9E,0EAA0E;AAC1E,2EAA2E;AAC3E,2EAA2E;AAC3E,EAAE;AACF,0EAA0E;AAC1E,uCAAuC;AACvC,wCAMwB;AACxB,6BAAwB;AAExB,0DAA0D;AAC7C,QAAA,eAAe,GAAG,GAAG,CAAC;AACnC,2EAA2E;AAC9D,QAAA,eAAe,GAAG,EAAE,CAAC;AAElC,6DAA6D;AAChD,QAAA,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,2BAAqB,CAAC,CAAC;AAGxD,QAAA,gBAAgB,GAAG;IAC9B,QAAQ,EAAE,OAAC;SACR,IAAI,CAAC,2BAAqB,CAAC;SAC3B,QAAQ,EAAE;SACV,QAAQ,CAAC,0EAA0E,CAAC;IACvF,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;IACzG,MAAM,EAAE,OAAC,CAAC,IAAI,CAAC,yBAAmB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IACvG,KAAK,EAAE,OAAC,CAAC,GAAG;SACT,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;SAC1B,QAAQ,EAAE;SACV,QAAQ,CAAC,wEAAwE,CAAC;IACrF,GAAG,EAAE,OAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;CACnH,CAAC;AAcF,4EAA4E;AAC5E,SAAS,QAAQ,CAAC,CAAS,EAAE,CAAS;IACpC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AACzC,CAAC;AAED,SAAS,KAAK,CAAC,CAAc,EAAE,gBAAoC;IACjE,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAClG,OAAO;QACL,YAAY,EAAE,KAAK;QACnB,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,gBAAgB,IAAI,IAAI;QAChD,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI;QACtB,UAAU,EAAE,CAAC,CAAC,SAAS;QACvB,aAAa,EAAE,CAAC,CAAC,YAAY,IAAI,IAAI;QACrC,iBAAiB,EAAE,CAAC,CAAC,gBAAgB,IAAI,IAAI;QAC7C,WAAW,EAAE,CAAC,CAAC,UAAU,IAAI,IAAI;KAClC,CAAC;AACJ,CAAC;AAED,mEAAmE;AACnE,KAAK,UAAU,QAAQ,CACrB,GAAa,EACb,IAAe,EACf,MAA+C;IAE/C,MAAM,IAAI,GAAe,EAAE,CAAC;IAC5B,IAAI,MAA0B,CAAC;IAC/B,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,uBAAe,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC;YAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YAClE,GAAG,EAAE,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YAC5D,MAAM;YACN,KAAK,EAAE,uBAAe;YACtB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC9D,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,KAAK,EAAE,EAAE,CAAC;YACxF,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACpC,CAAC;QACD,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AACnC,CAAC;AAED,iFAAiF;AAC1E,KAAK,UAAU,iBAAiB,CAAC,IAAe,EAAE,MAAqB;IAC5E,MAAM,GAAG,GAAG,IAAI,cAAQ,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC;IACzE,MAAM,OAAO,GAA8C,QAAQ;QACjE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAClD,CAAC,CAAC,wBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IAEvD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9E,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5C,qEAAqE;IACrE,IAAI,CAAC,IAAI,CACP,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC;QAC5C,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;QAClD,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAC/C,CAAC;IAEF,MAAM,UAAU,GAAyD,EAAE,CAAC;IAC5E,oEAAoE;IACpE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,KAAK,MAAM,CAAC,IAAI,wBAAgB;YAAE,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAC/E,CAAC;IACD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,IAAI,SAAS,CAAC;QACtC,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7D,GAAG,CAAC,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;QAC1D,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC;QACd,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACxE,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;IAE9C,OAAO;QACL,UAAU,EAAE,WAAW;QACvB,IAAI,EACF,+GAA+G;YAC/G,CAAC,QAAQ;gBACP,CAAC,CAAC,qBAAqB;gBACvB,CAAC,CAAC,0EAA0E,wBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9G,CAAC,SAAS;gBACR,CAAC,CAAC,6BAA6B,uBAAe,aAAa,uBAAe,YAAY;oBACpF,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC5E,gFAAgF;gBAClF,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;QACtE,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI;QACzB,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI;QACrB,gBAAgB,EAAE,KAAK;QACvB,kBAAkB,EAAE,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QAClD,WAAW,EAAE,UAAU;QACvB,SAAS;QACT,IAAI;KACL,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deeprelay/mcp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "MCP server for the deeprelay serverless inference API",
|
|
5
5
|
"author": "deeprelay",
|
|
6
6
|
"homepage": "https://deeprelay.ai/docs",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"smoke:inspector": "bash scripts/inspector-smoke.sh"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@deeprelay/sdk": "0.2.
|
|
32
|
+
"@deeprelay/sdk": "0.2.1",
|
|
33
33
|
"@modelcontextprotocol/sdk": "1.30.0",
|
|
34
34
|
"zod": "4.4.3"
|
|
35
35
|
},
|