@sealmetrics/mcp 0.1.0 → 1.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 +173 -0
- package/dist/client.d.ts +68 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +225 -0
- package/dist/client.js.map +1 -0
- package/dist/embedded.d.ts +29 -0
- package/dist/embedded.d.ts.map +1 -0
- package/dist/embedded.js +37 -0
- package/dist/embedded.js.map +1 -0
- package/dist/errors.d.ts +10 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +55 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +1 -6
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3809 -780
- package/dist/index.js.map +1 -0
- package/dist/resources/tracking-guide.d.ts +13 -0
- package/dist/resources/tracking-guide.d.ts.map +1 -0
- package/dist/resources/tracking-guide.js +479 -0
- package/dist/resources/tracking-guide.js.map +1 -0
- package/dist/sealmetrics.mcpb +0 -0
- package/dist/server.d.ts +38 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +132 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/alerts.d.ts +5 -0
- package/dist/tools/alerts.d.ts.map +1 -0
- package/dist/tools/alerts.js +80 -0
- package/dist/tools/alerts.js.map +1 -0
- package/dist/tools/audience.d.ts +7 -0
- package/dist/tools/audience.d.ts.map +1 -0
- package/dist/tools/audience.js +146 -0
- package/dist/tools/audience.js.map +1 -0
- package/dist/tools/bots.d.ts +4 -0
- package/dist/tools/bots.d.ts.map +1 -0
- package/dist/tools/bots.js +52 -0
- package/dist/tools/bots.js.map +1 -0
- package/dist/tools/channels.d.ts +5 -0
- package/dist/tools/channels.d.ts.map +1 -0
- package/dist/tools/channels.js +88 -0
- package/dist/tools/channels.js.map +1 -0
- package/dist/tools/content.d.ts +3 -0
- package/dist/tools/content.d.ts.map +1 -0
- package/dist/tools/content.js +47 -0
- package/dist/tools/content.js.map +1 -0
- package/dist/tools/conversions.d.ts +9 -0
- package/dist/tools/conversions.d.ts.map +1 -0
- package/dist/tools/conversions.js +427 -0
- package/dist/tools/conversions.js.map +1 -0
- package/dist/tools/funnel.d.ts +3 -0
- package/dist/tools/funnel.d.ts.map +1 -0
- package/dist/tools/funnel.js +27 -0
- package/dist/tools/funnel.js.map +1 -0
- package/dist/tools/index.d.ts +16 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +83 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/overview.d.ts +3 -0
- package/dist/tools/overview.d.ts.map +1 -0
- package/dist/tools/overview.js +26 -0
- package/dist/tools/overview.js.map +1 -0
- package/dist/tools/pages.d.ts +7 -0
- package/dist/tools/pages.d.ts.map +1 -0
- package/dist/tools/pages.js +307 -0
- package/dist/tools/pages.js.map +1 -0
- package/dist/tools/properties.d.ts +5 -0
- package/dist/tools/properties.d.ts.map +1 -0
- package/dist/tools/properties.js +107 -0
- package/dist/tools/properties.js.map +1 -0
- package/dist/tools/segments.d.ts +4 -0
- package/dist/tools/segments.d.ts.map +1 -0
- package/dist/tools/segments.js +49 -0
- package/dist/tools/segments.js.map +1 -0
- package/dist/tools/setup.d.ts +49 -0
- package/dist/tools/setup.d.ts.map +1 -0
- package/dist/tools/setup.js +347 -0
- package/dist/tools/setup.js.map +1 -0
- package/dist/tools/shared.d.ts +33 -0
- package/dist/tools/shared.d.ts.map +1 -0
- package/dist/tools/shared.js +40 -0
- package/dist/tools/shared.js.map +1 -0
- package/dist/tools/sites.d.ts +4 -0
- package/dist/tools/sites.d.ts.map +1 -0
- package/dist/tools/sites.js +36 -0
- package/dist/tools/sites.js.map +1 -0
- package/dist/tools/tracking.d.ts +3 -0
- package/dist/tools/tracking.d.ts.map +1 -0
- package/dist/tools/tracking.js +220 -0
- package/dist/tools/tracking.js.map +1 -0
- package/dist/tools/traffic.d.ts +10 -0
- package/dist/tools/traffic.d.ts.map +1 -0
- package/dist/tools/traffic.js +273 -0
- package/dist/tools/traffic.js.map +1 -0
- package/dist/tools/webhooks.d.ts +5 -0
- package/dist/tools/webhooks.d.ts.map +1 -0
- package/dist/tools/webhooks.js +101 -0
- package/dist/tools/webhooks.js.map +1 -0
- package/dist/types.d.ts +118 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +22 -0
- package/dist/types.js.map +1 -0
- package/package.json +44 -27
package/dist/server.js
ADDED
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server factory (Fase 3 Bloque 2). Builds the McpServer, registers the ~47
|
|
3
|
+
* read-only data tools (with `readOnlyHint` and retained handles, RF-3206) and the
|
|
4
|
+
* write-path setup tools, and wires the relaxed startup gate (RF-3202) + dynamic
|
|
5
|
+
* read-only enablement after provisioning (RF-3202b).
|
|
6
|
+
*
|
|
7
|
+
* Extracted from index.ts so it can be unit-tested without a stdio transport:
|
|
8
|
+
* tests inspect `readOnlyHandles[].enabled` and invoke `setupTools[].handler`.
|
|
9
|
+
*/
|
|
10
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
11
|
+
import { z } from "zod";
|
|
12
|
+
import { SealMetricsClient } from "./client.js";
|
|
13
|
+
import { ALL_TOOLS } from "./tools/index.js";
|
|
14
|
+
import { createSetupTools } from "./tools/setup.js";
|
|
15
|
+
import { INSTALL_SOURCE } from "./embedded.js";
|
|
16
|
+
import { TRACKING_GUIDE_URI, TRACKING_GUIDE_NAME, TRACKING_GUIDE_DESCRIPTION, TRACKING_GUIDE_CONTENT, } from "./resources/tracking-guide.js";
|
|
17
|
+
const MAX_RESPONSE_LENGTH = 100_000;
|
|
18
|
+
function jsonSchemaToZod(prop) {
|
|
19
|
+
const type = prop.type;
|
|
20
|
+
const enumValues = prop.enum;
|
|
21
|
+
const description = prop.description;
|
|
22
|
+
let schema;
|
|
23
|
+
if (enumValues && enumValues.length > 0) {
|
|
24
|
+
schema = z.enum(enumValues);
|
|
25
|
+
}
|
|
26
|
+
else if (type === "number" || type === "integer") {
|
|
27
|
+
schema = z.number();
|
|
28
|
+
}
|
|
29
|
+
else if (type === "boolean") {
|
|
30
|
+
schema = z.boolean();
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
schema = z.string();
|
|
34
|
+
}
|
|
35
|
+
if (description)
|
|
36
|
+
schema = schema.describe(description);
|
|
37
|
+
return schema;
|
|
38
|
+
}
|
|
39
|
+
function buildShape(properties) {
|
|
40
|
+
const shape = {};
|
|
41
|
+
for (const [key, prop] of Object.entries(properties)) {
|
|
42
|
+
shape[key] = jsonSchemaToZod(prop).optional();
|
|
43
|
+
}
|
|
44
|
+
return shape;
|
|
45
|
+
}
|
|
46
|
+
function safeStringify(value) {
|
|
47
|
+
try {
|
|
48
|
+
const json = JSON.stringify(value, null, 2);
|
|
49
|
+
if (json.length > MAX_RESPONSE_LENGTH) {
|
|
50
|
+
return json.slice(0, MAX_RESPONSE_LENGTH) + "\n... (truncated)";
|
|
51
|
+
}
|
|
52
|
+
return json;
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return '{"error": "Response could not be serialized"}';
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function toToolResult(result) {
|
|
59
|
+
return { content: [{ type: "text", text: safeStringify(result) }] };
|
|
60
|
+
}
|
|
61
|
+
function toErrorResult(error) {
|
|
62
|
+
const message = error instanceof Error ? error.message : "Unknown error occurred";
|
|
63
|
+
return { content: [{ type: "text", text: `Error: ${message}` }], isError: true };
|
|
64
|
+
}
|
|
65
|
+
export function buildServer(opts) {
|
|
66
|
+
const client = new SealMetricsClient(opts.apiKey, opts.baseUrl);
|
|
67
|
+
const server = new McpServer({ name: "sealmetrics", version: opts.version });
|
|
68
|
+
// Read-only data tools (~47): registerTool → readOnlyHint + retained handle.
|
|
69
|
+
// Without an api_key they are registered but DISABLED (hidden from tools/list);
|
|
70
|
+
// provision_site enables them in-session (RF-3202b).
|
|
71
|
+
const readOnlyHandles = ALL_TOOLS.map((tool) => {
|
|
72
|
+
const handle = server.registerTool(tool.name, {
|
|
73
|
+
description: tool.description,
|
|
74
|
+
inputSchema: buildShape(tool.inputSchema.properties),
|
|
75
|
+
annotations: { title: tool.name, readOnlyHint: true },
|
|
76
|
+
}, async (args) => {
|
|
77
|
+
try {
|
|
78
|
+
return toToolResult(await tool.handler(client, args));
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
return toErrorResult(error);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
if (!client.hasApiKey())
|
|
85
|
+
handle.disable();
|
|
86
|
+
return handle;
|
|
87
|
+
});
|
|
88
|
+
const enableReadOnlyTools = () => {
|
|
89
|
+
for (const handle of readOnlyHandles) {
|
|
90
|
+
if (!handle.enabled)
|
|
91
|
+
handle.enable(); // fires notifications/tools/list_changed
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
// Write-path setup tools.
|
|
95
|
+
const setupState = { provisioned: false, pixelVerified: false };
|
|
96
|
+
const setupContext = {
|
|
97
|
+
client,
|
|
98
|
+
baseUrl: opts.baseUrl,
|
|
99
|
+
provisionKey: opts.provisionKey,
|
|
100
|
+
installSource: opts.installSource ?? INSTALL_SOURCE,
|
|
101
|
+
cwd: opts.cwd,
|
|
102
|
+
state: setupState,
|
|
103
|
+
onProvisioned: (apiKey, _accountId) => {
|
|
104
|
+
client.setApiKey(apiKey); // in memory only (VAL-3201)
|
|
105
|
+
enableReadOnlyTools(); // RF-3202b (accountId already set on ctx.state by the handler)
|
|
106
|
+
},
|
|
107
|
+
pollDefaults: opts.pollDefaults,
|
|
108
|
+
now: opts.now,
|
|
109
|
+
sleep: opts.sleep,
|
|
110
|
+
};
|
|
111
|
+
const setupTools = createSetupTools(setupContext);
|
|
112
|
+
for (const tool of setupTools) {
|
|
113
|
+
server.registerTool(tool.name, {
|
|
114
|
+
description: tool.description,
|
|
115
|
+
inputSchema: buildShape(tool.inputSchema.properties),
|
|
116
|
+
annotations: tool.annotations,
|
|
117
|
+
}, async (args) => {
|
|
118
|
+
try {
|
|
119
|
+
return toToolResult(await tool.handler(args));
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
return toErrorResult(error);
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
// Resources
|
|
127
|
+
server.resource(TRACKING_GUIDE_NAME, TRACKING_GUIDE_URI, { description: TRACKING_GUIDE_DESCRIPTION, mimeType: "text/markdown" }, async () => ({
|
|
128
|
+
contents: [{ uri: TRACKING_GUIDE_URI, mimeType: "text/markdown", text: TRACKING_GUIDE_CONTENT }],
|
|
129
|
+
}));
|
|
130
|
+
return { server, client, readOnlyHandles, setupTools, setupContext, enableReadOnlyTools };
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alerts.d.ts","sourceRoot":"","sources":["../../src/tools/alerts.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,eAAO,MAAM,cAAc,EAAE,OAuB5B,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,OAqCjC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,OAkB/B,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { LIMIT_SCHEMA, resolveSiteId } from "./shared.js";
|
|
2
|
+
export const listAlertsTool = {
|
|
3
|
+
name: "list_alerts",
|
|
4
|
+
description: "List alert rules configured for a site. Shows rule name, metric, condition, threshold, and status (active/paused). Alerts monitor metrics and trigger notifications when thresholds are crossed.",
|
|
5
|
+
inputSchema: {
|
|
6
|
+
type: "object",
|
|
7
|
+
properties: {
|
|
8
|
+
site_id: {
|
|
9
|
+
type: "string",
|
|
10
|
+
description: "Site ID (account_id). Optional if SEALMETRICS_SITE_ID env var is set.",
|
|
11
|
+
},
|
|
12
|
+
include_inactive: {
|
|
13
|
+
type: "boolean",
|
|
14
|
+
description: "Include inactive/paused alert rules (default: false).",
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
handler: async (client, args) => {
|
|
19
|
+
return client.requestDirect("/alerts/rules", {
|
|
20
|
+
account_id: resolveSiteId(args),
|
|
21
|
+
include_inactive: args.include_inactive != null ? String(args.include_inactive) : undefined,
|
|
22
|
+
});
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
export const getAlertHistoryTool = {
|
|
26
|
+
name: "get_alert_history",
|
|
27
|
+
description: "Get history of triggered alerts: when they fired, current status (active/resolved/acknowledged), and which rule triggered them. Useful for reviewing past incidents.",
|
|
28
|
+
inputSchema: {
|
|
29
|
+
type: "object",
|
|
30
|
+
properties: {
|
|
31
|
+
site_id: {
|
|
32
|
+
type: "string",
|
|
33
|
+
description: "Site ID (account_id). Optional if SEALMETRICS_SITE_ID env var is set.",
|
|
34
|
+
},
|
|
35
|
+
rule_id: {
|
|
36
|
+
type: "number",
|
|
37
|
+
description: "Filter by specific alert rule ID.",
|
|
38
|
+
},
|
|
39
|
+
status: {
|
|
40
|
+
type: "string",
|
|
41
|
+
description: "Filter by alert status.",
|
|
42
|
+
enum: ["active", "resolved", "acknowledged"],
|
|
43
|
+
},
|
|
44
|
+
limit: LIMIT_SCHEMA,
|
|
45
|
+
offset: {
|
|
46
|
+
type: "number",
|
|
47
|
+
description: "Offset for pagination (default: 0).",
|
|
48
|
+
default: 0,
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
handler: async (client, args) => {
|
|
53
|
+
return client.requestDirect("/alerts/history", {
|
|
54
|
+
account_id: resolveSiteId(args),
|
|
55
|
+
rule_id: args.rule_id != null ? String(args.rule_id) : undefined,
|
|
56
|
+
status: args.status,
|
|
57
|
+
limit: String(args.limit ?? 50),
|
|
58
|
+
offset: args.offset != null ? String(args.offset) : undefined,
|
|
59
|
+
});
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
export const getAlertStatsTool = {
|
|
63
|
+
name: "get_alert_stats",
|
|
64
|
+
description: "Get alert statistics for a site: total rules, active alerts, resolved count, and acknowledgement rate. Provides a quick health overview of the alerting system.",
|
|
65
|
+
inputSchema: {
|
|
66
|
+
type: "object",
|
|
67
|
+
properties: {
|
|
68
|
+
site_id: {
|
|
69
|
+
type: "string",
|
|
70
|
+
description: "Site ID (account_id). Optional if SEALMETRICS_SITE_ID env var is set.",
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
handler: async (client, args) => {
|
|
75
|
+
return client.requestDirect("/alerts/stats", {
|
|
76
|
+
account_id: resolveSiteId(args),
|
|
77
|
+
});
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=alerts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alerts.js","sourceRoot":"","sources":["../../src/tools/alerts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG1D,MAAM,CAAC,MAAM,cAAc,GAAY;IACrC,IAAI,EAAE,aAAa;IACnB,WAAW,EACT,kMAAkM;IACpM,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,uEAAuE;aACrF;YACD,gBAAgB,EAAE;gBAChB,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,uDAAuD;aACrE;SACF;KACF;IACD,OAAO,EAAE,KAAK,EAAE,MAAyB,EAAE,IAA6B,EAAE,EAAE;QAC1E,OAAO,MAAM,CAAC,aAAa,CAAU,eAAe,EAAE;YACpD,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC;YAC/B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS;SAC5F,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAY;IAC1C,IAAI,EAAE,mBAAmB;IACzB,WAAW,EACT,sKAAsK;IACxK,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,uEAAuE;aACrF;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,mCAAmC;aACjD;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,yBAAyB;gBACtC,IAAI,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,cAAc,CAAC;aAC7C;YACD,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,qCAAqC;gBAClD,OAAO,EAAE,CAAC;aACX;SACF;KACF;IACD,OAAO,EAAE,KAAK,EAAE,MAAyB,EAAE,IAA6B,EAAE,EAAE;QAC1E,OAAO,MAAM,CAAC,aAAa,CAAU,iBAAiB,EAAE;YACtD,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC;YAC/B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;YAChE,MAAM,EAAE,IAAI,CAAC,MAA4B;YACzC,KAAK,EAAE,MAAM,CAAE,IAAI,CAAC,KAAgB,IAAI,EAAE,CAAC;YAC3C,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAgB,CAAC,CAAC,CAAC,CAAC,SAAS;SACxE,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAY;IACxC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EACT,iKAAiK;IACnK,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,uEAAuE;aACrF;SACF;KACF;IACD,OAAO,EAAE,KAAK,EAAE,MAAyB,EAAE,IAA6B,EAAE,EAAE;QAC1E,OAAO,MAAM,CAAC,aAAa,CAAU,eAAe,EAAE;YACpD,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC;SAChC,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ToolDef } from "./index.js";
|
|
2
|
+
export declare const getCountriesTool: ToolDef;
|
|
3
|
+
export declare const getDevicesTool: ToolDef;
|
|
4
|
+
export declare const getBrowsersTool: ToolDef;
|
|
5
|
+
export declare const getOperatingSystemsTool: ToolDef;
|
|
6
|
+
export declare const getDeviceTypesTool: ToolDef;
|
|
7
|
+
//# sourceMappingURL=audience.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audience.d.ts","sourceRoot":"","sources":["../../src/tools/audience.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,eAAO,MAAM,gBAAgB,EAAE,OAmC9B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,OAsB5B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,OA6B7B,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,OA6BrC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,OA6BhC,CAAC"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { PERIOD_SCHEMA, COMPARE_SCHEMA, LIMIT_SCHEMA, SORT_ORDER_SCHEMA, PAGE_SCHEMA, resolveSiteId, } from "./shared.js";
|
|
2
|
+
export const getCountriesTool = {
|
|
3
|
+
name: "get_countries",
|
|
4
|
+
description: "Get traffic broken down by country. Shows entrances, pageviews, conversions, and revenue per country. Country codes follow ISO 3166-1 alpha-2 (e.g. ES=Spain, US=United States).",
|
|
5
|
+
inputSchema: {
|
|
6
|
+
type: "object",
|
|
7
|
+
properties: {
|
|
8
|
+
site_id: {
|
|
9
|
+
type: "string",
|
|
10
|
+
description: "Site ID. Optional if SEALMETRICS_SITE_ID env var is set.",
|
|
11
|
+
},
|
|
12
|
+
period: PERIOD_SCHEMA,
|
|
13
|
+
compare: COMPARE_SCHEMA,
|
|
14
|
+
limit: LIMIT_SCHEMA,
|
|
15
|
+
sort_by: {
|
|
16
|
+
type: "string",
|
|
17
|
+
description: "Field to sort by.",
|
|
18
|
+
enum: ["entrances", "engaged_entrances", "page_views", "conversions", "revenue", "bounce_rate"],
|
|
19
|
+
default: "entrances",
|
|
20
|
+
},
|
|
21
|
+
sort_order: SORT_ORDER_SCHEMA,
|
|
22
|
+
page: PAGE_SCHEMA,
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
handler: async (client, args) => {
|
|
26
|
+
return client.requestPaginated("/stats/geo/countries", {
|
|
27
|
+
site_id: resolveSiteId(args),
|
|
28
|
+
period: args.period ?? "30d",
|
|
29
|
+
compare: args.compare,
|
|
30
|
+
page_size: String(args.limit ?? 20),
|
|
31
|
+
page: args.page != null ? String(args.page) : undefined,
|
|
32
|
+
sort_by: args.sort_by ?? "entrances",
|
|
33
|
+
sort_order: args.sort_order ?? "desc",
|
|
34
|
+
});
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
export const getDevicesTool = {
|
|
38
|
+
name: "get_devices",
|
|
39
|
+
description: "Get traffic broken down by device type (desktop/mobile/tablet), browser (Chrome, Safari, Firefox...), and operating system (Windows, macOS, iOS, Android...). Returns all three breakdowns in a single call.",
|
|
40
|
+
inputSchema: {
|
|
41
|
+
type: "object",
|
|
42
|
+
properties: {
|
|
43
|
+
site_id: {
|
|
44
|
+
type: "string",
|
|
45
|
+
description: "Site ID. Optional if SEALMETRICS_SITE_ID env var is set.",
|
|
46
|
+
},
|
|
47
|
+
period: PERIOD_SCHEMA,
|
|
48
|
+
compare: COMPARE_SCHEMA,
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
handler: async (client, args) => {
|
|
52
|
+
return client.request("/stats/devices", {
|
|
53
|
+
site_id: resolveSiteId(args),
|
|
54
|
+
period: args.period ?? "30d",
|
|
55
|
+
compare: args.compare,
|
|
56
|
+
});
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
export const getBrowsersTool = {
|
|
60
|
+
name: "get_browsers",
|
|
61
|
+
description: "Get traffic broken down by browser: Chrome, Safari, Firefox, Edge, etc. Shows entrances and pageviews per browser with pagination.",
|
|
62
|
+
inputSchema: {
|
|
63
|
+
type: "object",
|
|
64
|
+
properties: {
|
|
65
|
+
site_id: {
|
|
66
|
+
type: "string",
|
|
67
|
+
description: "Site ID. Optional if SEALMETRICS_SITE_ID env var is set.",
|
|
68
|
+
},
|
|
69
|
+
period: PERIOD_SCHEMA,
|
|
70
|
+
limit: LIMIT_SCHEMA,
|
|
71
|
+
page: PAGE_SCHEMA,
|
|
72
|
+
country: {
|
|
73
|
+
type: "string",
|
|
74
|
+
description: "Filter by country code (e.g. 'ES', 'US').",
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
handler: async (client, args) => {
|
|
79
|
+
return client.requestPaginated("/stats/browsers", {
|
|
80
|
+
site_id: resolveSiteId(args),
|
|
81
|
+
period: args.period ?? "30d",
|
|
82
|
+
page_size: String(args.limit ?? 20),
|
|
83
|
+
page: args.page != null ? String(args.page) : undefined,
|
|
84
|
+
country: args.country,
|
|
85
|
+
});
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
export const getOperatingSystemsTool = {
|
|
89
|
+
name: "get_operating_systems",
|
|
90
|
+
description: "Get traffic broken down by operating system: Windows, macOS, iOS, Android, Linux, etc. Shows entrances and pageviews per OS with pagination.",
|
|
91
|
+
inputSchema: {
|
|
92
|
+
type: "object",
|
|
93
|
+
properties: {
|
|
94
|
+
site_id: {
|
|
95
|
+
type: "string",
|
|
96
|
+
description: "Site ID. Optional if SEALMETRICS_SITE_ID env var is set.",
|
|
97
|
+
},
|
|
98
|
+
period: PERIOD_SCHEMA,
|
|
99
|
+
limit: LIMIT_SCHEMA,
|
|
100
|
+
page: PAGE_SCHEMA,
|
|
101
|
+
country: {
|
|
102
|
+
type: "string",
|
|
103
|
+
description: "Filter by country code (e.g. 'ES', 'US').",
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
handler: async (client, args) => {
|
|
108
|
+
return client.requestPaginated("/stats/operating-systems", {
|
|
109
|
+
site_id: resolveSiteId(args),
|
|
110
|
+
period: args.period ?? "30d",
|
|
111
|
+
page_size: String(args.limit ?? 20),
|
|
112
|
+
page: args.page != null ? String(args.page) : undefined,
|
|
113
|
+
country: args.country,
|
|
114
|
+
});
|
|
115
|
+
},
|
|
116
|
+
};
|
|
117
|
+
export const getDeviceTypesTool = {
|
|
118
|
+
name: "get_device_types",
|
|
119
|
+
description: "Get traffic broken down by device type (desktop, mobile, tablet) with pagination. Shows entrances, pageviews, conversions per device type.",
|
|
120
|
+
inputSchema: {
|
|
121
|
+
type: "object",
|
|
122
|
+
properties: {
|
|
123
|
+
site_id: {
|
|
124
|
+
type: "string",
|
|
125
|
+
description: "Site ID. Optional if SEALMETRICS_SITE_ID env var is set.",
|
|
126
|
+
},
|
|
127
|
+
period: PERIOD_SCHEMA,
|
|
128
|
+
limit: LIMIT_SCHEMA,
|
|
129
|
+
page: PAGE_SCHEMA,
|
|
130
|
+
country: {
|
|
131
|
+
type: "string",
|
|
132
|
+
description: "Filter by country code (e.g. 'ES', 'US').",
|
|
133
|
+
},
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
handler: async (client, args) => {
|
|
137
|
+
return client.requestPaginated("/stats/devices/types", {
|
|
138
|
+
site_id: resolveSiteId(args),
|
|
139
|
+
period: args.period ?? "30d",
|
|
140
|
+
page_size: String(args.limit ?? 10),
|
|
141
|
+
page: args.page != null ? String(args.page) : undefined,
|
|
142
|
+
country: args.country,
|
|
143
|
+
});
|
|
144
|
+
},
|
|
145
|
+
};
|
|
146
|
+
//# sourceMappingURL=audience.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audience.js","sourceRoot":"","sources":["../../src/tools/audience.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bots.d.ts","sourceRoot":"","sources":["../../src/tools/bots.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,eAAO,MAAM,eAAe,EAAE,OAwB7B,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,OA0BvC,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { LIMIT_SCHEMA, resolveSiteId } from "./shared.js";
|
|
2
|
+
export const getBotStatsTool = {
|
|
3
|
+
name: "get_bot_stats",
|
|
4
|
+
description: "Get bot detection overview: score distribution, top suspicion flags, and daily trend of human vs suspected-bot traffic. Requires agent analytics to be enabled on the site.",
|
|
5
|
+
inputSchema: {
|
|
6
|
+
type: "object",
|
|
7
|
+
properties: {
|
|
8
|
+
site_id: {
|
|
9
|
+
type: "string",
|
|
10
|
+
description: "Site ID (account_id). Optional if SEALMETRICS_SITE_ID env var is set.",
|
|
11
|
+
},
|
|
12
|
+
days: {
|
|
13
|
+
type: "number",
|
|
14
|
+
description: "Number of days to analyze (1-90, default: 30).",
|
|
15
|
+
default: 30,
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
handler: async (client, args) => {
|
|
20
|
+
return client.request("/bot-stats/overview", {
|
|
21
|
+
account_id: resolveSiteId(args),
|
|
22
|
+
days: String(args.days ?? 30),
|
|
23
|
+
});
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
export const getSuspiciousSessionsTool = {
|
|
27
|
+
name: "get_suspicious_sessions",
|
|
28
|
+
description: "Get sessions with high bot-suspicion scores for investigation. Shows session details, score, and detected flags. Useful for identifying automated traffic patterns.",
|
|
29
|
+
inputSchema: {
|
|
30
|
+
type: "object",
|
|
31
|
+
properties: {
|
|
32
|
+
site_id: {
|
|
33
|
+
type: "string",
|
|
34
|
+
description: "Site ID (account_id). Optional if SEALMETRICS_SITE_ID env var is set.",
|
|
35
|
+
},
|
|
36
|
+
min_score: {
|
|
37
|
+
type: "number",
|
|
38
|
+
description: "Minimum suspicion score threshold (1-100, default: 50).",
|
|
39
|
+
default: 50,
|
|
40
|
+
},
|
|
41
|
+
limit: LIMIT_SCHEMA,
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
handler: async (client, args) => {
|
|
45
|
+
return client.request("/bot-stats/suspicious-sessions", {
|
|
46
|
+
account_id: resolveSiteId(args),
|
|
47
|
+
min_score: String(args.min_score ?? 50),
|
|
48
|
+
limit: String(args.limit ?? 20),
|
|
49
|
+
});
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=bots.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bots.js","sourceRoot":"","sources":["../../src/tools/bots.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG1D,MAAM,CAAC,MAAM,eAAe,GAAY;IACtC,IAAI,EAAE,eAAe;IACrB,WAAW,EACT,6KAA6K;IAC/K,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,uEAAuE;aACrF;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,gDAAgD;gBAC7D,OAAO,EAAE,EAAE;aACZ;SACF;KACF;IACD,OAAO,EAAE,KAAK,EAAE,MAAyB,EAAE,IAA6B,EAAE,EAAE;QAC1E,OAAO,MAAM,CAAC,OAAO,CAAU,qBAAqB,EAAE;YACpD,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC;YAC/B,IAAI,EAAE,MAAM,CAAE,IAAI,CAAC,IAAe,IAAI,EAAE,CAAC;SAC1C,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAY;IAChD,IAAI,EAAE,yBAAyB;IAC/B,WAAW,EACT,qKAAqK;IACvK,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,uEAAuE;aACrF;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,yDAAyD;gBACtE,OAAO,EAAE,EAAE;aACZ;YACD,KAAK,EAAE,YAAY;SACpB;KACF;IACD,OAAO,EAAE,KAAK,EAAE,MAAyB,EAAE,IAA6B,EAAE,EAAE;QAC1E,OAAO,MAAM,CAAC,OAAO,CAAU,gCAAgC,EAAE;YAC/D,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC;YAC/B,SAAS,EAAE,MAAM,CAAE,IAAI,CAAC,SAAoB,IAAI,EAAE,CAAC;YACnD,KAAK,EAAE,MAAM,CAAE,IAAI,CAAC,KAAgB,IAAI,EAAE,CAAC;SAC5C,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channels.d.ts","sourceRoot":"","sources":["../../src/tools/channels.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,eAAO,MAAM,eAAe,EAAE,OA+B7B,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,OA2BhC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,OA4BlC,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { PERIOD_SCHEMA, LIMIT_SCHEMA, PAGE_SCHEMA, resolveSiteId } from "./shared.js";
|
|
2
|
+
export const getChannelsTool = {
|
|
3
|
+
name: "get_channels",
|
|
4
|
+
description: "Get traffic metrics grouped by channel: Paid Search, Organic Search, Social, Direct, Email, Referral, etc. Channels are automatically classified based on UTM parameters and referrer rules.",
|
|
5
|
+
inputSchema: {
|
|
6
|
+
type: "object",
|
|
7
|
+
properties: {
|
|
8
|
+
site_id: {
|
|
9
|
+
type: "string",
|
|
10
|
+
description: "Site ID (account_id). Optional if SEALMETRICS_SITE_ID env var is set.",
|
|
11
|
+
},
|
|
12
|
+
period: PERIOD_SCHEMA,
|
|
13
|
+
limit: LIMIT_SCHEMA,
|
|
14
|
+
page: PAGE_SCHEMA,
|
|
15
|
+
country: {
|
|
16
|
+
type: "string",
|
|
17
|
+
description: "Filter by country code (e.g. 'ES', 'US').",
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
handler: async (client, args) => {
|
|
22
|
+
// Pass `period` through as-is; the API resolves it with "today" in the
|
|
23
|
+
// account's timezone (PRD-029 RF-008). No client-side date pre-resolution.
|
|
24
|
+
return client.request("/channel-groups/stats/channels", {
|
|
25
|
+
account_id: resolveSiteId(args),
|
|
26
|
+
period: args.period ?? "30d",
|
|
27
|
+
page_size: String(args.limit ?? 20),
|
|
28
|
+
page: args.page != null ? String(args.page) : undefined,
|
|
29
|
+
country: args.country,
|
|
30
|
+
});
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
export const getTopChannelsTool = {
|
|
34
|
+
name: "get_top_channels",
|
|
35
|
+
description: "Get top channels ranked by entrances. Returns a compact list of the top N channels (Paid Search, Organic, Social, etc.) — ideal for quick rankings.",
|
|
36
|
+
inputSchema: {
|
|
37
|
+
type: "object",
|
|
38
|
+
properties: {
|
|
39
|
+
site_id: {
|
|
40
|
+
type: "string",
|
|
41
|
+
description: "Site ID. Optional if SEALMETRICS_SITE_ID env var is set.",
|
|
42
|
+
},
|
|
43
|
+
period: PERIOD_SCHEMA,
|
|
44
|
+
limit: LIMIT_SCHEMA,
|
|
45
|
+
country: {
|
|
46
|
+
type: "string",
|
|
47
|
+
description: "Filter by country code (e.g. 'ES', 'US').",
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
handler: async (client, args) => {
|
|
52
|
+
return client.request("/stats/top-channels", {
|
|
53
|
+
site_id: resolveSiteId(args),
|
|
54
|
+
period: args.period ?? "30d",
|
|
55
|
+
limit: String(args.limit ?? 10),
|
|
56
|
+
country: args.country,
|
|
57
|
+
});
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
export const listChannelRulesTool = {
|
|
61
|
+
name: "list_channel_rules",
|
|
62
|
+
description: "List channel group rules configured for a site. Shows how traffic is classified into channels (Paid Search, Organic, Social, etc.) based on UTM parameters and referrer patterns.",
|
|
63
|
+
inputSchema: {
|
|
64
|
+
type: "object",
|
|
65
|
+
properties: {
|
|
66
|
+
site_id: {
|
|
67
|
+
type: "string",
|
|
68
|
+
description: "Site ID (account_id). Optional if SEALMETRICS_SITE_ID env var is set.",
|
|
69
|
+
},
|
|
70
|
+
include_inactive: {
|
|
71
|
+
type: "boolean",
|
|
72
|
+
description: "Include inactive rules (default: false).",
|
|
73
|
+
},
|
|
74
|
+
include_defaults: {
|
|
75
|
+
type: "boolean",
|
|
76
|
+
description: "Include default system rules (default: true).",
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
handler: async (client, args) => {
|
|
81
|
+
return client.request("/channel-groups", {
|
|
82
|
+
account_id: resolveSiteId(args),
|
|
83
|
+
include_inactive: args.include_inactive != null ? String(args.include_inactive) : undefined,
|
|
84
|
+
include_defaults: args.include_defaults != null ? String(args.include_defaults) : undefined,
|
|
85
|
+
});
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
//# sourceMappingURL=channels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channels.js","sourceRoot":"","sources":["../../src/tools/channels.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/tools/content.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,eAAO,MAAM,oBAAoB,EAAE,OA6ClC,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { PERIOD_SCHEMA, resolveSiteId } from "./shared.js";
|
|
2
|
+
export const getContentGroupsTool = {
|
|
3
|
+
name: "get_content_groups",
|
|
4
|
+
description: "Get metrics grouped by content group (content_grouping). Shows pageviews and entrances per content group. Useful for understanding which sections of a site get the most traffic.",
|
|
5
|
+
inputSchema: {
|
|
6
|
+
type: "object",
|
|
7
|
+
properties: {
|
|
8
|
+
site_id: {
|
|
9
|
+
type: "string",
|
|
10
|
+
description: "Site ID. Optional if SEALMETRICS_SITE_ID env var is set.",
|
|
11
|
+
},
|
|
12
|
+
period: PERIOD_SCHEMA,
|
|
13
|
+
country: {
|
|
14
|
+
type: "string",
|
|
15
|
+
description: "Filter by country code (e.g. 'ES', 'US').",
|
|
16
|
+
},
|
|
17
|
+
utm_source: {
|
|
18
|
+
type: "string",
|
|
19
|
+
description: "Filter by UTM source (e.g. 'google').",
|
|
20
|
+
},
|
|
21
|
+
utm_medium: {
|
|
22
|
+
type: "string",
|
|
23
|
+
description: "Filter by UTM medium (e.g. 'cpc').",
|
|
24
|
+
},
|
|
25
|
+
utm_campaign: {
|
|
26
|
+
type: "string",
|
|
27
|
+
description: "Filter by UTM campaign name.",
|
|
28
|
+
},
|
|
29
|
+
utm_term: {
|
|
30
|
+
type: "string",
|
|
31
|
+
description: "Filter by UTM term.",
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
handler: async (client, args) => {
|
|
36
|
+
return client.request("/stats/pages/content-groups", {
|
|
37
|
+
site_id: resolveSiteId(args),
|
|
38
|
+
period: args.period ?? "30d",
|
|
39
|
+
country: args.country,
|
|
40
|
+
utm_source: args.utm_source,
|
|
41
|
+
utm_medium: args.utm_medium,
|
|
42
|
+
utm_campaign: args.utm_campaign,
|
|
43
|
+
utm_term: args.utm_term,
|
|
44
|
+
});
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=content.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/tools/content.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG3D,MAAM,CAAC,MAAM,oBAAoB,GAAY;IAC3C,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EACT,mLAAmL;IACrL,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,0DAA0D;aACxE;YACD,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,2CAA2C;aACzD;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,uCAAuC;aACrD;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,oCAAoC;aAClD;YACD,YAAY,EAAE;gBACZ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,8BAA8B;aAC5C;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,qBAAqB;aACnC;SACF;KACF;IACD,OAAO,EAAE,KAAK,EAAE,MAAyB,EAAE,IAA6B,EAAE,EAAE;QAC1E,OAAO,MAAM,CAAC,OAAO,CAAU,6BAA6B,EAAE;YAC5D,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC;YAC5B,MAAM,EAAG,IAAI,CAAC,MAAiB,IAAI,KAAK;YACxC,OAAO,EAAE,IAAI,CAAC,OAA6B;YAC3C,UAAU,EAAE,IAAI,CAAC,UAAgC;YACjD,UAAU,EAAE,IAAI,CAAC,UAAgC;YACjD,YAAY,EAAE,IAAI,CAAC,YAAkC;YACrD,QAAQ,EAAE,IAAI,CAAC,QAA8B;SAC9C,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ToolDef } from "./index.js";
|
|
2
|
+
export declare const getConversionsTool: ToolDef;
|
|
3
|
+
export declare const getMicroconversionsTool: ToolDef;
|
|
4
|
+
export declare const listMicroconversionTypesTool: ToolDef;
|
|
5
|
+
export declare const getMicroconversionDetailsTool: ToolDef;
|
|
6
|
+
export declare const getConversionsRawTool: ToolDef;
|
|
7
|
+
export declare const getMicroconversionsRawTool: ToolDef;
|
|
8
|
+
export declare const getConversionItemsRawTool: ToolDef;
|
|
9
|
+
//# sourceMappingURL=conversions.d.ts.map
|