@secondlayer/mcp 3.0.1 → 3.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 +7 -2
- package/dist/bin-http.js +316 -118
- package/dist/bin-http.js.map +11 -7
- package/dist/bin.js +316 -118
- package/dist/bin.js.map +11 -7
- package/dist/index.js +316 -118
- package/dist/index.js.map +11 -7
- package/package.json +2 -2
package/dist/index.js.map
CHANGED
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/server.ts", "../src/
|
|
3
|
+
"sources": ["../src/server.ts", "../src/lib/client.ts", "../src/lib/format.ts", "../src/resources.ts", "../src/tools/account.ts", "../src/lib/tool.ts", "../src/tools/contracts.ts", "../src/tools/datasets.ts", "../src/tools/index.ts", "../src/tools/scaffold.ts", "../src/tools/streams.ts", "../src/tools/subgraphs.ts", "../src/tools/subscriptions.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import { readFileSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { registerResources } from \"./resources.ts\";\nimport { registerAccountTools } from \"./tools/account.ts\";\nimport { registerScaffoldTools } from \"./tools/scaffold.ts\";\nimport { registerSubgraphTools } from \"./tools/subgraphs.ts\";\nimport { registerSubscriptionTools } from \"./tools/subscriptions.ts\";\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\nconst pkg = JSON.parse(\n\treadFileSync(join(__dirname, \"../package.json\"), \"utf-8\"),\n);\n\nexport function createServer(): McpServer {\n\tconst server = new McpServer({\n\t\tname: \"secondlayer\",\n\t\tversion: pkg.version,\n\t});\n\n\tregisterScaffoldTools(server);\n\tregisterSubgraphTools(server);\n\tregisterSubscriptionTools(server);\n\tregisterAccountTools(server);\n\tregisterResources(server);\n\n\treturn server;\n}\n",
|
|
6
|
-
"import
|
|
7
|
-
"import { SecondLayer } from \"@secondlayer/sdk\";\n\nlet instance: SecondLayer | null = null;\n\n/**\n * Read the API key from env. `SL_API_KEY` is the single credential var, matching\n * the CLI and SDK. (The former `SL_SERVICE_KEY` / `SECONDLAYER_API_KEY` aliases\n * were removed.)\n */\nfunction readApiKey(): string | undefined {\n\treturn process.env.SL_API_KEY;\n}\n\n/**\n * Lazy SDK singleton. Built keyless when no key is set so read tools (list,\n * get, query, spec) work during open beta — reads are public. Write tools\n * (deploy/reindex/delete) and account tools hit the API without a key and get\n * a 401, surfaced with a key hint via `keyHint` below.\n */\nexport function getClient(): SecondLayer {\n\tif (!instance) {\n\t\tconst apiKey = readApiKey();\n\t\tconst baseUrl = process.env.SECONDLAYER_API_URL;\n\t\tinstance = new SecondLayer({\n\t\t\t...(apiKey ? { apiKey } : {}),\n\t\t\torigin: \"mcp\",\n\t\t\t...(baseUrl ? { baseUrl } : {}),\n\t\t});\n\t}\n\treturn instance;\n}\n\n// Appended to 401/403 errors raised on keyless requests — the operation needs\n// a write/account key, so point at where to get one.\nconst keyHint =\n\t\" — set SL_API_KEY to an sk-sl_ API key from \" +\n\t\"https://secondlayer.tools/platform/api-keys for write and account operations\";\n\n/** Raw fetch helper for API endpoints not covered by the SDK. */\nexport async function apiRequest<T>(\n\tmethod: string,\n\tpath: string,\n\tbody?: unknown,\n): Promise<T> {\n\tconst apiKey = readApiKey();\n\tconst baseUrl =\n\t\tprocess.env.SECONDLAYER_API_URL || \"https://api.secondlayer.tools\";\n\tconst res = await fetch(`${baseUrl}${path}`, {\n\t\tmethod,\n\t\theaders: {\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...(apiKey ? { Authorization: `Bearer ${apiKey}` } : {}),\n\t\t},\n\t\tbody: body ? JSON.stringify(body) : undefined,\n\t});\n\tif (!res.ok) {\n\t\tconst text = await res.text().catch(() => \"\");\n\t\tconst needsKey = !apiKey && (res.status === 401 || res.status === 403);\n\t\tthrow Object.assign(\n\t\t\tnew Error((text || `HTTP ${res.status}`) + (needsKey ? keyHint : \"\")),\n\t\t\t{ status: res.status },\n\t\t);\n\t}\n\tif (res.status === 204) return undefined as T;\n\treturn res.json() as Promise<T>;\n}\n",
|
|
5
|
+
"import { readFileSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { registerResources } from \"./resources.ts\";\nimport { registerAccountTools } from \"./tools/account.ts\";\nimport { registerContractTools } from \"./tools/contracts.ts\";\nimport { registerDatasetTools } from \"./tools/datasets.ts\";\nimport { registerIndexTools } from \"./tools/index.ts\";\nimport { registerScaffoldTools } from \"./tools/scaffold.ts\";\nimport { registerStreamsTools } from \"./tools/streams.ts\";\nimport { registerSubgraphTools } from \"./tools/subgraphs.ts\";\nimport { registerSubscriptionTools } from \"./tools/subscriptions.ts\";\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\nconst pkg = JSON.parse(\n\treadFileSync(join(__dirname, \"../package.json\"), \"utf-8\"),\n);\n\nexport function createServer(): McpServer {\n\tconst server = new McpServer({\n\t\tname: \"secondlayer\",\n\t\tversion: pkg.version,\n\t});\n\n\tregisterScaffoldTools(server);\n\tregisterSubgraphTools(server);\n\tregisterSubscriptionTools(server);\n\tregisterAccountTools(server);\n\tregisterDatasetTools(server);\n\tregisterIndexTools(server);\n\tregisterStreamsTools(server);\n\tregisterContractTools(server);\n\tregisterResources(server);\n\n\treturn server;\n}\n",
|
|
6
|
+
"import { SecondLayer } from \"@secondlayer/sdk\";\n\nlet instance: SecondLayer | null = null;\n\n/**\n * Read the API key from env. `SL_API_KEY` is the single credential var, matching\n * the CLI and SDK. (The former `SL_SERVICE_KEY` / `SECONDLAYER_API_KEY` aliases\n * were removed.)\n */\nfunction readApiKey(): string | undefined {\n\treturn process.env.SL_API_KEY;\n}\n\n/**\n * Lazy SDK singleton. Built keyless when no key is set so read tools (list,\n * get, query, spec) work during open beta — reads are public. Write tools\n * (deploy/reindex/delete) and account tools hit the API without a key and get\n * a 401, surfaced with a key hint via `keyHint` below.\n */\nexport function getClient(): SecondLayer {\n\tif (!instance) {\n\t\tconst apiKey = readApiKey();\n\t\tconst baseUrl = process.env.SECONDLAYER_API_URL;\n\t\tinstance = new SecondLayer({\n\t\t\t...(apiKey ? { apiKey } : {}),\n\t\t\torigin: \"mcp\",\n\t\t\t...(baseUrl ? { baseUrl } : {}),\n\t\t});\n\t}\n\treturn instance;\n}\n\n// Appended to 401/403 errors raised on keyless requests — the operation needs\n// a write/account key, so point at where to get one.\nexport const keyHint =\n\t\" — set SL_API_KEY to an sk-sl_ API key from \" +\n\t\"https://secondlayer.tools/platform/api-keys for write and account operations\";\n\n/** Raw fetch helper for API endpoints not covered by the SDK. */\nexport async function apiRequest<T>(\n\tmethod: string,\n\tpath: string,\n\tbody?: unknown,\n): Promise<T> {\n\tconst apiKey = readApiKey();\n\tconst baseUrl =\n\t\tprocess.env.SECONDLAYER_API_URL || \"https://api.secondlayer.tools\";\n\tconst res = await fetch(`${baseUrl}${path}`, {\n\t\tmethod,\n\t\theaders: {\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...(apiKey ? { Authorization: `Bearer ${apiKey}` } : {}),\n\t\t},\n\t\tbody: body ? JSON.stringify(body) : undefined,\n\t});\n\tif (!res.ok) {\n\t\tconst text = await res.text().catch(() => \"\");\n\t\tconst needsKey = !apiKey && (res.status === 401 || res.status === 403);\n\t\tthrow Object.assign(\n\t\t\tnew Error((text || `HTTP ${res.status}`) + (needsKey ? keyHint : \"\")),\n\t\t\t{ status: res.status },\n\t\t);\n\t}\n\tif (res.status === 204) return undefined as T;\n\treturn res.json() as Promise<T>;\n}\n",
|
|
8
7
|
"/** Summarize a subgraph for list responses. */\nexport function formatSubgraphSummary(s: {\n\tname: string;\n\tstatus: string;\n\ttables: string[] | Record<string, unknown>;\n\tlastProcessedBlock: number;\n}) {\n\treturn {\n\t\tname: s.name,\n\t\tstatus: s.status,\n\t\ttables: Array.isArray(s.tables) ? s.tables : Object.keys(s.tables),\n\t\tlastProcessedBlock: s.lastProcessedBlock,\n\t};\n}\n\n/** Cap array length and return truncation metadata. */\nexport function withCap<T>(\n\titems: T[],\n\tcap: number,\n): { items: T[]; truncated: boolean; total: number } {\n\treturn {\n\t\titems: items.slice(0, cap),\n\t\ttruncated: items.length > cap,\n\t\ttotal: items.length,\n\t};\n}\n\n/** Build MCP text response with JSON-serialized payload. */\nexport function jsonResponse(\n\tdata: unknown,\n\tisError?: boolean,\n): { content: Array<{ type: \"text\"; text: string }>; isError?: boolean } {\n\treturn {\n\t\tcontent: [{ type: \"text\", text: JSON.stringify(data, null, 2) }],\n\t\t...(isError && { isError: true }),\n\t};\n}\n\n/** Build MCP text response with plain text payload. */\nexport function textResponse(\n\ttext: string,\n\tisError?: boolean,\n): { content: Array<{ type: \"text\"; text: string }>; isError?: boolean } {\n\treturn {\n\t\tcontent: [{ type: \"text\", text }],\n\t\t...(isError && { isError: true }),\n\t};\n}\n",
|
|
8
|
+
"import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { apiRequest, getClient } from \"./lib/client.ts\";\nimport { formatSubgraphSummary } from \"./lib/format.ts\";\n\n/** Filter types for blockchain events — SubgraphFilter vocabulary. */\nconst FILTERS_REFERENCE = [\n\t{\n\t\ttype: \"stx_transfer\",\n\t\tfields: [\"sender\", \"recipient\", \"minAmount\", \"maxAmount\"],\n\t},\n\t{ type: \"stx_mint\", fields: [\"recipient\", \"minAmount\"] },\n\t{ type: \"stx_burn\", fields: [\"sender\", \"minAmount\"] },\n\t{ type: \"stx_lock\", fields: [\"lockedAddress\", \"minAmount\"] },\n\t{\n\t\ttype: \"ft_transfer\",\n\t\tfields: [\n\t\t\t\"sender\",\n\t\t\t\"recipient\",\n\t\t\t\"assetIdentifier\",\n\t\t\t\"minAmount\",\n\t\t\t\"maxAmount\",\n\t\t],\n\t},\n\t{ type: \"ft_mint\", fields: [\"recipient\", \"assetIdentifier\", \"minAmount\"] },\n\t{ type: \"ft_burn\", fields: [\"sender\", \"assetIdentifier\", \"minAmount\"] },\n\t{\n\t\ttype: \"nft_transfer\",\n\t\tfields: [\"sender\", \"recipient\", \"assetIdentifier\", \"tokenId\"],\n\t},\n\t{ type: \"nft_mint\", fields: [\"recipient\", \"assetIdentifier\", \"tokenId\"] },\n\t{ type: \"nft_burn\", fields: [\"sender\", \"assetIdentifier\", \"tokenId\"] },\n\t{ type: \"contract_call\", fields: [\"contract\", \"function\"] },\n\t{ type: \"contract_deploy\", fields: [\"contract\"] },\n\t{ type: \"print_event\", fields: [\"contract\", \"event\", \"contains\"] },\n];\n\nconst COLUMN_TYPES = [\n\t{\n\t\ttype: \"uint\",\n\t\tsqlType: \"bigint\",\n\t\tdescription: \"Unsigned integer (Clarity uint)\",\n\t},\n\t{\n\t\ttype: \"int\",\n\t\tsqlType: \"bigint\",\n\t\tdescription: \"Signed integer (Clarity int)\",\n\t},\n\t{ type: \"text\", sqlType: \"text\", description: \"UTF-8 string\" },\n\t{\n\t\ttype: \"principal\",\n\t\tsqlType: \"text\",\n\t\tdescription: \"Stacks address (standard or contract)\",\n\t},\n\t{ type: \"bool\", sqlType: \"boolean\", description: \"Boolean value\" },\n\t{ type: \"json\", sqlType: \"jsonb\", description: \"Arbitrary JSON data\" },\n\t{\n\t\toptions: [\"nullable\", \"indexed\", \"search\"],\n\t\tdescription:\n\t\t\t\"Column options: nullable allows NULL, indexed creates a B-tree index, search enables full-text search\",\n\t},\n];\n\n/** Static \"what you can do\" overview — the product surfaces an agent can reach. */\nconst CAPABILITIES = {\n\tproducts: [\n\t\t\"datasets — public foundation datasets (datasets_list, datasets_query)\",\n\t\t\"index — decoded L2 events + contract calls (index_ft_transfers, index_nft_transfers, index_events, index_contract_calls)\",\n\t\t\"streams — raw chain event firehose (streams_tip, streams_events)\",\n\t\t\"contracts — trait-based contract discovery (contracts_find)\",\n\t\t\"subgraphs — author/deploy/query custom indexes (subgraphs_deploy, subgraphs_query, subgraphs_list, subgraphs_get, subgraphs_reindex, subgraphs_delete)\",\n\t\t\"subscriptions — webhook delivery of subgraph rows (subscriptions_create, subscriptions_list, subscriptions_update, …)\",\n\t\t\"account — identity + plan (account_whoami)\",\n\t],\n\tdiscoverFirst:\n\t\t\"Call datasets_list / contracts_find to learn what exists before querying.\",\n};\n\n/** Per-product read-auth tiers — what an agent must know before reading. */\nconst READ_AUTH_TIERS = {\n\tdatasets: \"open — no API key required\",\n\tindex:\n\t\t\"anonymous reads allowed; free-tier API keys are rejected (Build+ required)\",\n\tstreams: \"API key required (SL_API_KEY) — keyless calls return 401\",\n\tsubgraphs: \"reads public during open beta; writes require an API key\",\n};\n\ntype ContextDeps = {\n\tclientProvider: typeof getClient;\n\taccountRequest: () => Promise<{ email: string; plan: string }>;\n};\n\n/**\n * Assemble the live agent context read at connect: what exists (the user's\n * subgraphs/subscriptions + account), what the agent can do, and the read-auth\n * tiers. Every live call degrades to a sentinel string on failure (e.g. keyless\n * requests that 401) so the resource never throws and always orients the agent.\n */\nexport async function buildContext(\n\tdeps: ContextDeps = {\n\t\tclientProvider: getClient,\n\t\taccountRequest: () =>\n\t\t\tapiRequest<{ email: string; plan: string }>(\"GET\", \"/api/accounts/me\"),\n\t},\n) {\n\tconst unavailable = \"unavailable: set SL_API_KEY\";\n\n\tconst subgraphs = await deps\n\t\t.clientProvider()\n\t\t.subgraphs.list()\n\t\t.then((r) => r.data.map(formatSubgraphSummary))\n\t\t.catch(() => unavailable);\n\n\tconst subscriptions = await deps\n\t\t.clientProvider()\n\t\t.subscriptions.list()\n\t\t.then((r) => ({\n\t\t\tcount: r.data.length,\n\t\t\tstatuses: r.data.map((s: { status: string }) => s.status),\n\t\t}))\n\t\t.catch(() => unavailable);\n\n\tconst account = await deps.accountRequest().catch(() => unavailable);\n\n\treturn {\n\t\tauthState: { apiKeySet: Boolean(process.env.SL_API_KEY) },\n\t\twhatExists: { subgraphs, subscriptions, account },\n\t\twhatYouCanDo: CAPABILITIES,\n\t\treadAuthTiers: READ_AUTH_TIERS,\n\t};\n}\n\nexport function registerResources(server: McpServer) {\n\tserver.resource(\n\t\t\"context\",\n\t\t\"secondlayer://context\",\n\t\t{\n\t\t\tdescription:\n\t\t\t\t\"Live agent context — what exists (your subgraphs, subscriptions, account), what you can do, and read-auth tiers. Read this first.\",\n\t\t},\n\t\tasync () => ({\n\t\t\tcontents: [\n\t\t\t\t{\n\t\t\t\t\turi: \"secondlayer://context\",\n\t\t\t\t\tmimeType: \"application/json\",\n\t\t\t\t\ttext: JSON.stringify(await buildContext(), null, 2),\n\t\t\t\t},\n\t\t\t],\n\t\t}),\n\t);\n\n\tserver.resource(\n\t\t\"filters\",\n\t\t\"secondlayer://filters\",\n\t\t{ description: \"Event filter types and their available fields\" },\n\t\tasync () => ({\n\t\t\tcontents: [\n\t\t\t\t{\n\t\t\t\t\turi: \"secondlayer://filters\",\n\t\t\t\t\tmimeType: \"application/json\",\n\t\t\t\t\ttext: JSON.stringify(FILTERS_REFERENCE, null, 2),\n\t\t\t\t},\n\t\t\t],\n\t\t}),\n\t);\n\n\tserver.resource(\n\t\t\"column-types\",\n\t\t\"secondlayer://column-types\",\n\t\t{ description: \"Subgraph column types, SQL mappings, and options\" },\n\t\tasync () => ({\n\t\t\tcontents: [\n\t\t\t\t{\n\t\t\t\t\turi: \"secondlayer://column-types\",\n\t\t\t\t\tmimeType: \"application/json\",\n\t\t\t\t\ttext: JSON.stringify(COLUMN_TYPES, null, 2),\n\t\t\t\t},\n\t\t\t],\n\t\t}),\n\t);\n}\n",
|
|
9
|
+
"import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { z } from \"zod/v4\";\nimport { apiRequest } from \"../lib/client.ts\";\nimport { jsonResponse } from \"../lib/format.ts\";\nimport { defineTool } from \"../lib/tool.ts\";\n\nexport function registerAccountTools(server: McpServer) {\n\tdefineTool<Record<string, never>>(\n\t\tserver,\n\t\t\"account_whoami\",\n\t\t\"Show the authenticated account's email and plan.\",\n\t\t{},\n\t\tasync () => {\n\t\t\tconst result = await apiRequest<{ email: string; plan: string }>(\n\t\t\t\t\"GET\",\n\t\t\t\t\"/api/accounts/me\",\n\t\t\t);\n\t\t\treturn jsonResponse(result);\n\t\t},\n\t);\n\n\tdefineTool<{ displayName?: string; bio?: string; slug?: string }>(\n\t\tserver,\n\t\t\"account_update\",\n\t\t\"Update the authenticated account's profile. Requires an API key.\",\n\t\t{\n\t\t\tdisplayName: z.string().optional().describe(\"Display name\"),\n\t\t\tbio: z.string().optional().describe(\"Profile bio\"),\n\t\t\tslug: z.string().optional().describe(\"Account URL slug\"),\n\t\t},\n\t\tasync ({ displayName, bio, slug }) => {\n\t\t\tconst body: Record<string, string> = {};\n\t\t\tif (displayName !== undefined) body.display_name = displayName;\n\t\t\tif (bio !== undefined) body.bio = bio;\n\t\t\tif (slug !== undefined) body.slug = slug;\n\t\t\tconst result = await apiRequest(\"PATCH\", \"/api/accounts/me\", body);\n\t\t\treturn jsonResponse(result);\n\t\t},\n\t);\n\n\tdefineTool<Record<string, never>>(\n\t\tserver,\n\t\t\"account_billing\",\n\t\t\"Show the account's plan and subscription/billing status. Requires an API key.\",\n\t\t{},\n\t\tasync () => {\n\t\t\tconst result = await apiRequest(\"GET\", \"/api/billing/status\");\n\t\t\treturn jsonResponse(result);\n\t\t},\n\t);\n}\n",
|
|
9
10
|
"import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\n\ninterface ToolResult {\n\tcontent: Array<{ type: \"text\"; text: string }>;\n\tisError?: boolean;\n}\n\n/**\n * Type-safe wrapper around McpServer.tool() that avoids TS2589.\n *\n * The MCP SDK's Zod-generic `tool()` signature recurses past TypeScript's\n * instantiation depth limit when schemas contain discriminated unions or\n * nested optionals. This helper isolates the boundary cast to one place\n * so tool files stay fully typed via the explicit `T` generic.\n *\n * Schema is typed as Record<string, unknown> to prevent TypeScript from\n * resolving the deeply recursive ZodRawShapeCompat constraint. Zod still\n * validates at runtime.\n */\nexport function defineTool<T>(\n\tserver: McpServer,\n\tname: string,\n\tdescription: string,\n\tschema: Record<string, unknown>,\n\thandler: (args: T) => Promise<ToolResult> | ToolResult,\n): void {\n\tconst wrappedHandler = async (args: T): Promise<ToolResult> => {\n\t\ttry {\n\t\t\treturn await handler(args);\n\t\t} catch (err: unknown) {\n\t\t\tconst message = err instanceof Error ? err.message : String(err);\n\t\t\tconst status =\n\t\t\t\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\t\t\t\terr instanceof Error && \"status\" in err ? (err as any).status : 0;\n\t\t\tconst type =\n\t\t\t\tstatus === 401\n\t\t\t\t\t? \"unauthorized\"\n\t\t\t\t\t: status === 404\n\t\t\t\t\t\t? \"not_found\"\n\t\t\t\t\t\t: status === 429\n\t\t\t\t\t\t\t? \"rate_limited\"\n\t\t\t\t\t\t\t: status >= 500\n\t\t\t\t\t\t\t\t? \"server_error\"\n\t\t\t\t\t\t\t\t: \"error\";\n\t\t\treturn {\n\t\t\t\tcontent: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\ttext: JSON.stringify({ error: { type, status, message } }),\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tisError: true,\n\t\t\t};\n\t\t}\n\t};\n\t(server.tool as (...args: unknown[]) => unknown)(\n\t\tname,\n\t\tdescription,\n\t\tschema,\n\t\twrappedHandler,\n\t);\n}\n",
|
|
10
|
-
"import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport {
|
|
11
|
+
"import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { z } from \"zod/v4\";\nimport { getClient } from \"../lib/client.ts\";\nimport { jsonResponse } from \"../lib/format.ts\";\nimport { defineTool } from \"../lib/tool.ts\";\n\ntype ClientProvider = typeof getClient;\n\nexport function registerContractTools(\n\tserver: McpServer,\n\tclientProvider: ClientProvider = getClient,\n) {\n\tdefineTool<{\n\t\ttrait: string;\n\t\tconformance?: \"declared\" | \"inferred\" | \"any\";\n\t\tinclude?: \"abi\";\n\t\tlimit?: number;\n\t\tcursor?: string;\n\t}>(\n\t\tserver,\n\t\t\"contracts_find\",\n\t\t'Discover deployed Stacks contracts conforming to a trait (e.g. \"sip-010\", \"sip-009\", \"sip-013\"). The discovery endpoint for \"which contracts implement X\". Reads are public.',\n\t\t{\n\t\t\ttrait: z.string().describe('Required. Trait to match (e.g. \"sip-010\").'),\n\t\t\tconformance: z\n\t\t\t\t.enum([\"declared\", \"inferred\", \"any\"])\n\t\t\t\t.optional()\n\t\t\t\t.describe(\n\t\t\t\t\t\"declared = parsed from source, inferred = ABI shape-match, any = either (default)\",\n\t\t\t\t),\n\t\t\tinclude: z\n\t\t\t\t.literal(\"abi\")\n\t\t\t\t.optional()\n\t\t\t\t.describe('Set to \"abi\" to include each contract\\'s full ABI'),\n\t\t\tlimit: z.number().optional().describe(\"Page size, 1–500 (default 100)\"),\n\t\t\tcursor: z\n\t\t\t\t.string()\n\t\t\t\t.optional()\n\t\t\t\t.describe(\"Opaque cursor from a prior response's next_cursor\"),\n\t\t},\n\t\tasync (params) =>\n\t\t\tjsonResponse(await clientProvider().contracts.list(params)),\n\t);\n}\n",
|
|
12
|
+
"import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { z } from \"zod/v4\";\nimport { getClient } from \"../lib/client.ts\";\nimport { jsonResponse } from \"../lib/format.ts\";\nimport { defineTool } from \"../lib/tool.ts\";\n\ntype ClientProvider = typeof getClient;\n\nexport function registerDatasetTools(\n\tserver: McpServer,\n\tclientProvider: ClientProvider = getClient,\n) {\n\tdefineTool<Record<string, never>>(\n\t\tserver,\n\t\t\"datasets_list\",\n\t\t\"List the Foundation Datasets catalog with freshness — the discovery endpoint for what dataset slugs exist and how current each is. Reads are public.\",\n\t\t{},\n\t\tasync () => {\n\t\t\tconst catalog = await clientProvider().datasets.listDatasets();\n\t\t\treturn jsonResponse(catalog);\n\t\t},\n\t);\n\n\tdefineTool<{\n\t\tslug: string;\n\t\tfilters?: Record<string, string>;\n\t\tlimit?: number;\n\t\tcursor?: string;\n\t}>(\n\t\tserver,\n\t\t\"datasets_query\",\n\t\t'Query a cursor-paginated Foundation Dataset by slug (e.g. \"stx-transfers\", \"sbtc/events\", \"pox-4/calls\", \"bns/events\"). Filters are passed through as documented query params (e.g. {\"sender\": \"SP...\", \"from_block\": \"150000\"}). Returns { rows, next_cursor, tip }. Call datasets_list first to discover slugs.',\n\t\t{\n\t\t\tslug: z\n\t\t\t\t.string()\n\t\t\t\t.describe(\"Dataset slug from datasets_list (e.g. stx-transfers)\"),\n\t\t\tfilters: z\n\t\t\t\t.record(z.string(), z.string())\n\t\t\t\t.optional()\n\t\t\t\t.describe(\"Documented per-dataset query params (snake_case values)\"),\n\t\t\tlimit: z.number().optional().describe(\"Max rows for this page\"),\n\t\t\tcursor: z\n\t\t\t\t.string()\n\t\t\t\t.optional()\n\t\t\t\t.describe(\"Opaque cursor from a prior response's next_cursor\"),\n\t\t},\n\t\tasync ({ slug, filters, limit, cursor }) => {\n\t\t\tconst params: Record<string, unknown> = { ...(filters ?? {}) };\n\t\t\tif (limit !== undefined) params.limit = limit;\n\t\t\tif (cursor !== undefined) params.cursor = cursor;\n\t\t\tconst result = await clientProvider().datasets.query(slug, params);\n\t\t\treturn jsonResponse(result);\n\t\t},\n\t);\n}\n",
|
|
13
|
+
"import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { z } from \"zod/v4\";\nimport { getClient } from \"../lib/client.ts\";\nimport { jsonResponse } from \"../lib/format.ts\";\nimport { defineTool } from \"../lib/tool.ts\";\n\ntype ClientProvider = typeof getClient;\n\nconst INDEX_EVENT_TYPES = [\n\t\"ft_transfer\",\n\t\"nft_transfer\",\n\t\"stx_transfer\",\n\t\"stx_mint\",\n\t\"stx_burn\",\n\t\"stx_lock\",\n\t\"ft_mint\",\n\t\"ft_burn\",\n\t\"nft_mint\",\n\t\"nft_burn\",\n\t\"print\",\n] as const;\n\n/** Filters shared by the height/cursor-paginated Index endpoints. */\nconst rangeFilters = {\n\tcontractId: z.string().optional().describe(\"Filter by contract id\"),\n\tfromHeight: z.number().optional().describe(\"Start block height (inclusive)\"),\n\ttoHeight: z.number().optional().describe(\"End block height (inclusive)\"),\n\tcursor: z\n\t\t.string()\n\t\t.optional()\n\t\t.describe(\"Opaque cursor from a prior response's next_cursor\"),\n\tlimit: z.number().optional().describe(\"Max rows for this page\"),\n};\n\nexport function registerIndexTools(\n\tserver: McpServer,\n\tclientProvider: ClientProvider = getClient,\n) {\n\tdefineTool<{\n\t\tcontractId?: string;\n\t\tsender?: string;\n\t\trecipient?: string;\n\t\tfromHeight?: number;\n\t\ttoHeight?: number;\n\t\tcursor?: string;\n\t\tlimit?: number;\n\t}>(\n\t\tserver,\n\t\t\"index_ft_transfers\",\n\t\t\"List decoded SIP-010 fungible-token transfers from the Index (L2 decoded layer). Anonymous reads allowed (free-tier API keys are rejected — Build+ required).\",\n\t\t{\n\t\t\t...rangeFilters,\n\t\t\tsender: z.string().optional().describe(\"Filter by sender principal\"),\n\t\t\trecipient: z\n\t\t\t\t.string()\n\t\t\t\t.optional()\n\t\t\t\t.describe(\"Filter by recipient principal\"),\n\t\t},\n\t\tasync (params) =>\n\t\t\tjsonResponse(await clientProvider().index.ftTransfers.list(params)),\n\t);\n\n\tdefineTool<{\n\t\tcontractId?: string;\n\t\tsender?: string;\n\t\trecipient?: string;\n\t\tassetIdentifier?: string;\n\t\tfromHeight?: number;\n\t\ttoHeight?: number;\n\t\tcursor?: string;\n\t\tlimit?: number;\n\t}>(\n\t\tserver,\n\t\t\"index_nft_transfers\",\n\t\t\"List decoded SIP-009 non-fungible-token transfers from the Index. Anonymous reads allowed (free-tier keys rejected).\",\n\t\t{\n\t\t\t...rangeFilters,\n\t\t\tsender: z.string().optional().describe(\"Filter by sender principal\"),\n\t\t\trecipient: z\n\t\t\t\t.string()\n\t\t\t\t.optional()\n\t\t\t\t.describe(\"Filter by recipient principal\"),\n\t\t\tassetIdentifier: z\n\t\t\t\t.string()\n\t\t\t\t.optional()\n\t\t\t\t.describe(\"Filter by asset identifier (contract::asset)\"),\n\t\t},\n\t\tasync (params) =>\n\t\t\tjsonResponse(await clientProvider().index.nftTransfers.list(params)),\n\t);\n\n\tdefineTool<{\n\t\teventType: (typeof INDEX_EVENT_TYPES)[number];\n\t\tcontractId?: string;\n\t\tsender?: string;\n\t\trecipient?: string;\n\t\tassetIdentifier?: string;\n\t\tfromHeight?: number;\n\t\ttoHeight?: number;\n\t\tcursor?: string;\n\t\tlimit?: number;\n\t}>(\n\t\tserver,\n\t\t\"index_events\",\n\t\t\"List decoded chain events from the Index by event type. Use this for event types without a dedicated tool (stx_*, ft_mint/burn, nft_mint/burn, print). For ft/nft transfers prefer index_ft_transfers / index_nft_transfers.\",\n\t\t{\n\t\t\teventType: z\n\t\t\t\t.enum(INDEX_EVENT_TYPES)\n\t\t\t\t.describe(\"Required. Decoded event type to list.\"),\n\t\t\t...rangeFilters,\n\t\t\tsender: z.string().optional().describe(\"Filter by sender principal\"),\n\t\t\trecipient: z\n\t\t\t\t.string()\n\t\t\t\t.optional()\n\t\t\t\t.describe(\"Filter by recipient principal\"),\n\t\t\tassetIdentifier: z\n\t\t\t\t.string()\n\t\t\t\t.optional()\n\t\t\t\t.describe(\"Filter by asset identifier where applicable\"),\n\t\t},\n\t\tasync (params) =>\n\t\t\tjsonResponse(await clientProvider().index.events.list(params)),\n\t);\n\n\tdefineTool<{\n\t\tcontractId?: string;\n\t\tfunctionName?: string;\n\t\tsender?: string;\n\t\tfromHeight?: number;\n\t\ttoHeight?: number;\n\t\tcursor?: string;\n\t\tlimit?: number;\n\t}>(\n\t\tserver,\n\t\t\"index_contract_calls\",\n\t\t\"List decoded contract calls from the Index (function name, args, result). Note: contract-call cursors are a SEPARATE keyspace from event cursors — they are not interchangeable.\",\n\t\t{\n\t\t\t...rangeFilters,\n\t\t\tfunctionName: z\n\t\t\t\t.string()\n\t\t\t\t.optional()\n\t\t\t\t.describe(\"Filter by called function name\"),\n\t\t\tsender: z.string().optional().describe(\"Filter by caller principal\"),\n\t\t},\n\t\tasync (params) =>\n\t\t\tjsonResponse(await clientProvider().index.contractCalls.list(params)),\n\t);\n}\n",
|
|
11
14
|
"import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { generateSubgraphCode } from \"@secondlayer/scaffold\";\nimport type { AbiFunction, AbiMap } from \"@secondlayer/scaffold\";\nimport { z } from \"zod/v4\";\nimport { defineTool } from \"../lib/tool.ts\";\n\nconst API_BASE =\n\tprocess.env.SECONDLAYER_API_URL || \"https://api.secondlayer.tools\";\n\nasync function fetchAbi(\n\tcontractId: string,\n): Promise<{ functions: AbiFunction[]; maps: AbiMap[] }> {\n\tconst res = await fetch(`${API_BASE}/api/node/contracts/${contractId}/abi`, {\n\t\tsignal: AbortSignal.timeout(10_000),\n\t});\n\tif (!res.ok) {\n\t\tif (res.status === 404)\n\t\t\tthrow new Error(`Contract not found: ${contractId}`);\n\t\tthrow new Error(`Failed to fetch ABI: HTTP ${res.status}`);\n\t}\n\tconst abi = (await res.json()) as {\n\t\tfunctions?: AbiFunction[];\n\t\tmaps?: AbiMap[];\n\t};\n\treturn {\n\t\tfunctions: abi.functions ?? [],\n\t\tmaps: abi.maps ?? [],\n\t};\n}\n\nexport function registerScaffoldTools(server: McpServer) {\n\tdefineTool<{ contractId: string; subgraphName?: string }>(\n\t\tserver,\n\t\t\"scaffold_from_contract\",\n\t\t\"Generate a subgraph scaffold from a deployed Stacks contract. Fetches the ABI automatically.\",\n\t\t{\n\t\t\tcontractId: z\n\t\t\t\t.string()\n\t\t\t\t.describe(\n\t\t\t\t\t\"Fully qualified contract ID (e.g. SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.amm-pool-v2-01)\",\n\t\t\t\t),\n\t\t\tsubgraphName: z\n\t\t\t\t.string()\n\t\t\t\t.optional()\n\t\t\t\t.describe(\"Override the subgraph name (defaults to contract name)\"),\n\t\t},\n\t\tasync ({ contractId, subgraphName }) => {\n\t\t\tconst { functions, maps } = await fetchAbi(contractId);\n\t\t\tconst code = generateSubgraphCode(\n\t\t\t\tcontractId,\n\t\t\t\tfunctions,\n\t\t\t\tsubgraphName,\n\t\t\t\tmaps,\n\t\t\t);\n\t\t\treturn { content: [{ type: \"text\", text: code }] };\n\t\t},\n\t);\n\n\tdefineTool<{ abi: string; contractId: string; subgraphName?: string }>(\n\t\tserver,\n\t\t\"scaffold_from_abi\",\n\t\t\"Generate a subgraph scaffold from a provided ABI JSON. Use when you already have the ABI.\",\n\t\t{\n\t\t\tabi: z\n\t\t\t\t.string()\n\t\t\t\t.describe(\"ABI JSON string (the full contract ABI object)\"),\n\t\t\tcontractId: z.string().describe(\"Fully qualified contract ID\"),\n\t\t\tsubgraphName: z\n\t\t\t\t.string()\n\t\t\t\t.optional()\n\t\t\t\t.describe(\"Override the subgraph name\"),\n\t\t},\n\t\tasync ({ abi, contractId, subgraphName }) => {\n\t\t\tlet parsed: { functions?: AbiFunction[]; maps?: AbiMap[] };\n\t\t\ttry {\n\t\t\t\tparsed = JSON.parse(abi);\n\t\t\t} catch {\n\t\t\t\treturn {\n\t\t\t\t\tcontent: [{ type: \"text\", text: \"Invalid ABI JSON\" }],\n\t\t\t\t\tisError: true,\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst code = generateSubgraphCode(\n\t\t\t\tcontractId,\n\t\t\t\tparsed.functions ?? [],\n\t\t\t\tsubgraphName,\n\t\t\t\tparsed.maps ?? [],\n\t\t\t);\n\t\t\treturn { content: [{ type: \"text\", text: code }] };\n\t\t},\n\t);\n}\n",
|
|
15
|
+
"import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { AuthError } from \"@secondlayer/sdk\";\nimport { z } from \"zod/v4\";\nimport { getClient, keyHint } from \"../lib/client.ts\";\nimport { jsonResponse } from \"../lib/format.ts\";\nimport { defineTool } from \"../lib/tool.ts\";\n\ntype ClientProvider = typeof getClient;\n\nconst STREAMS_EVENT_TYPES = [\n\t\"stx_transfer\",\n\t\"stx_mint\",\n\t\"stx_burn\",\n\t\"stx_lock\",\n\t\"ft_transfer\",\n\t\"ft_mint\",\n\t\"ft_burn\",\n\t\"nft_transfer\",\n\t\"nft_mint\",\n\t\"nft_burn\",\n\t\"print\",\n] as const;\n\n/**\n * Streams is key-mandatory — a keyless call rejects with the SDK's `AuthError`\n * (HTTP 401), unlike the public datasets/index reads. Decorate that one case\n * with the key hint so the agent learns it must set SL_API_KEY; rethrow so\n * defineTool surfaces it as a structured `unauthorized` error.\n */\nasync function withStreamsAuthHint<T>(fn: () => Promise<T>): Promise<T> {\n\ttry {\n\t\treturn await fn();\n\t} catch (err) {\n\t\tif (err instanceof AuthError) {\n\t\t\tthrow Object.assign(new Error(err.message + keyHint), { status: 401 });\n\t\t}\n\t\tthrow err;\n\t}\n}\n\nexport function registerStreamsTools(\n\tserver: McpServer,\n\tclientProvider: ClientProvider = getClient,\n) {\n\tdefineTool<Record<string, never>>(\n\t\tserver,\n\t\t\"streams_tip\",\n\t\t\"Get the current Streams chain tip (latest processed block + lag). Streams requires an API key (SL_API_KEY).\",\n\t\t{},\n\t\tasync () =>\n\t\t\twithStreamsAuthHint(async () =>\n\t\t\t\tjsonResponse(await clientProvider().streams.tip()),\n\t\t\t),\n\t);\n\n\tdefineTool<{\n\t\ttypes?: (typeof STREAMS_EVENT_TYPES)[number][];\n\t\tnotTypes?: (typeof STREAMS_EVENT_TYPES)[number][];\n\t\tcontractId?: string;\n\t\tsender?: string;\n\t\trecipient?: string;\n\t\tassetIdentifier?: string;\n\t\tfromBlock?: number;\n\t\ttoBlock?: number;\n\t\tcursor?: string;\n\t\tlimit?: number;\n\t}>(\n\t\tserver,\n\t\t\"streams_events\",\n\t\t\"List raw chain events from the Streams firehose. Streams requires an API key (SL_API_KEY). Filter by event types, principals, contract, asset, or block range; page with cursor.\",\n\t\t{\n\t\t\ttypes: z\n\t\t\t\t.array(z.enum(STREAMS_EVENT_TYPES))\n\t\t\t\t.optional()\n\t\t\t\t.describe(\"Event types to include\"),\n\t\t\tnotTypes: z\n\t\t\t\t.array(z.enum(STREAMS_EVENT_TYPES))\n\t\t\t\t.optional()\n\t\t\t\t.describe(\"Event types to exclude (applied after types)\"),\n\t\t\tcontractId: z.string().optional().describe(\"Filter by contract id\"),\n\t\t\tsender: z.string().optional().describe(\"Filter by sender principal\"),\n\t\t\trecipient: z\n\t\t\t\t.string()\n\t\t\t\t.optional()\n\t\t\t\t.describe(\"Filter by recipient principal\"),\n\t\t\tassetIdentifier: z\n\t\t\t\t.string()\n\t\t\t\t.optional()\n\t\t\t\t.describe(\"Filter by asset identifier\"),\n\t\t\tfromBlock: z.number().optional().describe(\"Start block (inclusive)\"),\n\t\t\ttoBlock: z.number().optional().describe(\"End block (inclusive)\"),\n\t\t\tcursor: z\n\t\t\t\t.string()\n\t\t\t\t.optional()\n\t\t\t\t.describe(\"Opaque cursor from a prior response\"),\n\t\t\tlimit: z.number().optional().describe(\"Max events for this page\"),\n\t\t},\n\t\tasync (params) =>\n\t\t\twithStreamsAuthHint(async () =>\n\t\t\t\tjsonResponse(await clientProvider().streams.events.list(params)),\n\t\t\t),\n\t);\n}\n",
|
|
12
16
|
"import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { bundleSubgraphCode } from \"@secondlayer/bundler\";\nimport { z } from \"zod/v4\";\nimport { getClient } from \"../lib/client.ts\";\nimport { formatSubgraphSummary, withCap } from \"../lib/format.ts\";\nimport { defineTool } from \"../lib/tool.ts\";\n\ntype SubgraphClientProvider = typeof getClient;\n\nexport function registerSubgraphTools(\n\tserver: McpServer,\n\tclientProvider: SubgraphClientProvider = getClient,\n) {\n\tdefineTool<Record<string, never>>(\n\t\tserver,\n\t\t\"subgraphs_list\",\n\t\t\"List all deployed subgraphs. Returns summary fields only.\",\n\t\t{},\n\t\tasync () => {\n\t\t\tconst { data } = await clientProvider().subgraphs.list();\n\t\t\treturn {\n\t\t\t\tcontent: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\ttext: JSON.stringify(data.map(formatSubgraphSummary), null, 2),\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t},\n\t);\n\n\tdefineTool<{ name: string }>(\n\t\tserver,\n\t\t\"subgraphs_get\",\n\t\t\"Get full details of a subgraph including schema, health, and table columns.\",\n\t\t{ name: z.string().describe(\"Subgraph name\") },\n\t\tasync ({ name }) => {\n\t\t\tconst detail = await clientProvider().subgraphs.get(name);\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: JSON.stringify(detail, null, 2) }],\n\t\t\t};\n\t\t},\n\t);\n\n\tdefineTool<{\n\t\tname: string;\n\t\tformat?: \"agent\" | \"openapi\" | \"markdown\";\n\t\tserverUrl?: string;\n\t}>(\n\t\tserver,\n\t\t\"subgraphs_spec\",\n\t\t\"Get generated API documentation for a subgraph. Defaults to compact agent schema; supports OpenAPI JSON and Markdown.\",\n\t\t{\n\t\t\tname: z.string().describe(\"Subgraph name\"),\n\t\t\tformat: z\n\t\t\t\t.enum([\"agent\", \"openapi\", \"markdown\"])\n\t\t\t\t.optional()\n\t\t\t\t.describe(\"Spec format to return. Defaults to agent.\"),\n\t\t\tserverUrl: z\n\t\t\t\t.string()\n\t\t\t\t.optional()\n\t\t\t\t.describe(\"Override the server URL embedded in generated docs.\"),\n\t\t},\n\t\tasync ({ name, format = \"agent\", serverUrl }) => {\n\t\t\tconst options = serverUrl ? { serverUrl } : undefined;\n\t\t\tconst spec =\n\t\t\t\tformat === \"openapi\"\n\t\t\t\t\t? await clientProvider().subgraphs.openapi(name, options)\n\t\t\t\t\t: format === \"markdown\"\n\t\t\t\t\t\t? await clientProvider().subgraphs.markdown(name, options)\n\t\t\t\t\t\t: await clientProvider().subgraphs.schema(name, options);\n\t\t\treturn {\n\t\t\t\tcontent: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\ttext:\n\t\t\t\t\t\t\ttypeof spec === \"string\" ? spec : JSON.stringify(spec, null, 2),\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t},\n\t);\n\n\tdefineTool<{\n\t\tname: string;\n\t\ttable: string;\n\t\tfilters?: Record<string, string>;\n\t\tsort?: string;\n\t\torder?: string;\n\t\tlimit?: number;\n\t\toffset?: number;\n\t\tfields?: string;\n\t\tcount?: boolean;\n\t}>(\n\t\tserver,\n\t\t\"subgraphs_query\",\n\t\t'Query rows from a subgraph table (max 200 rows). Filters support operators: \"amount.gte\": \"1000\", \"sender.neq\": \"SP...\", \"name.like\": \"%token%\". Available operators: eq, neq, gt, gte, lt, lte, like.',\n\t\t{\n\t\t\tname: z.string().describe(\"Subgraph name\"),\n\t\t\ttable: z.string().describe(\"Table name\"),\n\t\t\tfilters: z\n\t\t\t\t.record(z.string(), z.string())\n\t\t\t\t.optional()\n\t\t\t\t.describe(\n\t\t\t\t\t'Column filters — plain values or with operators (e.g. {\"amount.gte\": \"1000\", \"sender\": \"SP...\"})',\n\t\t\t\t),\n\t\t\tsort: z.string().optional().describe(\"Column to sort by\"),\n\t\t\torder: z.enum([\"asc\", \"desc\"]).optional().describe(\"Sort order\"),\n\t\t\tlimit: z\n\t\t\t\t.number()\n\t\t\t\t.max(200)\n\t\t\t\t.optional()\n\t\t\t\t.describe(\"Max rows (default 50, max 200)\"),\n\t\t\toffset: z.number().optional().describe(\"Offset for pagination\"),\n\t\t\tfields: z\n\t\t\t\t.string()\n\t\t\t\t.optional()\n\t\t\t\t.describe(\n\t\t\t\t\t'Comma-separated column list to return (e.g. \"sender,amount\")',\n\t\t\t\t),\n\t\t\tcount: z\n\t\t\t\t.boolean()\n\t\t\t\t.optional()\n\t\t\t\t.describe(\"If true, return row count instead of rows\"),\n\t\t},\n\t\tasync ({\n\t\t\tname,\n\t\t\ttable,\n\t\t\tfilters,\n\t\t\tsort,\n\t\t\torder,\n\t\t\tlimit,\n\t\t\toffset,\n\t\t\tfields,\n\t\t\tcount,\n\t\t}) => {\n\t\t\tif (count) {\n\t\t\t\tconst result = await clientProvider().subgraphs.queryTableCount(\n\t\t\t\t\tname,\n\t\t\t\t\ttable,\n\t\t\t\t\t{ filters, sort, order },\n\t\t\t\t);\n\t\t\t\treturn {\n\t\t\t\t\tcontent: [{ type: \"text\", text: JSON.stringify(result, null, 2) }],\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst rows = await clientProvider().subgraphs.queryTable(name, table, {\n\t\t\t\tfilters,\n\t\t\t\tsort,\n\t\t\t\torder,\n\t\t\t\tlimit: limit ?? 50,\n\t\t\t\toffset,\n\t\t\t\tfields,\n\t\t\t});\n\t\t\tconst cap = limit ?? 50;\n\t\t\tconst result = withCap(\n\t\t\t\trows as Record<string, unknown>[],\n\t\t\t\tcap > 200 ? 200 : cap,\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: JSON.stringify(result, null, 2) }],\n\t\t\t};\n\t\t},\n\t);\n\n\tdefineTool<{ name: string; fromBlock?: number; toBlock?: number }>(\n\t\tserver,\n\t\t\"subgraphs_reindex\",\n\t\t\"Reindex a subgraph from a specific block range.\",\n\t\t{\n\t\t\tname: z.string().describe(\"Subgraph name\"),\n\t\t\tfromBlock: z\n\t\t\t\t.number()\n\t\t\t\t.optional()\n\t\t\t\t.describe(\"Start block (defaults to beginning)\"),\n\t\t\ttoBlock: z.number().optional().describe(\"End block (defaults to latest)\"),\n\t\t},\n\t\tasync ({ name, fromBlock, toBlock }) => {\n\t\t\tconst result = await clientProvider().subgraphs.reindex(name, {\n\t\t\t\tfromBlock,\n\t\t\t\ttoBlock,\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: JSON.stringify(result, null, 2) }],\n\t\t\t};\n\t\t},\n\t);\n\n\tdefineTool<{ name: string }>(\n\t\tserver,\n\t\t\"subgraphs_delete\",\n\t\t\"Delete a subgraph permanently.\",\n\t\t{ name: z.string().describe(\"Subgraph name\") },\n\t\tasync ({ name }) => {\n\t\t\tconst result = await clientProvider().subgraphs.delete(name);\n\t\t\treturn { content: [{ type: \"text\", text: result.message }] };\n\t\t},\n\t);\n\n\tdefineTool<{ code: string; startBlock?: number }>(\n\t\tserver,\n\t\t\"subgraphs_deploy\",\n\t\t\"Deploy a subgraph from TypeScript code. Pass the full defineSubgraph() source — it will be bundled, validated, and deployed. Optional startBlock overrides the source definition for this deploy. Call `subgraphs_reindex` separately if you need a forced reindex.\",\n\t\t{\n\t\t\tcode: z\n\t\t\t\t.string()\n\t\t\t\t.describe(\"TypeScript source code containing a defineSubgraph() call\"),\n\t\t\tstartBlock: z\n\t\t\t\t.number()\n\t\t\t\t.int()\n\t\t\t\t.nonnegative()\n\t\t\t\t.optional()\n\t\t\t\t.describe(\"Override the definition startBlock for this deploy\"),\n\t\t},\n\t\tasync ({ code, startBlock }) => {\n\t\t\tconst bundled = await bundleSubgraphCode(code);\n\t\t\tconst result = await clientProvider().subgraphs.deploy({\n\t\t\t\tname: bundled.name,\n\t\t\t\tversion: bundled.version,\n\t\t\t\tdescription: bundled.description,\n\t\t\t\tsources: bundled.sources,\n\t\t\t\tschema: bundled.schema,\n\t\t\t\thandlerCode: bundled.handlerCode,\n\t\t\t\tsourceCode: code,\n\t\t\t\t...(startBlock !== undefined ? { startBlock } : {}),\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: JSON.stringify(result, null, 2) }],\n\t\t\t};\n\t\t},\n\t);\n\n\tdefineTool<{ name: string }>(\n\t\tserver,\n\t\t\"subgraphs_read_source\",\n\t\t\"Fetch the deployed TypeScript source of a subgraph (plus its stored version). Returns a readOnly payload for subgraphs deployed before source capture — in that case the caller should redeploy via CLI before editing.\",\n\t\t{ name: z.string().describe(\"Subgraph name\") },\n\t\tasync ({ name }) => {\n\t\t\tconst source = await clientProvider().subgraphs.getSource(name);\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: JSON.stringify(source, null, 2) }],\n\t\t\t};\n\t\t},\n\t);\n}\n",
|
|
13
17
|
"import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport type {\n\tCreateSubscriptionRequest,\n\tUpdateSubscriptionRequest,\n} from \"@secondlayer/sdk\";\nimport { z } from \"zod/v4\";\nimport { getClient } from \"../lib/client.ts\";\nimport { defineTool } from \"../lib/tool.ts\";\n\ntype SubscriptionClientProvider = typeof getClient;\n\n/**\n * Subscription MCP tools — let agents list, configure, test, and replay\n * subgraph event subscriptions. Mirrors the HTTP API 1:1; structured\n * errors bubble through the SDK's ApiError.\n */\nexport function registerSubscriptionTools(\n\tserver: McpServer,\n\tclientProvider: SubscriptionClientProvider = getClient,\n) {\n\tdefineTool<Record<string, never>>(\n\t\tserver,\n\t\t\"subscriptions_list\",\n\t\t\"List all subscriptions for the current account. Returns summary fields (no secrets).\",\n\t\t{},\n\t\tasync () => {\n\t\t\tconst { data } = await clientProvider().subscriptions.list();\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: JSON.stringify(data, null, 2) }],\n\t\t\t};\n\t\t},\n\t);\n\n\tdefineTool<{ id: string }>(\n\t\tserver,\n\t\t\"subscriptions_get\",\n\t\t\"Get full detail for a subscription (filter, auth, retry config, circuit state).\",\n\t\t{ id: z.string().describe(\"Subscription id\") },\n\t\tasync ({ id }) => {\n\t\t\tconst detail = await clientProvider().subscriptions.get(id);\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: JSON.stringify(detail, null, 2) }],\n\t\t\t};\n\t\t},\n\t);\n\n\tdefineTool<{\n\t\tname: string;\n\t\tsubgraphName: string;\n\t\ttableName: string;\n\t\turl: string;\n\t\tformat?:\n\t\t\t| \"standard-webhooks\"\n\t\t\t| \"inngest\"\n\t\t\t| \"trigger\"\n\t\t\t| \"cloudflare\"\n\t\t\t| \"cloudevents\"\n\t\t\t| \"raw\";\n\t\truntime?: \"inngest\" | \"trigger\" | \"cloudflare\" | \"node\";\n\t\tfilter?: Record<string, unknown>;\n\t}>(\n\t\tserver,\n\t\t\"subscriptions_create\",\n\t\t\"Create a subscription. Returns `signingSecret` ONCE — forward it to the user so they can wire it into their receiver.\",\n\t\t{\n\t\t\tname: z.string().describe(\"Human-readable name, unique per account\"),\n\t\t\tsubgraphName: z.string().describe(\"Subgraph to subscribe to\"),\n\t\t\ttableName: z.string().describe(\"Table within the subgraph\"),\n\t\t\turl: z.string().describe(\"Webhook URL\"),\n\t\t\tformat: z\n\t\t\t\t.enum([\n\t\t\t\t\t\"standard-webhooks\",\n\t\t\t\t\t\"inngest\",\n\t\t\t\t\t\"trigger\",\n\t\t\t\t\t\"cloudflare\",\n\t\t\t\t\t\"cloudevents\",\n\t\t\t\t\t\"raw\",\n\t\t\t\t])\n\t\t\t\t.optional()\n\t\t\t\t.describe(\"Wire format (default standard-webhooks)\"),\n\t\t\truntime: z\n\t\t\t\t.enum([\"inngest\", \"trigger\", \"cloudflare\", \"node\"])\n\t\t\t\t.optional()\n\t\t\t\t.describe(\"Receiver runtime label (display only)\"),\n\t\t\tfilter: z\n\t\t\t\t.record(z.string(), z.unknown())\n\t\t\t\t.optional()\n\t\t\t\t.describe(\n\t\t\t\t\t'Scalar filter DSL, e.g. {\"amount\": {\"gte\": 100}, \"sender\": \"SP...\"}',\n\t\t\t\t),\n\t\t},\n\t\tasync (input) => {\n\t\t\tconst res = await clientProvider().subscriptions.create(\n\t\t\t\tinput as CreateSubscriptionRequest,\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: JSON.stringify(res, null, 2) }],\n\t\t\t};\n\t\t},\n\t);\n\n\tdefineTool<{\n\t\tid: string;\n\t\turl?: string;\n\t\tfilter?: Record<string, unknown>;\n\t\tformat?:\n\t\t\t| \"standard-webhooks\"\n\t\t\t| \"inngest\"\n\t\t\t| \"trigger\"\n\t\t\t| \"cloudflare\"\n\t\t\t| \"cloudevents\"\n\t\t\t| \"raw\";\n\t\truntime?: \"inngest\" | \"trigger\" | \"cloudflare\" | \"node\" | null;\n\t\tmaxRetries?: number;\n\t\ttimeoutMs?: number;\n\t\tconcurrency?: number;\n\t}>(\n\t\tserver,\n\t\t\"subscriptions_update\",\n\t\t\"Patch a subscription (url, filter, format, runtime, retry, timeout, concurrency).\",\n\t\t{\n\t\t\tid: z.string(),\n\t\t\turl: z.string().optional(),\n\t\t\tfilter: z.record(z.string(), z.unknown()).optional(),\n\t\t\tformat: z\n\t\t\t\t.enum([\n\t\t\t\t\t\"standard-webhooks\",\n\t\t\t\t\t\"inngest\",\n\t\t\t\t\t\"trigger\",\n\t\t\t\t\t\"cloudflare\",\n\t\t\t\t\t\"cloudevents\",\n\t\t\t\t\t\"raw\",\n\t\t\t\t])\n\t\t\t\t.optional(),\n\t\t\truntime: z\n\t\t\t\t.enum([\"inngest\", \"trigger\", \"cloudflare\", \"node\"])\n\t\t\t\t.nullable()\n\t\t\t\t.optional(),\n\t\t\tmaxRetries: z.number().int().min(0).optional(),\n\t\t\ttimeoutMs: z.number().int().min(100).optional(),\n\t\t\tconcurrency: z.number().int().min(1).optional(),\n\t\t},\n\t\tasync ({ id, ...patch }) => {\n\t\t\tconst res = await clientProvider().subscriptions.update(\n\t\t\t\tid,\n\t\t\t\tpatch as UpdateSubscriptionRequest,\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: JSON.stringify(res, null, 2) }],\n\t\t\t};\n\t\t},\n\t);\n\n\tdefineTool<{ id: string }>(\n\t\tserver,\n\t\t\"subscriptions_pause\",\n\t\t\"Pause a subscription. Pending rows remain queued until resumed.\",\n\t\t{ id: z.string() },\n\t\tasync ({ id }) => {\n\t\t\tconst res = await clientProvider().subscriptions.pause(id);\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: JSON.stringify(res, null, 2) }],\n\t\t\t};\n\t\t},\n\t);\n\n\tdefineTool<{ id: string }>(\n\t\tserver,\n\t\t\"subscriptions_resume\",\n\t\t\"Resume a paused or circuit-open subscription and reset circuit failures.\",\n\t\t{ id: z.string() },\n\t\tasync ({ id }) => {\n\t\t\tconst res = await clientProvider().subscriptions.resume(id);\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: JSON.stringify(res, null, 2) }],\n\t\t\t};\n\t\t},\n\t);\n\n\tdefineTool<{ id: string }>(\n\t\tserver,\n\t\t\"subscriptions_delete\",\n\t\t\"Delete a subscription. Pending outbox rows are cascade-deleted.\",\n\t\t{ id: z.string() },\n\t\tasync ({ id }) => {\n\t\t\tconst res = await clientProvider().subscriptions.delete(id);\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: JSON.stringify(res, null, 2) }],\n\t\t\t};\n\t\t},\n\t);\n\n\tdefineTool<{ id: string }>(\n\t\tserver,\n\t\t\"subscriptions_rotate_secret\",\n\t\t\"Rotate a subscription signing secret. Returns the new plaintext secret once.\",\n\t\t{ id: z.string() },\n\t\tasync ({ id }) => {\n\t\t\tconst res = await clientProvider().subscriptions.rotateSecret(id);\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: JSON.stringify(res, null, 2) }],\n\t\t\t};\n\t\t},\n\t);\n\n\tdefineTool<{ id: string; fromBlock: number; toBlock: number }>(\n\t\tserver,\n\t\t\"subscriptions_replay\",\n\t\t\"Replay a block range for a subscription. Replays run at 10% of batch capacity — use sparingly.\",\n\t\t{\n\t\t\tid: z.string(),\n\t\t\tfromBlock: z.number().int().nonnegative(),\n\t\t\ttoBlock: z.number().int().nonnegative(),\n\t\t},\n\t\tasync ({ id, fromBlock, toBlock }) => {\n\t\t\tconst res = await clientProvider().subscriptions.replay(id, {\n\t\t\t\tfromBlock,\n\t\t\t\ttoBlock,\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: JSON.stringify(res, null, 2) }],\n\t\t\t};\n\t\t},\n\t);\n\n\tdefineTool<{ id: string }>(\n\t\tserver,\n\t\t\"subscriptions_dead\",\n\t\t\"Return the last 100 dead-letter outbox rows for a subscription.\",\n\t\t{ id: z.string() },\n\t\tasync ({ id }) => {\n\t\t\tconst { data } = await clientProvider().subscriptions.dead(id);\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: JSON.stringify(data, null, 2) }],\n\t\t\t};\n\t\t},\n\t);\n\n\tdefineTool<{ id: string; outboxId: string }>(\n\t\tserver,\n\t\t\"subscriptions_requeue_dead\",\n\t\t\"Requeue one dead-letter outbox row for delivery retry.\",\n\t\t{\n\t\t\tid: z.string(),\n\t\t\toutboxId: z.string(),\n\t\t},\n\t\tasync ({ id, outboxId }) => {\n\t\t\tconst res = await clientProvider().subscriptions.requeueDead(\n\t\t\t\tid,\n\t\t\t\toutboxId,\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: JSON.stringify(res, null, 2) }],\n\t\t\t};\n\t\t},\n\t);\n\n\tdefineTool<{ id: string }>(\n\t\tserver,\n\t\t\"subscriptions_recent_deliveries\",\n\t\t\"Return the last 100 delivery attempts (attempt #, status code, duration, truncated response).\",\n\t\t{ id: z.string() },\n\t\tasync ({ id }) => {\n\t\t\tconst { data } =\n\t\t\t\tawait clientProvider().subscriptions.recentDeliveries(id);\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: JSON.stringify(data, null, 2) }],\n\t\t\t};\n\t\t},\n\t);\n}\n"
|
|
14
18
|
],
|
|
15
|
-
"mappings": ";AAAA;AACA;AACA;AACA;;;ACAA,IAAM,oBAAoB;AAAA,EACzB;AAAA,IACC,MAAM;AAAA,IACN,QAAQ,CAAC,UAAU,aAAa,aAAa,WAAW;AAAA,EACzD;AAAA,EACA,EAAE,MAAM,YAAY,QAAQ,CAAC,aAAa,WAAW,EAAE;AAAA,EACvD,EAAE,MAAM,YAAY,QAAQ,CAAC,UAAU,WAAW,EAAE;AAAA,EACpD,EAAE,MAAM,YAAY,QAAQ,CAAC,iBAAiB,WAAW,EAAE;AAAA,EAC3D;AAAA,IACC,MAAM;AAAA,IACN,QAAQ;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAAA,EACA,EAAE,MAAM,WAAW,QAAQ,CAAC,aAAa,mBAAmB,WAAW,EAAE;AAAA,EACzE,EAAE,MAAM,WAAW,QAAQ,CAAC,UAAU,mBAAmB,WAAW,EAAE;AAAA,EACtE;AAAA,IACC,MAAM;AAAA,IACN,QAAQ,CAAC,UAAU,aAAa,mBAAmB,SAAS;AAAA,EAC7D;AAAA,EACA,EAAE,MAAM,YAAY,QAAQ,CAAC,aAAa,mBAAmB,SAAS,EAAE;AAAA,EACxE,EAAE,MAAM,YAAY,QAAQ,CAAC,UAAU,mBAAmB,SAAS,EAAE;AAAA,EACrE,EAAE,MAAM,iBAAiB,QAAQ,CAAC,YAAY,UAAU,EAAE;AAAA,EAC1D,EAAE,MAAM,mBAAmB,QAAQ,CAAC,UAAU,EAAE;AAAA,EAChD,EAAE,MAAM,eAAe,QAAQ,CAAC,YAAY,SAAS,UAAU,EAAE;AAClE;AAEA,IAAM,eAAe;AAAA,EACpB;AAAA,IACC,MAAM;AAAA,IACN,SAAS;AAAA,IACT,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,SAAS;AAAA,IACT,aAAa;AAAA,EACd;AAAA,EACA,EAAE,MAAM,QAAQ,SAAS,QAAQ,aAAa,eAAe;AAAA,EAC7D;AAAA,IACC,MAAM;AAAA,IACN,SAAS;AAAA,IACT,aAAa;AAAA,EACd;AAAA,EACA,EAAE,MAAM,QAAQ,SAAS,WAAW,aAAa,gBAAgB;AAAA,EACjE,EAAE,MAAM,QAAQ,SAAS,SAAS,aAAa,sBAAsB;AAAA,EACrE;AAAA,IACC,SAAS,CAAC,YAAY,WAAW,QAAQ;AAAA,IACzC,aACC;AAAA,EACF;AACD;AAEO,SAAS,iBAAiB,CAAC,QAAmB;AAAA,EACpD,OAAO,SACN,WACA,yBACA,EAAE,aAAa,gDAAgD,GAC/D,aAAa;AAAA,IACZ,UAAU;AAAA,MACT;AAAA,QACC,KAAK;AAAA,QACL,UAAU;AAAA,QACV,MAAM,KAAK,UAAU,mBAAmB,MAAM,CAAC;AAAA,MAChD;AAAA,IACD;AAAA,EACD,EACD;AAAA,EAEA,OAAO,SACN,gBACA,8BACA,EAAE,aAAa,mDAAmD,GAClE,aAAa;AAAA,IACZ,UAAU;AAAA,MACT;AAAA,QACC,KAAK;AAAA,QACL,UAAU;AAAA,QACV,MAAM,KAAK,UAAU,cAAc,MAAM,CAAC;AAAA,MAC3C;AAAA,IACD;AAAA,EACD,EACD;AAAA;;;ACzFD;AAEA,IAAI,WAA+B;AAOnC,SAAS,UAAU,GAAuB;AAAA,EACzC,OAAO,QAAQ,IAAI;AAAA;AASb,SAAS,SAAS,GAAgB;AAAA,EACxC,IAAI,CAAC,UAAU;AAAA,IACd,MAAM,SAAS,WAAW;AAAA,IAC1B,MAAM,UAAU,QAAQ,IAAI;AAAA,IAC5B,WAAW,IAAI,YAAY;AAAA,SACtB,SAAS,EAAE,OAAO,IAAI,CAAC;AAAA,MAC3B,QAAQ;AAAA,SACJ,UAAU,EAAE,QAAQ,IAAI,CAAC;AAAA,IAC9B,CAAC;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAKR,IAAM,UACL,iDACA;AAGD,eAAsB,UAAa,CAClC,QACA,MACA,MACa;AAAA,EACb,MAAM,SAAS,WAAW;AAAA,EAC1B,MAAM,UACL,QAAQ,IAAI,uBAAuB;AAAA,EACpC,MAAM,MAAM,MAAM,MAAM,GAAG,UAAU,QAAQ;AAAA,IAC5C;AAAA,IACA,SAAS;AAAA,MACR,gBAAgB;AAAA,SACZ,SAAS,EAAE,eAAe,UAAU,SAAS,IAAI,CAAC;AAAA,IACvD;AAAA,IACA,MAAM,OAAO,KAAK,UAAU,IAAI,IAAI;AAAA,EACrC,CAAC;AAAA,EACD,IAAI,CAAC,IAAI,IAAI;AAAA,IACZ,MAAM,OAAO,MAAM,IAAI,KAAK,EAAE,MAAM,MAAM,EAAE;AAAA,IAC5C,MAAM,WAAW,CAAC,WAAW,IAAI,WAAW,OAAO,IAAI,WAAW;AAAA,IAClE,MAAM,OAAO,OACZ,IAAI,OAAO,QAAQ,QAAQ,IAAI,aAAa,WAAW,UAAU,GAAG,GACpE,EAAE,QAAQ,IAAI,OAAO,CACtB;AAAA,EACD;AAAA,EACA,IAAI,IAAI,WAAW;AAAA,IAAK;AAAA,EACxB,OAAO,IAAI,KAAK;AAAA;;;AC/DV,SAAS,qBAAqB,CAAC,GAKnC;AAAA,EACF,OAAO;AAAA,IACN,MAAM,EAAE;AAAA,IACR,QAAQ,EAAE;AAAA,IACV,QAAQ,MAAM,QAAQ,EAAE,MAAM,IAAI,EAAE,SAAS,OAAO,KAAK,EAAE,MAAM;AAAA,IACjE,oBAAoB,EAAE;AAAA,EACvB;AAAA;AAIM,SAAS,OAAU,CACzB,OACA,KACoD;AAAA,EACpD,OAAO;AAAA,IACN,OAAO,MAAM,MAAM,GAAG,GAAG;AAAA,IACzB,WAAW,MAAM,SAAS;AAAA,IAC1B,OAAO,MAAM;AAAA,EACd;AAAA;AAIM,SAAS,YAAY,CAC3B,MACA,SACwE;AAAA,EACxE,OAAO;AAAA,IACN,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,KAAK,UAAU,MAAM,MAAM,CAAC,EAAE,CAAC;AAAA,OAC3D,WAAW,EAAE,SAAS,KAAK;AAAA,EAChC;AAAA;;;AChBM,SAAS,UAAa,CAC5B,QACA,MACA,aACA,QACA,SACO;AAAA,EACP,MAAM,iBAAiB,OAAO,SAAiC;AAAA,IAC9D,IAAI;AAAA,MACH,OAAO,MAAM,QAAQ,IAAI;AAAA,MACxB,OAAO,KAAc;AAAA,MACtB,MAAM,UAAU,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,MAC/D,MAAM,SAEL,eAAe,SAAS,YAAY,MAAO,IAAY,SAAS;AAAA,MACjE,MAAM,OACL,WAAW,MACR,iBACA,WAAW,MACV,cACA,WAAW,MACV,iBACA,UAAU,MACT,iBACA;AAAA,MACP,OAAO;AAAA,QACN,SAAS;AAAA,UACR;AAAA,YACC,MAAM;AAAA,YACN,MAAM,KAAK,UAAU,EAAE,OAAO,EAAE,MAAM,QAAQ,QAAQ,EAAE,CAAC;AAAA,UAC1D;AAAA,QACD;AAAA,QACA,SAAS;AAAA,MACV;AAAA;AAAA;AAAA,EAGD,OAAO,KACP,MACA,aACA,QACA,cACD;AAAA;;;ACvDM,SAAS,oBAAoB,CAAC,QAAmB;AAAA,EACvD,WACC,QACA,kBACA,oDACA,CAAC,GACD,YAAY;AAAA,IACX,MAAM,SAAS,MAAM,WACpB,OACA,kBACD;AAAA,IACA,OAAO,aAAa,MAAM;AAAA,GAE5B;AAAA;;;ACjBD;AAEA;AAGA,IAAM,WACL,QAAQ,IAAI,uBAAuB;AAEpC,eAAe,QAAQ,CACtB,YACwD;AAAA,EACxD,MAAM,MAAM,MAAM,MAAM,GAAG,+BAA+B,kBAAkB;AAAA,IAC3E,QAAQ,YAAY,QAAQ,GAAM;AAAA,EACnC,CAAC;AAAA,EACD,IAAI,CAAC,IAAI,IAAI;AAAA,IACZ,IAAI,IAAI,WAAW;AAAA,MAClB,MAAM,IAAI,MAAM,uBAAuB,YAAY;AAAA,IACpD,MAAM,IAAI,MAAM,6BAA6B,IAAI,QAAQ;AAAA,EAC1D;AAAA,EACA,MAAM,MAAO,MAAM,IAAI,KAAK;AAAA,EAI5B,OAAO;AAAA,IACN,WAAW,IAAI,aAAa,CAAC;AAAA,IAC7B,MAAM,IAAI,QAAQ,CAAC;AAAA,EACpB;AAAA;AAGM,SAAS,qBAAqB,CAAC,QAAmB;AAAA,EACxD,WACC,QACA,0BACA,gGACA;AAAA,IACC,YAAY,EACV,OAAO,EACP,SACA,6FACD;AAAA,IACD,cAAc,EACZ,OAAO,EACP,SAAS,EACT,SAAS,wDAAwD;AAAA,EACpE,GACA,SAAS,YAAY,mBAAmB;AAAA,IACvC,QAAQ,WAAW,SAAS,MAAM,SAAS,UAAU;AAAA,IACrD,MAAM,OAAO,qBACZ,YACA,WACA,cACA,IACD;AAAA,IACA,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,KAAK,CAAC,EAAE;AAAA,GAEnD;AAAA,EAEA,WACC,QACA,qBACA,6FACA;AAAA,IACC,KAAK,EACH,OAAO,EACP,SAAS,gDAAgD;AAAA,IAC3D,YAAY,EAAE,OAAO,EAAE,SAAS,6BAA6B;AAAA,IAC7D,cAAc,EACZ,OAAO,EACP,SAAS,EACT,SAAS,4BAA4B;AAAA,EACxC,GACA,SAAS,KAAK,YAAY,mBAAmB;AAAA,IAC5C,IAAI;AAAA,IACJ,IAAI;AAAA,MACH,SAAS,KAAK,MAAM,GAAG;AAAA,MACtB,MAAM;AAAA,MACP,OAAO;AAAA,QACN,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,mBAAmB,CAAC;AAAA,QACpD,SAAS;AAAA,MACV;AAAA;AAAA,IAED,MAAM,OAAO,qBACZ,YACA,OAAO,aAAa,CAAC,GACrB,cACA,OAAO,QAAQ,CAAC,CACjB;AAAA,IACA,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,KAAK,CAAC,EAAE;AAAA,GAEnD;AAAA;;;ACzFD;AACA,cAAS;AAOF,SAAS,qBAAqB,CACpC,QACA,iBAAyC,WACxC;AAAA,EACD,WACC,QACA,kBACA,6DACA,CAAC,GACD,YAAY;AAAA,IACX,QAAQ,SAAS,MAAM,eAAe,EAAE,UAAU,KAAK;AAAA,IACvD,OAAO;AAAA,MACN,SAAS;AAAA,QACR;AAAA,UACC,MAAM;AAAA,UACN,MAAM,KAAK,UAAU,KAAK,IAAI,qBAAqB,GAAG,MAAM,CAAC;AAAA,QAC9D;AAAA,MACD;AAAA,IACD;AAAA,GAEF;AAAA,EAEA,WACC,QACA,iBACA,+EACA,EAAE,MAAM,GAAE,OAAO,EAAE,SAAS,eAAe,EAAE,GAC7C,SAAS,WAAW;AAAA,IACnB,MAAM,SAAS,MAAM,eAAe,EAAE,UAAU,IAAI,IAAI;AAAA,IACxD,OAAO;AAAA,MACN,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,KAAK,UAAU,QAAQ,MAAM,CAAC,EAAE,CAAC;AAAA,IAClE;AAAA,GAEF;AAAA,EAEA,WAKC,QACA,kBACA,yHACA;AAAA,IACC,MAAM,GAAE,OAAO,EAAE,SAAS,eAAe;AAAA,IACzC,QAAQ,GACN,KAAK,CAAC,SAAS,WAAW,UAAU,CAAC,EACrC,SAAS,EACT,SAAS,2CAA2C;AAAA,IACtD,WAAW,GACT,OAAO,EACP,SAAS,EACT,SAAS,qDAAqD;AAAA,EACjE,GACA,SAAS,MAAM,SAAS,SAAS,gBAAgB;AAAA,IAChD,MAAM,UAAU,YAAY,EAAE,UAAU,IAAI;AAAA,IAC5C,MAAM,OACL,WAAW,YACR,MAAM,eAAe,EAAE,UAAU,QAAQ,MAAM,OAAO,IACtD,WAAW,aACV,MAAM,eAAe,EAAE,UAAU,SAAS,MAAM,OAAO,IACvD,MAAM,eAAe,EAAE,UAAU,OAAO,MAAM,OAAO;AAAA,IAC1D,OAAO;AAAA,MACN,SAAS;AAAA,QACR;AAAA,UACC,MAAM;AAAA,UACN,MACC,OAAO,SAAS,WAAW,OAAO,KAAK,UAAU,MAAM,MAAM,CAAC;AAAA,QAChE;AAAA,MACD;AAAA,IACD;AAAA,GAEF;AAAA,EAEA,WAWC,QACA,mBACA,0MACA;AAAA,IACC,MAAM,GAAE,OAAO,EAAE,SAAS,eAAe;AAAA,IACzC,OAAO,GAAE,OAAO,EAAE,SAAS,YAAY;AAAA,IACvC,SAAS,GACP,OAAO,GAAE,OAAO,GAAG,GAAE,OAAO,CAAC,EAC7B,SAAS,EACT,SACA,kGACD;AAAA,IACD,MAAM,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS,mBAAmB;AAAA,IACxD,OAAO,GAAE,KAAK,CAAC,OAAO,MAAM,CAAC,EAAE,SAAS,EAAE,SAAS,YAAY;AAAA,IAC/D,OAAO,GACL,OAAO,EACP,IAAI,GAAG,EACP,SAAS,EACT,SAAS,gCAAgC;AAAA,IAC3C,QAAQ,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS,uBAAuB;AAAA,IAC9D,QAAQ,GACN,OAAO,EACP,SAAS,EACT,SACA,8DACD;AAAA,IACD,OAAO,GACL,QAAQ,EACR,SAAS,EACT,SAAS,2CAA2C;AAAA,EACvD,GACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,QACK;AAAA,IACL,IAAI,OAAO;AAAA,MACV,MAAM,UAAS,MAAM,eAAe,EAAE,UAAU,gBAC/C,MACA,OACA,EAAE,SAAS,MAAM,MAAM,CACxB;AAAA,MACA,OAAO;AAAA,QACN,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,KAAK,UAAU,SAAQ,MAAM,CAAC,EAAE,CAAC;AAAA,MAClE;AAAA,IACD;AAAA,IACA,MAAM,OAAO,MAAM,eAAe,EAAE,UAAU,WAAW,MAAM,OAAO;AAAA,MACrE;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO,SAAS;AAAA,MAChB;AAAA,MACA;AAAA,IACD,CAAC;AAAA,IACD,MAAM,MAAM,SAAS;AAAA,IACrB,MAAM,SAAS,QACd,MACA,MAAM,MAAM,MAAM,GACnB;AAAA,IACA,OAAO;AAAA,MACN,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,KAAK,UAAU,QAAQ,MAAM,CAAC,EAAE,CAAC;AAAA,IAClE;AAAA,GAEF;AAAA,EAEA,WACC,QACA,qBACA,mDACA;AAAA,IACC,MAAM,GAAE,OAAO,EAAE,SAAS,eAAe;AAAA,IACzC,WAAW,GACT,OAAO,EACP,SAAS,EACT,SAAS,qCAAqC;AAAA,IAChD,SAAS,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS,gCAAgC;AAAA,EACzE,GACA,SAAS,MAAM,WAAW,cAAc;AAAA,IACvC,MAAM,SAAS,MAAM,eAAe,EAAE,UAAU,QAAQ,MAAM;AAAA,MAC7D;AAAA,MACA;AAAA,IACD,CAAC;AAAA,IACD,OAAO;AAAA,MACN,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,KAAK,UAAU,QAAQ,MAAM,CAAC,EAAE,CAAC;AAAA,IAClE;AAAA,GAEF;AAAA,EAEA,WACC,QACA,oBACA,kCACA,EAAE,MAAM,GAAE,OAAO,EAAE,SAAS,eAAe,EAAE,GAC7C,SAAS,WAAW;AAAA,IACnB,MAAM,SAAS,MAAM,eAAe,EAAE,UAAU,OAAO,IAAI;AAAA,IAC3D,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,OAAO,QAAQ,CAAC,EAAE;AAAA,GAE7D;AAAA,EAEA,WACC,QACA,oBACA,uQACA;AAAA,IACC,MAAM,GACJ,OAAO,EACP,SAAS,2DAA2D;AAAA,IACtE,YAAY,GACV,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,SAAS,EACT,SAAS,oDAAoD;AAAA,EAChE,GACA,SAAS,MAAM,iBAAiB;AAAA,IAC/B,MAAM,UAAU,MAAM,mBAAmB,IAAI;AAAA,IAC7C,MAAM,SAAS,MAAM,eAAe,EAAE,UAAU,OAAO;AAAA,MACtD,MAAM,QAAQ;AAAA,MACd,SAAS,QAAQ;AAAA,MACjB,aAAa,QAAQ;AAAA,MACrB,SAAS,QAAQ;AAAA,MACjB,QAAQ,QAAQ;AAAA,MAChB,aAAa,QAAQ;AAAA,MACrB,YAAY;AAAA,SACR,eAAe,YAAY,EAAE,WAAW,IAAI,CAAC;AAAA,IAClD,CAAC;AAAA,IACD,OAAO;AAAA,MACN,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,KAAK,UAAU,QAAQ,MAAM,CAAC,EAAE,CAAC;AAAA,IAClE;AAAA,GAEF;AAAA,EAEA,WACC,QACA,yBACA,2NACA,EAAE,MAAM,GAAE,OAAO,EAAE,SAAS,eAAe,EAAE,GAC7C,SAAS,WAAW;AAAA,IACnB,MAAM,SAAS,MAAM,eAAe,EAAE,UAAU,UAAU,IAAI;AAAA,IAC9D,OAAO;AAAA,MACN,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,KAAK,UAAU,QAAQ,MAAM,CAAC,EAAE,CAAC;AAAA,IAClE;AAAA,GAEF;AAAA;;;AC9OD,cAAS;AAWF,SAAS,yBAAyB,CACxC,QACA,iBAA6C,WAC5C;AAAA,EACD,WACC,QACA,sBACA,wFACA,CAAC,GACD,YAAY;AAAA,IACX,QAAQ,SAAS,MAAM,eAAe,EAAE,cAAc,KAAK;AAAA,IAC3D,OAAO;AAAA,MACN,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,KAAK,UAAU,MAAM,MAAM,CAAC,EAAE,CAAC;AAAA,IAChE;AAAA,GAEF;AAAA,EAEA,WACC,QACA,qBACA,mFACA,EAAE,IAAI,GAAE,OAAO,EAAE,SAAS,iBAAiB,EAAE,GAC7C,SAAS,SAAS;AAAA,IACjB,MAAM,SAAS,MAAM,eAAe,EAAE,cAAc,IAAI,EAAE;AAAA,IAC1D,OAAO;AAAA,MACN,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,KAAK,UAAU,QAAQ,MAAM,CAAC,EAAE,CAAC;AAAA,IAClE;AAAA,GAEF;AAAA,EAEA,WAeC,QACA,wBACA,yHACA;AAAA,IACC,MAAM,GAAE,OAAO,EAAE,SAAS,yCAAyC;AAAA,IACnE,cAAc,GAAE,OAAO,EAAE,SAAS,0BAA0B;AAAA,IAC5D,WAAW,GAAE,OAAO,EAAE,SAAS,2BAA2B;AAAA,IAC1D,KAAK,GAAE,OAAO,EAAE,SAAS,aAAa;AAAA,IACtC,QAAQ,GACN,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC,EACA,SAAS,EACT,SAAS,yCAAyC;AAAA,IACpD,SAAS,GACP,KAAK,CAAC,WAAW,WAAW,cAAc,MAAM,CAAC,EACjD,SAAS,EACT,SAAS,uCAAuC;AAAA,IAClD,QAAQ,GACN,OAAO,GAAE,OAAO,GAAG,GAAE,QAAQ,CAAC,EAC9B,SAAS,EACT,SACA,qEACD;AAAA,EACF,GACA,OAAO,UAAU;AAAA,IAChB,MAAM,MAAM,MAAM,eAAe,EAAE,cAAc,OAChD,KACD;AAAA,IACA,OAAO;AAAA,MACN,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,KAAK,UAAU,KAAK,MAAM,CAAC,EAAE,CAAC;AAAA,IAC/D;AAAA,GAEF;AAAA,EAEA,WAgBC,QACA,wBACA,qFACA;AAAA,IACC,IAAI,GAAE,OAAO;AAAA,IACb,KAAK,GAAE,OAAO,EAAE,SAAS;AAAA,IACzB,QAAQ,GAAE,OAAO,GAAE,OAAO,GAAG,GAAE,QAAQ,CAAC,EAAE,SAAS;AAAA,IACnD,QAAQ,GACN,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC,EACA,SAAS;AAAA,IACX,SAAS,GACP,KAAK,CAAC,WAAW,WAAW,cAAc,MAAM,CAAC,EACjD,SAAS,EACT,SAAS;AAAA,IACX,YAAY,GAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,IAC7C,WAAW,GAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,IAC9C,aAAa,GAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EAC/C,GACA,SAAS,OAAO,YAAY;AAAA,IAC3B,MAAM,MAAM,MAAM,eAAe,EAAE,cAAc,OAChD,IACA,KACD;AAAA,IACA,OAAO;AAAA,MACN,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,KAAK,UAAU,KAAK,MAAM,CAAC,EAAE,CAAC;AAAA,IAC/D;AAAA,GAEF;AAAA,EAEA,WACC,QACA,uBACA,mEACA,EAAE,IAAI,GAAE,OAAO,EAAE,GACjB,SAAS,SAAS;AAAA,IACjB,MAAM,MAAM,MAAM,eAAe,EAAE,cAAc,MAAM,EAAE;AAAA,IACzD,OAAO;AAAA,MACN,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,KAAK,UAAU,KAAK,MAAM,CAAC,EAAE,CAAC;AAAA,IAC/D;AAAA,GAEF;AAAA,EAEA,WACC,QACA,wBACA,4EACA,EAAE,IAAI,GAAE,OAAO,EAAE,GACjB,SAAS,SAAS;AAAA,IACjB,MAAM,MAAM,MAAM,eAAe,EAAE,cAAc,OAAO,EAAE;AAAA,IAC1D,OAAO;AAAA,MACN,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,KAAK,UAAU,KAAK,MAAM,CAAC,EAAE,CAAC;AAAA,IAC/D;AAAA,GAEF;AAAA,EAEA,WACC,QACA,wBACA,mEACA,EAAE,IAAI,GAAE,OAAO,EAAE,GACjB,SAAS,SAAS;AAAA,IACjB,MAAM,MAAM,MAAM,eAAe,EAAE,cAAc,OAAO,EAAE;AAAA,IAC1D,OAAO;AAAA,MACN,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,KAAK,UAAU,KAAK,MAAM,CAAC,EAAE,CAAC;AAAA,IAC/D;AAAA,GAEF;AAAA,EAEA,WACC,QACA,+BACA,gFACA,EAAE,IAAI,GAAE,OAAO,EAAE,GACjB,SAAS,SAAS;AAAA,IACjB,MAAM,MAAM,MAAM,eAAe,EAAE,cAAc,aAAa,EAAE;AAAA,IAChE,OAAO;AAAA,MACN,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,KAAK,UAAU,KAAK,MAAM,CAAC,EAAE,CAAC;AAAA,IAC/D;AAAA,GAEF;AAAA,EAEA,WACC,QACA,wBACA,kGACA;AAAA,IACC,IAAI,GAAE,OAAO;AAAA,IACb,WAAW,GAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,IACxC,SAAS,GAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,EACvC,GACA,SAAS,IAAI,WAAW,cAAc;AAAA,IACrC,MAAM,MAAM,MAAM,eAAe,EAAE,cAAc,OAAO,IAAI;AAAA,MAC3D;AAAA,MACA;AAAA,IACD,CAAC;AAAA,IACD,OAAO;AAAA,MACN,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,KAAK,UAAU,KAAK,MAAM,CAAC,EAAE,CAAC;AAAA,IAC/D;AAAA,GAEF;AAAA,EAEA,WACC,QACA,sBACA,mEACA,EAAE,IAAI,GAAE,OAAO,EAAE,GACjB,SAAS,SAAS;AAAA,IACjB,QAAQ,SAAS,MAAM,eAAe,EAAE,cAAc,KAAK,EAAE;AAAA,IAC7D,OAAO;AAAA,MACN,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,KAAK,UAAU,MAAM,MAAM,CAAC,EAAE,CAAC;AAAA,IAChE;AAAA,GAEF;AAAA,EAEA,WACC,QACA,8BACA,0DACA;AAAA,IACC,IAAI,GAAE,OAAO;AAAA,IACb,UAAU,GAAE,OAAO;AAAA,EACpB,GACA,SAAS,IAAI,eAAe;AAAA,IAC3B,MAAM,MAAM,MAAM,eAAe,EAAE,cAAc,YAChD,IACA,QACD;AAAA,IACA,OAAO;AAAA,MACN,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,KAAK,UAAU,KAAK,MAAM,CAAC,EAAE,CAAC;AAAA,IAC/D;AAAA,GAEF;AAAA,EAEA,WACC,QACA,mCACA,iGACA,EAAE,IAAI,GAAE,OAAO,EAAE,GACjB,SAAS,SAAS;AAAA,IACjB,QAAQ,SACP,MAAM,eAAe,EAAE,cAAc,iBAAiB,EAAE;AAAA,IACzD,OAAO;AAAA,MACN,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,KAAK,UAAU,MAAM,MAAM,CAAC,EAAE,CAAC;AAAA,IAChE;AAAA,GAEF;AAAA;;;ARnQD,IAAM,aAAY,QAAQ,cAAc,YAAY,GAAG,CAAC;AACxD,IAAM,MAAM,KAAK,MAChB,aAAa,KAAK,YAAW,iBAAiB,GAAG,OAAO,CACzD;AAEO,SAAS,YAAY,GAAc;AAAA,EACzC,MAAM,SAAS,IAAI,UAAU;AAAA,IAC5B,MAAM;AAAA,IACN,SAAS,IAAI;AAAA,EACd,CAAC;AAAA,EAED,sBAAsB,MAAM;AAAA,EAC5B,sBAAsB,MAAM;AAAA,EAC5B,0BAA0B,MAAM;AAAA,EAChC,qBAAqB,MAAM;AAAA,EAC3B,kBAAkB,MAAM;AAAA,EAExB,OAAO;AAAA;",
|
|
16
|
-
"debugId": "
|
|
19
|
+
"mappings": "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",
|
|
20
|
+
"debugId": "BA0BE1DE0E196D9164756E2164756E21",
|
|
17
21
|
"names": []
|
|
18
22
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@secondlayer/mcp",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.1.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
39
39
|
"@secondlayer/bundler": "^0.3.7",
|
|
40
40
|
"@secondlayer/scaffold": "^1.0.6",
|
|
41
|
-
"@secondlayer/sdk": "^6.
|
|
41
|
+
"@secondlayer/sdk": "^6.2.1",
|
|
42
42
|
"zod": "^4.3.6"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|