@oneie/mcp 0.1.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 ADDED
@@ -0,0 +1,130 @@
1
+ # @oneie/mcp
2
+
3
+ MCP server for the ONE substrate — 12 substrate verbs + 3 discovery tools.
4
+
5
+ Connects Claude Code, Cursor, Windsurf, and any MCP client to a live ONE instance via stdio.
6
+
7
+ ## Install
8
+
9
+ ```bash
10
+ npm install -g @oneie/mcp
11
+ # or run without installing:
12
+ npx @oneie/mcp
13
+ ```
14
+
15
+ ## Configure in Claude Code
16
+
17
+ Add to your `.claude/settings.json`:
18
+
19
+ ```json
20
+ {
21
+ "mcpServers": {
22
+ "oneie": {
23
+ "command": "npx",
24
+ "args": ["@oneie/mcp"],
25
+ "env": {
26
+ "ONEIE_API_URL": "http://localhost:4321",
27
+ "ONEIE_API_KEY": "your-key-optional"
28
+ }
29
+ }
30
+ }
31
+ }
32
+ ```
33
+
34
+ Or point at production:
35
+
36
+ ```json
37
+ {
38
+ "mcpServers": {
39
+ "oneie": {
40
+ "command": "npx",
41
+ "args": ["@oneie/mcp"],
42
+ "env": {
43
+ "ONEIE_API_URL": "https://api.one.ie"
44
+ }
45
+ }
46
+ }
47
+ }
48
+ ```
49
+
50
+ ## Tools
51
+
52
+ ### Substrate Verbs
53
+
54
+ | Tool | Loop | What |
55
+ |------|------|------|
56
+ | `signal` | L1 | Emit a signal to a unit |
57
+ | `ask` | L1 | Signal + wait for outcome (result \| timeout \| dissolved) |
58
+ | `mark` | L2 | Strengthen a path edge |
59
+ | `warn` | L2 | Raise resistance on a path edge |
60
+ | `fade` | L3 | Asymmetric decay of all paths |
61
+ | `select` | L1 | Probabilistic next unit (pheromone-weighted) |
62
+ | `recall` | L6 | Query hypotheses from the brain |
63
+ | `reveal` | L6 | Full memory card for a uid |
64
+ | `forget` | — | GDPR erasure of all records for a uid |
65
+ | `frontier` | L7 | Unexplored tag clusters for a uid |
66
+ | `know` | L6 | Promote highways → permanent hypotheses |
67
+ | `highways` | L2/L6 | Top weighted paths (proven routes) |
68
+
69
+ ### Discovery
70
+
71
+ | Tool | What |
72
+ |------|------|
73
+ | `scaffold_agent` | Create an agent from a preset template |
74
+ | `list_agents` | List all available agent presets |
75
+ | `get_agent` | Get a preset by name |
76
+
77
+ ## Environment Variables
78
+
79
+ | Variable | Default | Purpose |
80
+ |----------|---------|---------|
81
+ | `ONEIE_API_URL` | `https://api.one.ie` | Substrate API base URL |
82
+ | `ONEIE_API_KEY` | — | Bearer token for authenticated endpoints |
83
+
84
+ ## Programmatic Use
85
+
86
+ ```typescript
87
+ import { createOneRouter, serve } from "@oneie/mcp";
88
+
89
+ const router = createOneRouter();
90
+ await serve(router, { name: "oneie", version: "0.1.0" });
91
+ ```
92
+
93
+ Add custom tools:
94
+
95
+ ```typescript
96
+ import { createRouter, serve, substrateTools } from "@oneie/mcp";
97
+
98
+ const router = createRouter();
99
+ for (const tool of substrateTools()) router.register(tool);
100
+ router.register({
101
+ name: "my_tool",
102
+ description: "Custom tool",
103
+ inputSchema: { type: "object", properties: { msg: { type: "string" } }, required: ["msg"] },
104
+ handler: async (args) => ({ echo: args.msg }),
105
+ });
106
+ await serve(router);
107
+ ```
108
+
109
+ ## License
110
+
111
+ [one.ie/free-license](https://one.ie/free-license)
112
+
113
+ ## Telemetry
114
+
115
+ `@oneie/mcp` sends anonymous usage signals to the ONE substrate to improve routing quality.
116
+
117
+ **What we send:** package version, method name, outcome type, anonymous session ID (hex hash — no PII), call latency.
118
+
119
+ **What we never send:** your API key, user IDs, email addresses, file paths, or any personally identifiable information.
120
+
121
+ **Opt out:**
122
+ ```bash
123
+ # Environment variable (per-session)
124
+ ONEIE_TELEMETRY_DISABLE=1 node your-script.js
125
+
126
+ # Permanent opt-out
127
+ echo '{"telemetry":false}' > ~/.oneie/config.json
128
+ ```
129
+
130
+ When opt-out is active, `oneie --version` prints `telemetry: disabled`.
package/dist/env.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ export interface McpEnv {
2
+ apiKey: string | undefined;
3
+ baseUrl: string;
4
+ }
5
+ export declare function readEnv(): McpEnv;
package/dist/env.js ADDED
@@ -0,0 +1,7 @@
1
+ export function readEnv() {
2
+ return {
3
+ apiKey: process.env.ONEIE_API_KEY ?? process.env.ONE_API_KEY,
4
+ baseUrl: process.env.ONEIE_API_URL ?? "https://api.one.ie",
5
+ };
6
+ }
7
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,OAAO;IACrB,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW;QAC5D,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,oBAAoB;KAC3D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env node
2
+ export { createRouter, serve } from "./serve.js";
3
+ export { readEnv } from "./env.js";
4
+ export type { McpTool, McpRouter } from "./serve.js";
5
+ export { substrateTools } from "./tools/substrate.js";
6
+ export { discoveryTools } from "./tools/discovery.js";
7
+ export declare const MCP_VERSION = "0.1.0";
8
+ export declare const MCP_TOOLS: {
9
+ substrate: readonly ["signal", "ask", "mark", "warn", "fade", "select", "recall", "reveal", "forget", "frontier", "know", "highways"];
10
+ discovery: readonly ["scaffold_agent", "list_agents", "get_agent"];
11
+ };
12
+ export declare function createOneRouter(): import("./serve.js").McpRouter;
package/dist/index.js ADDED
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env node
2
+ import { createRouter, serve } from "./serve.js";
3
+ import { substrateTools } from "./tools/substrate.js";
4
+ import { discoveryTools } from "./tools/discovery.js";
5
+ export { createRouter, serve } from "./serve.js";
6
+ export { readEnv } from "./env.js";
7
+ export { substrateTools } from "./tools/substrate.js";
8
+ export { discoveryTools } from "./tools/discovery.js";
9
+ export const MCP_VERSION = "0.1.0";
10
+ export const MCP_TOOLS = {
11
+ substrate: ["signal", "ask", "mark", "warn", "fade", "select", "recall", "reveal", "forget", "frontier", "know", "highways"],
12
+ discovery: ["scaffold_agent", "list_agents", "get_agent"],
13
+ };
14
+ export function createOneRouter() {
15
+ const router = createRouter();
16
+ for (const tool of [...substrateTools(), ...discoveryTools()]) {
17
+ router.register(tool);
18
+ }
19
+ return router;
20
+ }
21
+ if (import.meta.url === `file://${process.argv[1]}`) {
22
+ const router = createOneRouter();
23
+ serve(router, { name: "oneie", version: MCP_VERSION }).catch((err) => {
24
+ process.stderr.write(`oneie-mcp: ${err}\n`);
25
+ process.exit(1);
26
+ });
27
+ }
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC;AACnC,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,SAAS,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,CAAU;IACrI,SAAS,EAAE,CAAC,gBAAgB,EAAE,aAAa,EAAE,WAAW,CAAU;CACnE,CAAC;AAEF,MAAM,UAAU,eAAe;IAC7B,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,cAAc,EAAE,EAAE,GAAG,cAAc,EAAE,CAAC,EAAE,CAAC;QAC9D,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACpD,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACnE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { readEnv } from "./env.js";
2
+ export interface McpTool {
3
+ name: string;
4
+ description: string;
5
+ inputSchema: Record<string, unknown>;
6
+ handler: (args: Record<string, unknown>, env: ReturnType<typeof readEnv>) => Promise<unknown>;
7
+ }
8
+ export interface McpRouter {
9
+ tools: Map<string, McpTool>;
10
+ register(tool: McpTool): void;
11
+ call(name: string, args: Record<string, unknown>): Promise<unknown>;
12
+ }
13
+ export declare function createRouter(): McpRouter;
14
+ /** Start an MCP stdio server backed by the given router. */
15
+ export declare function serve(router: McpRouter, opts?: {
16
+ name?: string;
17
+ version?: string;
18
+ }): Promise<void>;
package/dist/serve.js ADDED
@@ -0,0 +1,49 @@
1
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
2
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
+ import { ListToolsRequestSchema, CallToolRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
4
+ import { readEnv } from "./env.js";
5
+ export function createRouter() {
6
+ const tools = new Map();
7
+ const env = readEnv();
8
+ return {
9
+ tools,
10
+ register(tool) {
11
+ tools.set(tool.name, tool);
12
+ },
13
+ async call(name, args) {
14
+ const tool = tools.get(name);
15
+ if (!tool)
16
+ throw new Error(`unknown tool: ${name}`);
17
+ return tool.handler(args ?? {}, env);
18
+ },
19
+ };
20
+ }
21
+ /** Start an MCP stdio server backed by the given router. */
22
+ export async function serve(router, opts) {
23
+ const server = new Server({ name: opts?.name ?? "oneie", version: opts?.version ?? "0.1.0" }, { capabilities: { tools: {} } });
24
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
25
+ tools: Array.from(router.tools.values()).map((t) => ({
26
+ name: t.name,
27
+ description: t.description,
28
+ inputSchema: t.inputSchema,
29
+ })),
30
+ }));
31
+ server.setRequestHandler(CallToolRequestSchema, async (req) => {
32
+ const { name, arguments: args } = req.params;
33
+ try {
34
+ const result = await router.call(name, args ?? {});
35
+ return {
36
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
37
+ };
38
+ }
39
+ catch (err) {
40
+ return {
41
+ content: [{ type: "text", text: JSON.stringify({ error: String(err) }) }],
42
+ isError: true,
43
+ };
44
+ }
45
+ });
46
+ const transport = new StdioServerTransport();
47
+ await server.connect(transport);
48
+ }
49
+ //# sourceMappingURL=serve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAenC,MAAM,UAAU,YAAY;IAC1B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAmB,CAAC;IACzC,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IACtB,OAAO;QACL,KAAK;QACL,QAAQ,CAAC,IAAI;YACX,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7B,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI;YACnB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,4DAA4D;AAC5D,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,MAAiB,EAAE,IAA0C;IACvF,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,OAAO,EAAE,EAClE,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAChC,CAAC;IAEF,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QAC5D,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACnD,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;SAC3B,CAAC,CAAC;KACJ,CAAC,CAAC,CAAC;IAEJ,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAC5D,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC7C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,EAAG,IAAgC,IAAI,EAAE,CAAC,CAAC;YAChF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC5E,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBAClF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const sessionId: string;
2
+ export declare function emit(tool: string, tags?: string[], content?: Record<string, unknown>): void;
@@ -0,0 +1,57 @@
1
+ import { createHash, randomBytes } from "node:crypto";
2
+ import { readFileSync } from "node:fs";
3
+ import { join } from "node:path";
4
+ const DISABLE_KEY = "ONEIE_TELEMETRY_DISABLE";
5
+ const ENDPOINT = "https://api.one.ie/api/signal";
6
+ const RATE_LIMIT = 100;
7
+ const RATE_WINDOW_MS = 3_600_000;
8
+ let tokenCount = 0;
9
+ let windowStart = Date.now();
10
+ export const sessionId = createHash("sha256")
11
+ .update(randomBytes(16))
12
+ .digest("hex")
13
+ .slice(0, 16);
14
+ function isEnabled() {
15
+ if (typeof process === "undefined")
16
+ return false;
17
+ if (process.env[DISABLE_KEY])
18
+ return false;
19
+ try {
20
+ const cfg = JSON.parse(readFileSync(join(process.env["HOME"] ?? "~", ".oneie", "config.json"), "utf8"));
21
+ if (cfg["telemetry"] === false)
22
+ return false;
23
+ }
24
+ catch {
25
+ // Config file absent — default to enabled
26
+ }
27
+ return true;
28
+ }
29
+ function consume() {
30
+ const now = Date.now();
31
+ if (now - windowStart > RATE_WINDOW_MS) {
32
+ tokenCount = 0;
33
+ windowStart = now;
34
+ }
35
+ if (tokenCount >= RATE_LIMIT)
36
+ return false;
37
+ tokenCount++;
38
+ return true;
39
+ }
40
+ export function emit(tool, tags = [], content) {
41
+ if (!isEnabled() || !consume())
42
+ return;
43
+ void fetch(ENDPOINT, {
44
+ method: "POST",
45
+ headers: { "Content-Type": "application/json" },
46
+ body: JSON.stringify({
47
+ sender: `toolkit:${sessionId}`,
48
+ receiver: `toolkit:mcp:${tool}`,
49
+ data: JSON.stringify({
50
+ tags: ["telemetry", "mcp", tool, ...tags],
51
+ weight: 1,
52
+ content: { id: sessionId, ...content },
53
+ }),
54
+ }),
55
+ }).catch(() => undefined);
56
+ }
57
+ //# sourceMappingURL=telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,WAAW,GAAG,yBAAyB,CAAC;AAC9C,MAAM,QAAQ,GAAG,+BAA+B,CAAC;AACjD,MAAM,UAAU,GAAG,GAAG,CAAC;AACvB,MAAM,cAAc,GAAG,SAAS,CAAC;AAEjC,IAAI,UAAU,GAAG,CAAC,CAAC;AACnB,IAAI,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC7B,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC;KAC1C,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;KACvB,MAAM,CAAC,KAAK,CAAC;KACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAEhB,SAAS,SAAS;IAChB,IAAI,OAAO,OAAO,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IACjD,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CACrD,CAAC;QAC7B,IAAI,GAAG,CAAC,WAAW,CAAC,KAAK,KAAK;YAAE,OAAO,KAAK,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,0CAA0C;IAC5C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,OAAO;IACd,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,IAAI,GAAG,GAAG,WAAW,GAAG,cAAc,EAAE,CAAC;QACvC,UAAU,GAAG,CAAC,CAAC;QACf,WAAW,GAAG,GAAG,CAAC;IACpB,CAAC;IACD,IAAI,UAAU,IAAI,UAAU;QAAE,OAAO,KAAK,CAAC;IAC3C,UAAU,EAAE,CAAC;IACb,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,IAAI,CAClB,IAAY,EACZ,OAAiB,EAAE,EACnB,OAAiC;IAEjC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE;QAAE,OAAO;IACvC,KAAK,KAAK,CAAC,QAAQ,EAAE;QACnB,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,MAAM,EAAE,WAAW,SAAS,EAAE;YAC9B,QAAQ,EAAE,eAAe,IAAI,EAAE;YAC/B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;gBACzC,MAAM,EAAE,CAAC;gBACT,OAAO,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE;aACvC,CAAC;SACH,CAAC;KACH,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { McpTool } from "../serve.js";
2
+ export declare function discoveryTools(): McpTool[];
@@ -0,0 +1,39 @@
1
+ export function discoveryTools() {
2
+ return [
3
+ {
4
+ name: "scaffold_agent",
5
+ description: "Scaffold an agent markdown file from a preset.",
6
+ inputSchema: {
7
+ type: "object",
8
+ properties: { preset: { type: "string" }, name: { type: "string" }, group: { type: "string" } },
9
+ required: ["preset", "name"],
10
+ },
11
+ handler: async (args) => {
12
+ const tpl = await import("@oneie/templates");
13
+ const preset = tpl.getPreset(String(args.preset));
14
+ if (!preset)
15
+ throw new Error(`unknown preset: ${args.preset}`);
16
+ return tpl.generate({ name: String(args.name), preset, group: args.group });
17
+ },
18
+ },
19
+ {
20
+ name: "list_agents",
21
+ description: "List all registered templates/presets.",
22
+ inputSchema: { type: "object", properties: {} },
23
+ handler: async () => {
24
+ const tpl = await import("@oneie/templates");
25
+ return tpl.listPresets();
26
+ },
27
+ },
28
+ {
29
+ name: "get_agent",
30
+ description: "Get a preset by name.",
31
+ inputSchema: { type: "object", properties: { name: { type: "string" } }, required: ["name"] },
32
+ handler: async (args) => {
33
+ const tpl = await import("@oneie/templates");
34
+ return tpl.getPreset(String(args.name)) ?? null;
35
+ },
36
+ },
37
+ ];
38
+ }
39
+ //# sourceMappingURL=discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/tools/discovery.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,cAAc;IAC5B,OAAO;QACL;YACE,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,gDAAgD;YAC7D,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;gBAC/F,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;aAC7B;YACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACtB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;gBAC7C,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBAClD,IAAI,CAAC,MAAM;oBAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC/D,OAAO,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAA2B,EAAE,CAAC,CAAC;YACpG,CAAC;SACF;QACD;YACE,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,wCAAwC;YACrD,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;YAC/C,OAAO,EAAE,KAAK,IAAI,EAAE;gBAClB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;gBAC7C,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC;YAC3B,CAAC;SACF;QACD;YACE,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,uBAAuB;YACpC,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE;YAC7F,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACtB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;gBAC7C,OAAO,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC;YAClD,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { McpTool } from "../serve.js";
2
+ export declare function substrateTools(): McpTool[];
@@ -0,0 +1,115 @@
1
+ async function apiCall(baseUrl, apiKey, path, init = {}) {
2
+ const headers = new Headers(init.headers);
3
+ headers.set("Accept", "application/json");
4
+ if (init.body && !headers.has("Content-Type"))
5
+ headers.set("Content-Type", "application/json");
6
+ if (apiKey)
7
+ headers.set("Authorization", `Bearer ${apiKey}`);
8
+ const res = await fetch(`${baseUrl.replace(/\/$/, "")}${path}`, { ...init, headers });
9
+ if (!res.ok)
10
+ throw new Error(`${init.method ?? "GET"} ${path} → ${res.status}`);
11
+ if (res.status === 204)
12
+ return null;
13
+ const ct = res.headers.get("content-type") ?? "";
14
+ return ct.includes("json") ? res.json() : res.text();
15
+ }
16
+ export function substrateTools() {
17
+ return [
18
+ {
19
+ name: "signal",
20
+ description: "Emit a signal into the substrate.",
21
+ inputSchema: { type: "object", properties: { receiver: { type: "string" }, data: {}, sender: { type: "string" } }, required: ["receiver"] },
22
+ handler: async (args, env) => apiCall(env.baseUrl, env.apiKey, "/api/signal", {
23
+ method: "POST",
24
+ body: JSON.stringify({ sender: args.sender ?? "mcp", receiver: args.receiver, data: args.data }),
25
+ }),
26
+ },
27
+ {
28
+ name: "ask",
29
+ description: "Signal + wait for outcome (result | timeout | dissolved | failure).",
30
+ inputSchema: { type: "object", properties: { receiver: { type: "string" }, data: {}, timeout: { type: "number" } }, required: ["receiver"] },
31
+ handler: async (args, env) => apiCall(env.baseUrl, env.apiKey, "/api/ask", {
32
+ method: "POST",
33
+ body: JSON.stringify({ receiver: args.receiver, data: args.data, timeout: args.timeout, from: "mcp" }),
34
+ }),
35
+ },
36
+ {
37
+ name: "mark",
38
+ description: "Strengthen a path.",
39
+ inputSchema: { type: "object", properties: { edge: { type: "string" }, strength: { type: "number" } }, required: ["edge"] },
40
+ handler: async (args, env) => apiCall(env.baseUrl, env.apiKey, "/api/loop/mark-dims", {
41
+ method: "POST",
42
+ body: JSON.stringify({ edge: args.edge, strength: args.strength ?? 1, source: "mcp" }),
43
+ }),
44
+ },
45
+ {
46
+ name: "warn",
47
+ description: "Raise resistance on a path.",
48
+ inputSchema: { type: "object", properties: { edge: { type: "string" }, strength: { type: "number" } }, required: ["edge"] },
49
+ handler: async (args, env) => apiCall(env.baseUrl, env.apiKey, "/api/loop/mark-dims", {
50
+ method: "POST",
51
+ body: JSON.stringify({ edge: args.edge, strength: -Math.abs(args.strength ?? 1), source: "mcp" }),
52
+ }),
53
+ },
54
+ {
55
+ name: "fade",
56
+ description: "Asymmetric decay of all paths.",
57
+ inputSchema: { type: "object", properties: { rate: { type: "number" } } },
58
+ handler: async (args, env) => apiCall(env.baseUrl, env.apiKey, `/api/decay-cycle?rate=${args.rate ?? 0.05}`, { method: "POST" }),
59
+ },
60
+ {
61
+ name: "select",
62
+ description: "Probabilistic path selection (pheromone-weighted).",
63
+ inputSchema: { type: "object", properties: { type: { type: "string" }, sensitivity: { type: "number" } } },
64
+ handler: async (args, env) => {
65
+ const q = new URLSearchParams();
66
+ if (args.type)
67
+ q.set("type", String(args.type));
68
+ q.set("sensitivity", String(args.sensitivity ?? 0.5));
69
+ return apiCall(env.baseUrl, env.apiKey, `/api/loop/stage?${q}`);
70
+ },
71
+ },
72
+ {
73
+ name: "recall",
74
+ description: "Query hypotheses from the brain.",
75
+ inputSchema: { type: "object", properties: { subject: { type: "string" } } },
76
+ handler: async (args, env) => {
77
+ const p = args.subject
78
+ ? `/api/hypotheses?subject=${encodeURIComponent(String(args.subject))}`
79
+ : "/api/hypotheses";
80
+ return apiCall(env.baseUrl, env.apiKey, p);
81
+ },
82
+ },
83
+ {
84
+ name: "reveal",
85
+ description: "Full memory card for a uid.",
86
+ inputSchema: { type: "object", properties: { uid: { type: "string" } }, required: ["uid"] },
87
+ handler: async (args, env) => apiCall(env.baseUrl, env.apiKey, `/api/memory/reveal/${encodeURIComponent(String(args.uid))}`),
88
+ },
89
+ {
90
+ name: "forget",
91
+ description: "GDPR erasure of a uid.",
92
+ inputSchema: { type: "object", properties: { uid: { type: "string" } }, required: ["uid"] },
93
+ handler: async (args, env) => apiCall(env.baseUrl, env.apiKey, `/api/memory/forget/${encodeURIComponent(String(args.uid))}`, { method: "DELETE" }),
94
+ },
95
+ {
96
+ name: "frontier",
97
+ description: "Unexplored tag clusters for a uid.",
98
+ inputSchema: { type: "object", properties: { uid: { type: "string" } }, required: ["uid"] },
99
+ handler: async (args, env) => apiCall(env.baseUrl, env.apiKey, `/api/memory/frontier/${encodeURIComponent(String(args.uid))}`),
100
+ },
101
+ {
102
+ name: "know",
103
+ description: "Promote highways to hypotheses (L6 learning).",
104
+ inputSchema: { type: "object", properties: {} },
105
+ handler: async (_args, env) => apiCall(env.baseUrl, env.apiKey, "/api/tick?loops=L6", { method: "POST" }).catch(() => apiCall(env.baseUrl, env.apiKey, "/api/hypotheses")),
106
+ },
107
+ {
108
+ name: "highways",
109
+ description: "Top weighted paths (proven routes).",
110
+ inputSchema: { type: "object", properties: { limit: { type: "number" } } },
111
+ handler: async (args, env) => apiCall(env.baseUrl, env.apiKey, `/api/loop/highways?limit=${args.limit ?? 20}`).catch(() => apiCall(env.baseUrl, env.apiKey, `/api/export/highways?limit=${args.limit ?? 20}`)),
112
+ },
113
+ ];
114
+ }
115
+ //# sourceMappingURL=substrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"substrate.js","sourceRoot":"","sources":["../../src/tools/substrate.ts"],"names":[],"mappings":"AAEA,KAAK,UAAU,OAAO,CAAC,OAAe,EAAE,MAA0B,EAAE,IAAY,EAAE,OAAoB,EAAE;IACtG,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;IAC1C,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;IAC/F,IAAI,MAAM;QAAE,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,MAAM,EAAE,CAAC,CAAC;IAC7D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACtF,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,IAAI,IAAI,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAChF,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IACjD,OAAO,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO;QACL;YACE,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,mCAAmC;YAChD,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE;YAC3I,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAC3B,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE;gBAC9C,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;aACjG,CAAC;SACL;QACD;YACE,IAAI,EAAE,KAAK;YACX,WAAW,EAAE,qEAAqE;YAClF,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE;YAC5I,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAC3B,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE;gBAC3C,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;aACvG,CAAC;SACL;QACD;YACE,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,oBAAoB;YACjC,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE;YAC3H,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAC3B,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,EAAE;gBACtD,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;aACvF,CAAC;SACL;QACD;YACE,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,6BAA6B;YAC1C,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE;YAC3H,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAC3B,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,EAAE;gBACtD,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,GAAG,CAAE,IAAI,CAAC,QAAmB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;aAC9G,CAAC;SACL;QACD;YACE,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,gCAAgC;YAC7C,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;YACzE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAC3B,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,yBAAyB,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;SACrG;QACD;YACE,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,oDAAoD;YACjE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;YAC1G,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;gBAC3B,MAAM,CAAC,GAAG,IAAI,eAAe,EAAE,CAAC;gBAChC,IAAI,IAAI,CAAC,IAAI;oBAAE,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBAChD,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC,CAAC,CAAC;gBACtD,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAAE,CAAC,CAAC;YAClE,CAAC;SACF;QACD;YACE,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,kCAAkC;YAC/C,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;YAC5E,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;gBAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO;oBACpB,CAAC,CAAC,2BAA2B,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE;oBACvE,CAAC,CAAC,iBAAiB,CAAC;gBACtB,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC7C,CAAC;SACF;QACD;YACE,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,6BAA6B;YAC1C,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE;YAC3F,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAC3B,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;SACjG;QACD;YACE,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,wBAAwB;YACrC,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE;YAC3F,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAC3B,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;SACvH;QACD;YACE,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,oCAAoC;YACjD,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE;YAC3F,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAC3B,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,wBAAwB,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;SACnG;QACD;YACE,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,+CAA+C;YAC5D,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;YAC/C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CACpF,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CACpD;SACJ;QACD;YACE,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,qCAAqC;YAClD,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;YAC1E,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAC3B,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,4BAA4B,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAC1F,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,8BAA8B,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,CACnF;SACJ;KACF,CAAC;AACJ,CAAC"}
package/package.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "@oneie/mcp",
3
+ "version": "0.1.0",
4
+ "description": "ONE substrate MCP server — 12 substrate verbs + 3 discovery tools.",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "bin": {
8
+ "oneie-mcp": "./dist/index.js"
9
+ },
10
+ "files": ["dist", "README.md"],
11
+ "scripts": {
12
+ "build": "tsc",
13
+ "dev": "tsc --watch",
14
+ "prepublishOnly": "bun run build"
15
+ },
16
+ "dependencies": {
17
+ "@oneie/sdk": "^0.2.0",
18
+ "@modelcontextprotocol/sdk": "^1.0.0"
19
+ },
20
+ "devDependencies": {
21
+ "typescript": "5.9.2"
22
+ },
23
+ "license": "SEE LICENSE IN https://one.ie/free-license",
24
+ "repository": {
25
+ "type": "git",
26
+ "url": "git+https://github.com/one-ie/envelopes.git",
27
+ "directory": "packages/mcp"
28
+ }
29
+ }