@hebbianvault/mcp 0.3.0 → 0.4.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.
Files changed (59) hide show
  1. package/README.md +65 -15
  2. package/dist/client.d.ts +16 -2
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +68 -6
  5. package/dist/client.js.map +1 -1
  6. package/dist/index.d.ts +5 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +26 -3
  9. package/dist/index.js.map +1 -1
  10. package/dist/server_startup.d.ts +11 -0
  11. package/dist/server_startup.d.ts.map +1 -0
  12. package/dist/server_startup.js +11 -0
  13. package/dist/server_startup.js.map +1 -0
  14. package/dist/startup_health.d.ts +12 -0
  15. package/dist/startup_health.d.ts.map +1 -0
  16. package/dist/startup_health.js +45 -0
  17. package/dist/startup_health.js.map +1 -0
  18. package/dist/tools/audit_log.d.ts +15 -0
  19. package/dist/tools/audit_log.d.ts.map +1 -0
  20. package/dist/tools/audit_log.js +44 -0
  21. package/dist/tools/audit_log.js.map +1 -0
  22. package/dist/tools/capture.d.ts +5 -1
  23. package/dist/tools/capture.d.ts.map +1 -1
  24. package/dist/tools/capture.js +87 -8
  25. package/dist/tools/capture.js.map +1 -1
  26. package/dist/tools/export.d.ts +10 -0
  27. package/dist/tools/export.d.ts.map +1 -0
  28. package/dist/tools/export.js +31 -0
  29. package/dist/tools/export.js.map +1 -0
  30. package/dist/tools/graph_helpers.d.ts +14 -2
  31. package/dist/tools/graph_helpers.d.ts.map +1 -1
  32. package/dist/tools/graph_helpers.js +94 -12
  33. package/dist/tools/graph_helpers.js.map +1 -1
  34. package/dist/tools/index.d.ts +5 -1
  35. package/dist/tools/index.d.ts.map +1 -1
  36. package/dist/tools/index.js +5 -1
  37. package/dist/tools/index.js.map +1 -1
  38. package/dist/tools/provenance.d.ts.map +1 -1
  39. package/dist/tools/provenance.js +4 -1
  40. package/dist/tools/provenance.js.map +1 -1
  41. package/dist/tools/search.d.ts +3 -4
  42. package/dist/tools/search.d.ts.map +1 -1
  43. package/dist/tools/search.js +51 -18
  44. package/dist/tools/search.js.map +1 -1
  45. package/dist/tools/traverse.d.ts.map +1 -1
  46. package/dist/tools/traverse.js +4 -1
  47. package/dist/tools/traverse.js.map +1 -1
  48. package/dist/tools/untrusted_content.d.ts.map +1 -1
  49. package/dist/tools/untrusted_content.js +1 -0
  50. package/dist/tools/untrusted_content.js.map +1 -1
  51. package/dist/tools/usage.d.ts +15 -0
  52. package/dist/tools/usage.d.ts.map +1 -0
  53. package/dist/tools/usage.js +45 -0
  54. package/dist/tools/usage.js.map +1 -0
  55. package/dist/tools/whoami.d.ts +11 -0
  56. package/dist/tools/whoami.d.ts.map +1 -0
  57. package/dist/tools/whoami.js +31 -0
  58. package/dist/tools/whoami.js.map +1 -0
  59. package/package.json +1 -1
@@ -4,17 +4,16 @@
4
4
  * Tool: hebbian_search
5
5
  * Search the workspace for nodes matching a query.
6
6
  *
7
- * The Hebbian API exposes the workspace as a scoped graph (GET /vault/graph),
8
- * already filtered to what the caller's token may see. This tool ranks that
9
- * graph against the query and returns the best matches. The graph is the
10
- * authoritative source; ranking is a thin presentation layer.
7
+ * Employee-scoped search uses the API's full-text endpoint so matches in note
8
+ * bodies are returned. Company-scoped tokens retain the company-graph fallback
9
+ * because /vault/search intentionally uses the employee-union RLS view.
11
10
  */
12
11
  import { HebbianApiError } from "../client.js";
13
- import { fetchGraph, queryTerms, scoreNode, summarise, } from "./graph_helpers.js";
12
+ import { fetchGraph, isCompanyScope, queryTerms, scoreNode, summarise, } from "./graph_helpers.js";
14
13
  import { stringifyUntrustedResult } from "./untrusted_content.js";
15
14
  export const HEBBIAN_SEARCH = {
16
15
  name: "hebbian_search",
17
- description: "Search your Hebbian workspace for nodes matching a query. Returns a ranked " +
16
+ description: "Search your Hebbian workspace by title, summary, and note body. Returns a ranked " +
18
17
  "list of matching nodes with their UUID, title, domain, archetype, tags, and " +
19
18
  "a snippet. Use this as the starting point for exploring the workspace when " +
20
19
  "you have a topic or question. The 'domain' param filters by knowledge area " +
@@ -50,20 +49,54 @@ export async function handleSearch(client, args) {
50
49
  throw new Error("q is required and must be a non-empty string");
51
50
  }
52
51
  const cap = Math.min(Math.max(1, limit), 50);
53
- const terms = queryTerms(q);
52
+ const trimmedQuery = q.trim();
54
53
  try {
55
- let nodes = await fetchGraph(client);
56
- if (domain) {
57
- const d = domain.toLowerCase();
58
- nodes = nodes.filter((n) => (n.domain ?? "").toLowerCase() === d);
54
+ let ranked;
55
+ let truncated = false;
56
+ if (await isCompanyScope(client)) {
57
+ // /vault/search is employee-union scoped even for company tokens. Keep
58
+ // Plan 2.1's company-graph behaviour until the API offers an org-wide FTS view.
59
+ const graph = await fetchGraph(client);
60
+ let nodes = graph.nodes;
61
+ truncated = graph.truncated;
62
+ if (domain) {
63
+ const d = domain.toLowerCase();
64
+ nodes = nodes.filter((n) => (n.domain ?? "").toLowerCase() === d);
65
+ }
66
+ const terms = queryTerms(trimmedQuery);
67
+ ranked = nodes
68
+ .map((n) => ({ n, score: scoreNode(n, terms) }))
69
+ .filter((x) => x.score > 0)
70
+ .sort((a, b) => b.score - a.score)
71
+ .slice(0, cap)
72
+ .map((x) => summarise(x.n));
59
73
  }
60
- const ranked = nodes
61
- .map((n) => ({ n, score: scoreNode(n, terms) }))
62
- .filter((x) => x.score > 0)
63
- .sort((a, b) => b.score - a.score)
64
- .slice(0, cap)
65
- .map((x) => summarise(x.n));
66
- return stringifyUntrustedResult({ query: q.trim(), domain: domain ?? null, count: ranked.length, results: ranked });
74
+ else {
75
+ const response = (await client.get("/vault/search", {
76
+ q: trimmedQuery,
77
+ // Domain filtering happens locally because the FTS endpoint does not
78
+ // accept a domain filter. Fetch the client maximum first so matches
79
+ // ranked below the caller's window are not lost before filtering.
80
+ limit: domain ? 50 : cap,
81
+ }));
82
+ let results = Array.isArray(response.results) ? response.results : [];
83
+ if (domain) {
84
+ const d = domain.toLowerCase();
85
+ results = results.filter((n) => (n.domain ?? "").toLowerCase() === d);
86
+ }
87
+ ranked = results.slice(0, cap).map(summarise);
88
+ }
89
+ const result = {
90
+ query: trimmedQuery,
91
+ domain: domain ?? null,
92
+ count: ranked.length,
93
+ results: ranked,
94
+ };
95
+ if (truncated)
96
+ result.truncated = true;
97
+ if (ranked.length === 0)
98
+ result.message = "No matching nodes found.";
99
+ return stringifyUntrustedResult(result);
67
100
  }
68
101
  catch (err) {
69
102
  if (err instanceof HebbianApiError) {
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EACL,UAAU,EACV,cAAc,EACd,UAAU,EACV,SAAS,EACT,SAAS,GAEV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,MAAM,CAAC,MAAM,cAAc,GAAS;IAClC,IAAI,EAAE,gBAAgB;IACtB,WAAW,EACT,mFAAmF;QACnF,8EAA8E;QAC9E,6EAA6E;QAC7E,6EAA6E;QAC7E,4EAA4E;QAC5E,yEAAyE;QACzE,0DAA0D;IAC5D,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,CAAC,EAAE;gBACD,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,wDAAwD;aACtE;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,yEAAyE;oBACzE,qEAAqE;aACxE;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,4DAA4D;gBACzE,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE,EAAE;aACZ;SACF;QACD,QAAQ,EAAE,CAAC,GAAG,CAAC;QACf,oBAAoB,EAAE,KAAK;KAC5B;CACF,CAAC;AAYF,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAqB,EACrB,IAAgB;IAEhB,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC;IAEvC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAE9B,IAAI,CAAC;QACH,IAAI,MAAiC,CAAC;QACtC,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,MAAM,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,uEAAuE;YACvE,gFAAgF;YAChF,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,KAAK,GAAgB,KAAK,CAAC,KAAK,CAAC;YACrC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;YAC5B,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;gBAC/B,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;YACpE,CAAC;YACD,MAAM,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;YACvC,MAAM,GAAG,KAAK;iBACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;iBAC/C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;iBAC1B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;iBACjC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;iBACb,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE;gBAClD,CAAC,EAAE,YAAY;gBACf,qEAAqE;gBACrE,oEAAoE;gBACpE,kEAAkE;gBAClE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG;aACzB,CAAC,CAAmB,CAAC;YACtB,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;gBAC/B,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;YACxE,CAAC;YACD,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,MAAM,GAA4B;YACtC,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,MAAM,IAAI,IAAI;YACtB,KAAK,EAAE,MAAM,CAAC,MAAM;YACpB,OAAO,EAAE,MAAM;SAChB,CAAC;QACF,IAAI,SAAS;YAAE,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;QACvC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,CAAC,OAAO,GAAG,0BAA0B,CAAC;QACrE,OAAO,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,eAAe,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QACrC,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"traverse.d.ts","sourceRoot":"","sources":["../../src/tools/traverse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAQlD,eAAO,MAAM,gBAAgB,EAAE,IA6B9B,CAAC;AAEF,UAAU,YAAY;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AASD,wBAAsB,cAAc,CAClC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,MAAM,CAAC,CAqFjB"}
1
+ {"version":3,"file":"traverse.d.ts","sourceRoot":"","sources":["../../src/tools/traverse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAQlD,eAAO,MAAM,gBAAgB,EAAE,IA6B9B,CAAC;AAEF,UAAU,YAAY;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AASD,wBAAsB,cAAc,CAClC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,MAAM,CAAC,CAwFjB"}
@@ -49,7 +49,8 @@ export async function handleTraverse(client, args) {
49
49
  const hops = Math.min(Math.max(1, max_hops), MAX_HOPS);
50
50
  const start = start_uuid.trim();
51
51
  try {
52
- const nodes = await fetchGraph(client);
52
+ const graph = await fetchGraph(client);
53
+ const { nodes } = graph;
53
54
  const byUuid = new Map();
54
55
  for (const n of nodes)
55
56
  byUuid.set(n.uuid, n);
@@ -60,6 +61,7 @@ export async function handleTraverse(client, args) {
60
61
  "or may be outside your token's scope.",
61
62
  nodes: [],
62
63
  edges: [],
64
+ ...(graph.truncated ? { truncated: true } : {}),
63
65
  }, null, 2);
64
66
  }
65
67
  // BFS over inline edges.
@@ -107,6 +109,7 @@ export async function handleTraverse(client, args) {
107
109
  edge_count: collectedEdges.length,
108
110
  nodes: resultNodes,
109
111
  edges: collectedEdges,
112
+ ...(graph.truncated ? { truncated: true } : {}),
110
113
  });
111
114
  }
112
115
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"traverse.js","sourceRoot":"","sources":["../../src/tools/traverse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"traverse.js","sourceRoot":"","sources":["../../src/tools/traverse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAkB,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,MAAM,QAAQ,GAAG,CAAC,CAAC;AACnB,MAAM,YAAY,GAAG,CAAC,CAAC;AAEvB,MAAM,CAAC,MAAM,gBAAgB,GAAS;IACpC,IAAI,EAAE,kBAAkB;IACxB,WAAW,EACT,8EAA8E;QAC9E,+EAA+E;QAC/E,gFAAgF;QAChF,6EAA6E;QAC7E,8DAA8D;IAChE,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,2DAA2D;oBAC3D,0BAA0B;aAC7B;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,gDAAgD,YAAY,UAAU,QAAQ,IAAI;oBAClF,0EAA0E;gBAC5E,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE,QAAQ;aAClB;SACF;QACD,QAAQ,EAAE,CAAC,YAAY,CAAC;QACxB,oBAAoB,EAAE,KAAK;KAC5B;CACF,CAAC;AAcF,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAqB,EACrB,IAAkB;IAElB,MAAM,EAAE,UAAU,EAAE,QAAQ,GAAG,YAAY,EAAE,GAAG,IAAI,CAAC;IAErD,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpF,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;IAEhC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;QACxB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAqB,CAAC;QAC5C,KAAK,MAAM,CAAC,IAAI,KAAK;YAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAE7C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,SAAS,CACnB;gBACE,UAAU,EAAE,KAAK;gBACjB,OAAO,EACL,wEAAwE;oBACxE,uCAAuC;gBACzC,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE,EAAE;gBACT,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAChD,EACD,IAAI,EACJ,CAAC,CACF,CAAC;QACJ,CAAC;QAED,yBAAyB;QACzB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QACzC,MAAM,cAAc,GAAoB,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;QACnC,IAAI,QAAQ,GAAa,CAAC,KAAK,CAAC,CAAC;QAEjC,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;YACpC,MAAM,IAAI,GAAa,EAAE,CAAC;YAC1B,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;gBAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC9B,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;oBAAE,SAAS;gBAClD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBAC3B,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBAC9E,MAAM,SAAS,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;oBAC3C,MAAM,GAAG,GAAG,GAAG,GAAG,KAAK,GAAG,IAAI,QAAQ,IAAI,EAAE,EAAE,CAAC;oBAC/C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;wBACvB,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBAClB,cAAc,CAAC,IAAI,CAAC;4BAClB,WAAW,EAAE,GAAG;4BAChB,WAAW,EAAE,GAAG;4BAChB,aAAa,EAAE,QAAQ;4BACvB,MAAM;yBACP,CAAC,CAAC;oBACL,CAAC;oBACD,IAAI,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;wBAClE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;wBACvB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACvB,CAAC;gBACH,CAAC;YACH,CAAC;YACD,QAAQ,GAAG,IAAI,CAAC;YAChB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM;QACnC,CAAC;QAED,MAAM,WAAW,GAAG,CAAC,GAAG,OAAO,CAAC;aAC7B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACzB,MAAM,CAAC,CAAC,CAAC,EAAkB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;aACzC,GAAG,CAAC,SAAS,CAAC,CAAC;QAElB,OAAO,wBAAwB,CAC7B;YACE,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,WAAW,CAAC,MAAM;YAC9B,UAAU,EAAE,cAAc,CAAC,MAAM;YACjC,KAAK,EAAE,WAAW;YAClB,KAAK,EAAE,cAAc;YACrB,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChD,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,eAAe,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QACrC,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"untrusted_content.d.ts","sourceRoot":"","sources":["../../src/tools/untrusted_content.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,0BAA0B,yGACiE,CAAC;AAuBzG,yFAAyF;AACzF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOxD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAgB5D;AAED,iFAAiF;AACjF,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE/D"}
1
+ {"version":3,"file":"untrusted_content.d.ts","sourceRoot":"","sources":["../../src/tools/untrusted_content.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,0BAA0B,yGACiE,CAAC;AAwBzG,yFAAyF;AACzF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOxD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAgB5D;AAED,iFAAiF;AACjF,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE/D"}
@@ -13,6 +13,7 @@ const UNTRUSTED_TEXT_FIELDS = new Set([
13
13
  "detail",
14
14
  "description",
15
15
  "details",
16
+ "error",
16
17
  "excerpt",
17
18
  "html",
18
19
  "markdown",
@@ -1 +1 @@
1
- {"version":3,"file":"untrusted_content.js","sourceRoot":"","sources":["../../src/tools/untrusted_content.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,0BAA0B,GACrC,sGAAsG,CAAC;AAEzG,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IACpC,QAAQ;IACR,MAAM;IACN,SAAS;IACT,QAAQ;IACR,aAAa;IACb,SAAS;IACT,SAAS;IACT,MAAM;IACN,UAAU;IACV,SAAS;IACT,MAAM;IACN,OAAO;IACP,QAAQ;IACR,SAAS;IACT,SAAS;IACT,MAAM;IACN,OAAO;IACP,YAAY;CACb,CAAC,CAAC;AAEH,yFAAyF;AACzF,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,kFAAkF;IAClF,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAC7B,uCAAuC,EACvC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAClC,CAAC;IACF,OAAO,GAAG,0BAA0B,0BAA0B,SAAS,wBAAwB,CAAC;AAClG,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;QACrE,GAAG;QACH,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ;YACzD,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC;YAC3B,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC;KAChC,CAAC,CACH,CAAC;AACJ,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,OAAO,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC9D,CAAC"}
1
+ {"version":3,"file":"untrusted_content.js","sourceRoot":"","sources":["../../src/tools/untrusted_content.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,0BAA0B,GACrC,sGAAsG,CAAC;AAEzG,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IACpC,QAAQ;IACR,MAAM;IACN,SAAS;IACT,QAAQ;IACR,aAAa;IACb,SAAS;IACT,OAAO;IACP,SAAS;IACT,MAAM;IACN,UAAU;IACV,SAAS;IACT,MAAM;IACN,OAAO;IACP,QAAQ;IACR,SAAS;IACT,SAAS;IACT,MAAM;IACN,OAAO;IACP,YAAY;CACb,CAAC,CAAC;AAEH,yFAAyF;AACzF,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,kFAAkF;IAClF,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAC7B,uCAAuC,EACvC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAClC,CAAC;IACF,OAAO,GAAG,0BAA0B,0BAA0B,SAAS,wBAAwB,CAAC;AAClG,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;QACrE,GAAG;QACH,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ;YACzD,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC;YAC3B,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC;KAChC,CAAC,CACH,CAAC;AACJ,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,OAAO,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC9D,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Tool: hebbian_usage
3
+ * Return usage and spending-meter summaries for the configured token.
4
+ * Maps to: GET /usage/me and GET /usage/company
5
+ */
6
+ import type { Tool } from "@modelcontextprotocol/sdk/types.js";
7
+ import type { HebbianClient } from "../client.js";
8
+ export declare const HEBBIAN_USAGE: Tool;
9
+ interface UsageArgs {
10
+ company?: boolean;
11
+ }
12
+ /** Return caller usage, or the company roll-up when the token permits it. */
13
+ export declare function handleUsage(client: HebbianClient, { company }: UsageArgs): Promise<string>;
14
+ export {};
15
+ //# sourceMappingURL=usage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../src/tools/usage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAIlD,eAAO,MAAM,aAAa,EAAE,IAkB3B,CAAC;AAEF,UAAU,SAAS;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,6EAA6E;AAC7E,wBAAsB,WAAW,CAC/B,MAAM,EAAE,aAAa,EACrB,EAAE,OAAe,EAAE,EAAE,SAAS,GAC7B,OAAO,CAAC,MAAM,CAAC,CAkBjB"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Tool: hebbian_usage
3
+ * Return usage and spending-meter summaries for the configured token.
4
+ * Maps to: GET /usage/me and GET /usage/company
5
+ */
6
+ import { HebbianApiError } from "../client.js";
7
+ import { stringifyUntrustedResult } from "./untrusted_content.js";
8
+ export const HEBBIAN_USAGE = {
9
+ name: "hebbian_usage",
10
+ description: "Show your current Hebbian usage and spend-meter summary. Set 'company' to " +
11
+ "true for the company-wide view, including employee summaries; that view " +
12
+ "requires an Owner/Admin or company-scope token.",
13
+ inputSchema: {
14
+ type: "object",
15
+ properties: {
16
+ company: {
17
+ type: "boolean",
18
+ description: "Return the company-wide usage view. Default: false (your employee and company summaries).",
19
+ default: false,
20
+ },
21
+ },
22
+ additionalProperties: false,
23
+ },
24
+ };
25
+ /** Return caller usage, or the company roll-up when the token permits it. */
26
+ export async function handleUsage(client, { company = false }) {
27
+ try {
28
+ // Strict boolean check mirrors the Python handler: a host that skips
29
+ // inputSchema validation and sends company:"true" gets the default view.
30
+ const result = await client.get(company === true ? "/usage/company" : "/usage/me");
31
+ return stringifyUntrustedResult(result);
32
+ }
33
+ catch (err) {
34
+ if (company && err instanceof HebbianApiError && err.statusCode === 403) {
35
+ return stringifyUntrustedResult({
36
+ message: "Company usage view requires an Owner/Admin role or a company-scope token.",
37
+ });
38
+ }
39
+ if (err instanceof HebbianApiError) {
40
+ throw new Error(err.toToolError());
41
+ }
42
+ throw err;
43
+ }
44
+ }
45
+ //# sourceMappingURL=usage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/tools/usage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,MAAM,CAAC,MAAM,aAAa,GAAS;IACjC,IAAI,EAAE,eAAe;IACrB,WAAW,EACT,4EAA4E;QAC5E,0EAA0E;QAC1E,iDAAiD;IACnD,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,SAAS;gBACf,WAAW,EACT,2FAA2F;gBAC7F,OAAO,EAAE,KAAK;aACf;SACF;QACD,oBAAoB,EAAE,KAAK;KAC5B;CACF,CAAC;AAMF,6EAA6E;AAC7E,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAqB,EACrB,EAAE,OAAO,GAAG,KAAK,EAAa;IAE9B,IAAI,CAAC;QACH,qEAAqE;QACrE,yEAAyE;QACzE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QACnF,OAAO,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,OAAO,IAAI,GAAG,YAAY,eAAe,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;YACxE,OAAO,wBAAwB,CAAC;gBAC9B,OAAO,EACL,2EAA2E;aAC9E,CAAC,CAAC;QACL,CAAC;QACD,IAAI,GAAG,YAAY,eAAe,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QACrC,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Tool: hebbian_whoami
3
+ * Return the server-verified identity and scope for the configured token.
4
+ * Maps to: GET /tenant/whoami
5
+ */
6
+ import type { Tool } from "@modelcontextprotocol/sdk/types.js";
7
+ import type { HebbianClient } from "../client.js";
8
+ export declare const HEBBIAN_WHOAMI: Tool;
9
+ /** Return server-derived identity data. This is not workspace content. */
10
+ export declare function handleWhoami(client: HebbianClient): Promise<string>;
11
+ //# sourceMappingURL=whoami.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../src/tools/whoami.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAIlD,eAAO,MAAM,cAAc,EAAE,IAU5B,CAAC;AAEF,0EAA0E;AAC1E,wBAAsB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAUzE"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Tool: hebbian_whoami
3
+ * Return the server-verified identity and scope for the configured token.
4
+ * Maps to: GET /tenant/whoami
5
+ */
6
+ import { HebbianApiError } from "../client.js";
7
+ import { stringifyUntrustedResult } from "./untrusted_content.js";
8
+ export const HEBBIAN_WHOAMI = {
9
+ name: "hebbian_whoami",
10
+ description: "Show the identity verified for the configured Hebbian token. Returns the " +
11
+ "tenant slug, role, token scope, and principal information.",
12
+ inputSchema: {
13
+ type: "object",
14
+ properties: {},
15
+ additionalProperties: false,
16
+ },
17
+ };
18
+ /** Return server-derived identity data. This is not workspace content. */
19
+ export async function handleWhoami(client) {
20
+ try {
21
+ const result = await client.get("/tenant/whoami");
22
+ return stringifyUntrustedResult(result);
23
+ }
24
+ catch (err) {
25
+ if (err instanceof HebbianApiError) {
26
+ throw new Error(err.toToolError());
27
+ }
28
+ throw err;
29
+ }
30
+ }
31
+ //# sourceMappingURL=whoami.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/tools/whoami.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,MAAM,CAAC,MAAM,cAAc,GAAS;IAClC,IAAI,EAAE,gBAAgB;IACtB,WAAW,EACT,2EAA2E;QAC3E,4DAA4D;IAC9D,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE;QACd,oBAAoB,EAAE,KAAK;KAC5B;CACF,CAAC;AAEF,0EAA0E;AAC1E,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAqB;IACtD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAClD,OAAO,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,eAAe,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QACrC,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hebbianvault/mcp",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Customer-installable MCP server for the Hebbian tenant brain. One package, scope-by-token (Employee or Company). Install in Claude Code, Claude Desktop, Cursor, Cowork, or any MCP-compatible agent.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",