@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 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": "http://localhost:4321",
42
- "ONEIE_API_KEY": "your-key-optional"
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 point at production:
61
+ Or against a local dev server, `"ONEIE_API_URL": "http://localhost:4321"`.
50
62
 
51
- ```json
52
- {
53
- "mcpServers": {
54
- "oneie": {
55
- "command": "npx",
56
- "args": ["@oneie/mcp"],
57
- "env": {
58
- "ONEIE_API_URL": "https://api.one.ie"
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")` | Promote highways hypotheses |
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
- const ALLOWLIST = new Set([
3
- "actionable_hypotheses", "active_frontiers", "active_objectives",
4
- "actor_classification", "actors_by_kind", "actors_by_tag", "actors_for",
5
- "attractive_tasks", "blocked_tasks", "cheapest_provider", "exploratory_tasks",
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 ALLOWLIST) {
35
+ for (const name of FN_ALLOWLIST) {
38
36
  const entry = FN_MAP[name];
39
37
  if (!entry)
40
38
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"fn.js","sourceRoot":"","sources":["../../src/tools/fn.ts"],"names":[],"mappings":"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"}
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.0",
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.11",
22
+ "@oneie/sdk": "^0.14.12",
23
23
  "@oneie/templates": "^0.2.0",
24
24
  "@modelcontextprotocol/sdk": "^1.0.0"
25
25
  },