@oneie/mcp 0.6.0 → 0.6.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 +58 -17
- package/dist/tools/fn.js +5 -7
- package/dist/tools/fn.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -27,6 +27,18 @@ npm install -g @oneie/mcp
|
|
|
27
27
|
npx @oneie/mcp
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
+
## Get a key
|
|
31
|
+
|
|
32
|
+
Mint your own rather than being handed one:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
npm i -g @oneie/cli
|
|
36
|
+
oneie auth login
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
This is a device flow — it opens a browser, you approve, and it mints a key bound
|
|
40
|
+
to you. Keys minted this way carry exactly your own authority and nothing more.
|
|
41
|
+
|
|
30
42
|
## Configure in Claude Code
|
|
31
43
|
|
|
32
44
|
Add to your `.claude/settings.json`:
|
|
@@ -38,29 +50,24 @@ Add to your `.claude/settings.json`:
|
|
|
38
50
|
"command": "npx",
|
|
39
51
|
"args": ["@oneie/mcp"],
|
|
40
52
|
"env": {
|
|
41
|
-
"ONEIE_API_URL": "
|
|
42
|
-
"ONEIE_API_KEY": "
|
|
53
|
+
"ONEIE_API_URL": "https://one.ie",
|
|
54
|
+
"ONEIE_API_KEY": "one-..."
|
|
43
55
|
}
|
|
44
56
|
}
|
|
45
57
|
}
|
|
46
58
|
}
|
|
47
59
|
```
|
|
48
60
|
|
|
49
|
-
Or
|
|
61
|
+
Or against a local dev server, `"ONEIE_API_URL": "http://localhost:4321"`.
|
|
50
62
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
```
|
|
63
|
+
**`ONEIE_API_URL` must be the app origin, not the gateway.** This client calls
|
|
64
|
+
`/api/*` paths, and the gateway serves the substrate unprefixed — pointing at
|
|
65
|
+
`https://api.one.ie` makes every tool 404. `https://one.ie` is the default when the
|
|
66
|
+
variable is unset, so omitting it is safer than guessing.
|
|
67
|
+
|
|
68
|
+
`ONE_API_URL` / `ONE_API_KEY` are accepted as fallbacks; `ONEIE_*` are canonical.
|
|
69
|
+
|
|
70
|
+
Restart the client after editing — tools load at start.
|
|
64
71
|
|
|
65
72
|
## Tools
|
|
66
73
|
|
|
@@ -79,7 +86,7 @@ Or point at production:
|
|
|
79
86
|
| `reveal` | `GET /api/pii/reveal/:uid` | Full memory card for a uid |
|
|
80
87
|
| `forget` | `POST /api/forget` | GDPR erasure of a uid |
|
|
81
88
|
| `frontier` | `GET /api/frontiers` | Unexplored tag clusters |
|
|
82
|
-
| `know` | via `signal("learning:know")` |
|
|
89
|
+
| `know` | via `signal("learning:know")` | **Broken** — `learning:know` is in no registry and has no resolver, so the call dissolves and no hypothesis is written. The shipped harden receiver is `chat:harden` |
|
|
83
90
|
| `highways` | `GET /api/export/highways` | Top weighted paths |
|
|
84
91
|
| `groups` | `GET /api/groups` | List groups (dimension query) |
|
|
85
92
|
| `actors` | `GET /api/actors` | List actors (dimension query) |
|
|
@@ -112,6 +119,40 @@ Or point at production:
|
|
|
112
119
|
| `tasks_link` | Close the loop on a claimed task — append provenance (the /do slug + docs it became) |
|
|
113
120
|
| `own_me` | Generate an ownership invitation link for a registered agent — the human who opens it becomes the owner |
|
|
114
121
|
|
|
122
|
+
### Tasks (the board)
|
|
123
|
+
|
|
124
|
+
`tasks_list` is the read the `/u/<slug>/tasks` page makes, so what you get here is
|
|
125
|
+
what the operator sees in the browser. Use it — not `tasks_mine` — to manage a
|
|
126
|
+
workspace. `tasks_mine` above is the narrower pull: *what matches what I subscribed
|
|
127
|
+
to*, which answers "what next", not "what's on this board".
|
|
128
|
+
|
|
129
|
+
| Tool | What |
|
|
130
|
+
|------|------|
|
|
131
|
+
| `tasks_list` | The board for a workspace — every task, labelled `kind: work \| approval`; filter by status, tag, or name |
|
|
132
|
+
| `tasks_create` | Add a task |
|
|
133
|
+
| `tasks_subtask` | Add a task under a parent |
|
|
134
|
+
| `tasks_status` | `open` · `picked` · `done` · `verified` · `dissolved` |
|
|
135
|
+
| `tasks_priority` | Rank it |
|
|
136
|
+
| `tasks_tag` | Tag it |
|
|
137
|
+
| `tasks_notes` | Set the body |
|
|
138
|
+
| `tasks_rename` | Retitle it |
|
|
139
|
+
| `tasks_comment` | Thread on it |
|
|
140
|
+
| `tasks_depend` | Make one task wait on another |
|
|
141
|
+
| `tasks_schedule` | Set dates, where dates apply |
|
|
142
|
+
| `tasks_approve` | Resolve an approval row |
|
|
143
|
+
|
|
144
|
+
Two things worth knowing before you debug something that isn't broken:
|
|
145
|
+
|
|
146
|
+
**An empty result is not proof of an empty board.** An authorised call against a
|
|
147
|
+
workspace you don't belong to returns `ok: true` with no rows — indistinguishable
|
|
148
|
+
from "no work queued". Treat zero rows as an unproven connection until a call with
|
|
149
|
+
rows proves otherwise.
|
|
150
|
+
|
|
151
|
+
**Write serially.** Batching `tasks_depend` / `tasks_tag` in one parallel block
|
|
152
|
+
produces spurious `not_found` and `write_failed` responses; the same calls succeed
|
|
153
|
+
on a serial retry with identical arguments. The errors read exactly like a
|
|
154
|
+
permission failure, so the reflex is to go debug authority — retry once first.
|
|
155
|
+
|
|
115
156
|
### Observability
|
|
116
157
|
|
|
117
158
|
| Tool | What |
|
package/dist/tools/fn.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { FN_MAP, FN_MAP_VERSION } from "@oneie/sdk/generated/fn-map";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
"highways", "optimal_route", "promising_frontiers", "suggest_route", "total_contribution",
|
|
7
|
-
]);
|
|
2
|
+
// The allowlist is ONE source (`@oneie/sdk/fn-allowlist`) shared by web, MCP, CLI
|
|
3
|
+
// and channels — never a literal copied per surface. Module path, not the bare
|
|
4
|
+
// barrel: the barrel crashes CF Workers and two of the four consumers are Workers.
|
|
5
|
+
import { FN_ALLOWLIST } from "@oneie/sdk/fn-allowlist";
|
|
8
6
|
function paramSchema(params) {
|
|
9
7
|
if (!params.length)
|
|
10
8
|
return { type: "object", properties: {}, additionalProperties: false };
|
|
@@ -34,7 +32,7 @@ async function callFn(env, fnName, args) {
|
|
|
34
32
|
}
|
|
35
33
|
export function fnTools() {
|
|
36
34
|
const tools = [];
|
|
37
|
-
for (const name of
|
|
35
|
+
for (const name of FN_ALLOWLIST) {
|
|
38
36
|
const entry = FN_MAP[name];
|
|
39
37
|
if (!entry)
|
|
40
38
|
continue;
|
package/dist/tools/fn.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fn.js","sourceRoot":"","sources":["../../src/tools/fn.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,cAAc,EAAgB,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"fn.js","sourceRoot":"","sources":["../../src/tools/fn.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oneie/mcp",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.1",
|
|
4
4
|
"description": "ONE substrate MCP server — 12 substrate verbs + 3 discovery tools.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"check:tools": "bun run build && node -e \"import('./dist/index.js').then(m=>{const d=m.toolManifestDrift();if(d.missing.length||d.extra.length){console.error('MCP_TOOLS drift — missing:',d.missing,'extra:',d.extra);process.exit(1)}console.log('MCP_TOOLS matches the router')})\""
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@oneie/sdk": "^0.14.
|
|
22
|
+
"@oneie/sdk": "^0.14.12",
|
|
23
23
|
"@oneie/templates": "^0.2.0",
|
|
24
24
|
"@modelcontextprotocol/sdk": "^1.0.0"
|
|
25
25
|
},
|