infranodus-mcp-server 1.7.4 → 1.8.5

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 (161) hide show
  1. package/README.md +73 -8
  2. package/dist/api/client.d.ts +3 -1
  3. package/dist/api/client.d.ts.map +1 -1
  4. package/dist/api/client.js +2 -1
  5. package/dist/api/client.js.map +1 -1
  6. package/dist/api/config-store.d.ts +11 -0
  7. package/dist/api/config-store.d.ts.map +1 -1
  8. package/dist/api/config-store.js +7 -0
  9. package/dist/api/config-store.js.map +1 -1
  10. package/dist/config/brand.d.ts.map +1 -1
  11. package/dist/config/brand.js +11 -0
  12. package/dist/config/brand.js.map +1 -1
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +83 -6
  15. package/dist/index.js.map +1 -1
  16. package/dist/instructions.d.ts.map +1 -1
  17. package/dist/instructions.js +10 -3
  18. package/dist/instructions.js.map +1 -1
  19. package/dist/prompts/index.d.ts.map +1 -1
  20. package/dist/prompts/index.js +32 -0
  21. package/dist/prompts/index.js.map +1 -1
  22. package/dist/resources/about.d.ts.map +1 -1
  23. package/dist/resources/about.js +9 -1
  24. package/dist/resources/about.js.map +1 -1
  25. package/dist/schemas/index.d.ts +466 -63
  26. package/dist/schemas/index.d.ts.map +1 -1
  27. package/dist/schemas/index.js +435 -34
  28. package/dist/schemas/index.js.map +1 -1
  29. package/dist/tools/addMemory.d.ts +1 -0
  30. package/dist/tools/addMemory.d.ts.map +1 -1
  31. package/dist/tools/addProjectLearnings.d.ts +30 -0
  32. package/dist/tools/addProjectLearnings.d.ts.map +1 -0
  33. package/dist/tools/addProjectLearnings.js +197 -0
  34. package/dist/tools/addProjectLearnings.js.map +1 -0
  35. package/dist/tools/analyzeLlmResults.d.ts +1 -1
  36. package/dist/tools/analyzeLlmResults.d.ts.map +1 -1
  37. package/dist/tools/analyzeLlmResults.js +5 -2
  38. package/dist/tools/analyzeLlmResults.js.map +1 -1
  39. package/dist/tools/analyzeText.d.ts +1 -0
  40. package/dist/tools/analyzeText.d.ts.map +1 -1
  41. package/dist/tools/analyzeTextSignature.d.ts +38 -0
  42. package/dist/tools/analyzeTextSignature.d.ts.map +1 -0
  43. package/dist/tools/analyzeTextSignature.js +82 -0
  44. package/dist/tools/analyzeTextSignature.js.map +1 -0
  45. package/dist/tools/createKnowledgeGraph.d.ts +1 -0
  46. package/dist/tools/createKnowledgeGraph.d.ts.map +1 -1
  47. package/dist/tools/deleteGraph.d.ts +43 -0
  48. package/dist/tools/deleteGraph.d.ts.map +1 -0
  49. package/dist/tools/deleteGraph.js +145 -0
  50. package/dist/tools/deleteGraph.js.map +1 -0
  51. package/dist/tools/deleteStatements.d.ts +106 -0
  52. package/dist/tools/deleteStatements.d.ts.map +1 -0
  53. package/dist/tools/deleteStatements.js +288 -0
  54. package/dist/tools/deleteStatements.js.map +1 -0
  55. package/dist/tools/developConceptualBridges.d.ts +2 -1
  56. package/dist/tools/developConceptualBridges.d.ts.map +1 -1
  57. package/dist/tools/developLatentTopics.d.ts +2 -1
  58. package/dist/tools/developLatentTopics.d.ts.map +1 -1
  59. package/dist/tools/developTextTool.d.ts +2 -1
  60. package/dist/tools/developTextTool.d.ts.map +1 -1
  61. package/dist/tools/enableProjectLearnings.d.ts +27 -0
  62. package/dist/tools/enableProjectLearnings.d.ts.map +1 -0
  63. package/dist/tools/enableProjectLearnings.js +68 -0
  64. package/dist/tools/enableProjectLearnings.js.map +1 -0
  65. package/dist/tools/generateContentGaps.d.ts +1 -0
  66. package/dist/tools/generateContentGaps.d.ts.map +1 -1
  67. package/dist/tools/generateContextualHint.d.ts +1 -0
  68. package/dist/tools/generateContextualHint.d.ts.map +1 -1
  69. package/dist/tools/generateDifferenceGraphFromTexts.d.ts +1 -0
  70. package/dist/tools/generateDifferenceGraphFromTexts.d.ts.map +1 -1
  71. package/dist/tools/generateDifferenceGraphFromTexts.js +1 -1
  72. package/dist/tools/generateDifferenceGraphFromTexts.js.map +1 -1
  73. package/dist/tools/generateKnowledgeGraph.d.ts +1 -0
  74. package/dist/tools/generateKnowledgeGraph.d.ts.map +1 -1
  75. package/dist/tools/generateMergedGraphFromTexts.d.ts +1 -0
  76. package/dist/tools/generateMergedGraphFromTexts.d.ts.map +1 -1
  77. package/dist/tools/generateMergedGraphFromTexts.js +1 -1
  78. package/dist/tools/generateMergedGraphFromTexts.js.map +1 -1
  79. package/dist/tools/generateOntologyGraph.d.ts +10 -3
  80. package/dist/tools/generateOntologyGraph.d.ts.map +1 -1
  81. package/dist/tools/generateOntologyGraph.js +142 -34
  82. package/dist/tools/generateOntologyGraph.js.map +1 -1
  83. package/dist/tools/generateOverlapGraphFromTexts.d.ts +1 -0
  84. package/dist/tools/generateOverlapGraphFromTexts.d.ts.map +1 -1
  85. package/dist/tools/generateOverlapGraphFromTexts.js +1 -1
  86. package/dist/tools/generateOverlapGraphFromTexts.js.map +1 -1
  87. package/dist/tools/generateResearchIdeas.d.ts +2 -1
  88. package/dist/tools/generateResearchIdeas.d.ts.map +1 -1
  89. package/dist/tools/generateResearchQuestions.d.ts +2 -1
  90. package/dist/tools/generateResearchQuestions.d.ts.map +1 -1
  91. package/dist/tools/generateResponses.d.ts +2 -1
  92. package/dist/tools/generateResponses.d.ts.map +1 -1
  93. package/dist/tools/generateSEOGraphTool.d.ts +1 -0
  94. package/dist/tools/generateSEOGraphTool.d.ts.map +1 -1
  95. package/dist/tools/generateSEOGraphTool.js +1 -1
  96. package/dist/tools/generateSEOGraphTool.js.map +1 -1
  97. package/dist/tools/generateTopicalClusters.d.ts +1 -0
  98. package/dist/tools/generateTopicalClusters.d.ts.map +1 -1
  99. package/dist/tools/getProjectLearnings.d.ts +30 -0
  100. package/dist/tools/getProjectLearnings.d.ts.map +1 -0
  101. package/dist/tools/getProjectLearnings.js +151 -0
  102. package/dist/tools/getProjectLearnings.js.map +1 -0
  103. package/dist/tools/index.d.ts +8 -0
  104. package/dist/tools/index.d.ts.map +1 -1
  105. package/dist/tools/index.js +8 -0
  106. package/dist/tools/index.js.map +1 -1
  107. package/dist/tools/optimizeKnowledgeBase.d.ts +41 -0
  108. package/dist/tools/optimizeKnowledgeBase.d.ts.map +1 -0
  109. package/dist/tools/optimizeKnowledgeBase.js +230 -0
  110. package/dist/tools/optimizeKnowledgeBase.js.map +1 -0
  111. package/dist/tools/optimizeReasoning.d.ts +2 -1
  112. package/dist/tools/optimizeReasoning.d.ts.map +1 -1
  113. package/dist/tools/optimizeTextStructure.d.ts +2 -1
  114. package/dist/tools/optimizeTextStructure.d.ts.map +1 -1
  115. package/dist/tools/submitWorkflowFeedback.d.ts +35 -0
  116. package/dist/tools/submitWorkflowFeedback.d.ts.map +1 -0
  117. package/dist/tools/submitWorkflowFeedback.js +62 -0
  118. package/dist/tools/submitWorkflowFeedback.js.map +1 -0
  119. package/dist/tools/updateStatements.d.ts +134 -0
  120. package/dist/tools/updateStatements.d.ts.map +1 -0
  121. package/dist/tools/updateStatements.js +378 -0
  122. package/dist/tools/updateStatements.js.map +1 -0
  123. package/dist/types/index.d.ts +30 -0
  124. package/dist/types/index.d.ts.map +1 -1
  125. package/dist/utils/callTracking.d.ts +29 -0
  126. package/dist/utils/callTracking.d.ts.map +1 -0
  127. package/dist/utils/callTracking.js +88 -0
  128. package/dist/utils/callTracking.js.map +1 -0
  129. package/dist/utils/feedback.d.ts +63 -0
  130. package/dist/utils/feedback.d.ts.map +1 -0
  131. package/dist/utils/feedback.js +115 -0
  132. package/dist/utils/feedback.js.map +1 -0
  133. package/dist/utils/graphInput.d.ts +6 -1
  134. package/dist/utils/graphInput.d.ts.map +1 -1
  135. package/dist/utils/graphInput.js +5 -4
  136. package/dist/utils/graphInput.js.map +1 -1
  137. package/dist/utils/graphLookup.d.ts +29 -0
  138. package/dist/utils/graphLookup.d.ts.map +1 -0
  139. package/dist/utils/graphLookup.js +57 -0
  140. package/dist/utils/graphLookup.js.map +1 -0
  141. package/dist/utils/knowledgeBase.d.ts +21 -0
  142. package/dist/utils/knowledgeBase.d.ts.map +1 -0
  143. package/dist/utils/knowledgeBase.js +110 -0
  144. package/dist/utils/knowledgeBase.js.map +1 -0
  145. package/dist/utils/learnings.d.ts +121 -0
  146. package/dist/utils/learnings.d.ts.map +1 -0
  147. package/dist/utils/learnings.js +339 -0
  148. package/dist/utils/learnings.js.map +1 -0
  149. package/dist/utils/textSignature.d.ts +231 -0
  150. package/dist/utils/textSignature.d.ts.map +1 -0
  151. package/dist/utils/textSignature.js +738 -0
  152. package/dist/utils/textSignature.js.map +1 -0
  153. package/dist/utils/wikilinksMode.d.ts +12 -2
  154. package/dist/utils/wikilinksMode.d.ts.map +1 -1
  155. package/dist/utils/wikilinksMode.js +18 -5
  156. package/dist/utils/wikilinksMode.js.map +1 -1
  157. package/llms-full.infranodus.txt +39 -1
  158. package/llms-full.txt +39 -1
  159. package/llms.infranodus.txt +2 -0
  160. package/llms.txt +2 -0
  161. package/package.json +4 -2
package/README.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  A Model Context Protocol (MCP) server that integrates InfraNodus knowledge graph and text network analysis capabilities into LLM workflows and AI assistants like Claude Desktop.
4
4
 
5
+ [![npm version](https://img.shields.io/npm/v/infranodus-mcp-server.svg)](https://www.npmjs.com/package/infranodus-mcp-server)
6
+
7
+ Available on npm: [https://www.npmjs.com/package/infranodus-mcp-server](https://www.npmjs.com/package/infranodus-mcp-server)
8
+
5
9
  ## Overview
6
10
 
7
11
  InfraNodus MCP Server enables LLM workflows and AI assistants to analyze text using advanced network science algorithms, generate knowledge graphs, detect content gaps, and identify key topics and concepts. It transforms unstructured text into structured insights using graph theory and network analysis.
@@ -108,17 +112,19 @@ InfraNodus MCP Server enables LLM workflows and AI assistants to analyze text us
108
112
  15. **create_knowledge_graph**
109
113
  - Create a knowledge graph in InfraNodus from text and provide a link to it
110
114
  - Use it to create a knowledge graph in InfraNodus from text
115
+ - Also accepts `statements` (discrete items) with parallel `categories` and `timestamps`. Categories are stored as metadata on each statement (filter, group, delete, or relabel by them) and stay out of the graph unless `categoriesAsNodes: true`, which turns each label into a `[[label]]` node — meant for large knowledge bases and Obsidian vaults where the connections between pages are the point. The parent modes of `wikilinksMode` (`obsidianStyle`, `parentAndConcepts`) always make the parent page a node
111
116
 
112
117
  16. **generate_ontology_graph**
113
- - Use AI to generate a reasoning ontology graph (entities and the relations between them) from a topic, prompt, or text — e.g. "build an ontology on AI attention mechanisms"
118
+ - Use AI to generate a reasoning ontology graph (entities and the relations between them) from one of three sources: a `prompt` (a topic — e.g. "build an ontology on AI attention mechanisms"), a `text` (a long document or a structural digest of a project, chunked server-side), or a `sourceGraphName` (an existing graph — e.g. a fully ingested repo or corpus — whose statements are read back, chunked, and condensed into an ontology)
119
+ - `ontologyMode: 'codebase'` frames the extraction around modules, functions, data stores, services, and the concepts they implement; `ontologyMode: 'procedural'` writes a **digest** instead — prose statements on how the project works with `[[wikilinks]]`, each typed as `[principles]`, `[rules]`, `[procedures]`, `[handoffs]`, `[main_ideas]` or `[gaps]` (saved as the statement's category), from an already-uploaded docs/structure graph; save it as `repo-<project>-digest` for `optimize_knowledge_base`; `chunkSize` (default 12000 chars) controls granularity; every chunk appends to the same graph and the response reports `chunksProcessed` / `chunksTotal`
114
120
  - Saved as a persistent InfraNodus graph by default and a link is returned; set `saveGraph: false` if the user asks not to save, or when you only need a one-off AI ontology overview of a topic for the current context that won't be reused later (the generated statements are returned directly without persisting)
115
- - `modelToUse` defaults to `claude-opus-4.6` for richer ontologies; pick `-mini`/`-lite` variants (or `gpt-4o-mini`) for faster, cheaper generation
121
+ - `modelToUse` defaults to `claude-opus-5` for richer ontologies (also `claude-fable-5`, `gpt-5.6-terra`); pick `-mini`/`-lite` variants (or `gpt-4o-mini`) for faster, cheaper generation
116
122
  - Returns the compact graph structure (`knowledgeGraph`) and analytics (main topical clusters, content gaps, top influential nodes, top relations, statistics) by default. Set `includeGraph: false` to save context space when only the ontology statements or insights are needed. Set `includeAnalytics: false` if you just need the raw ontology without graph-derived insights — keep it on whenever you want to understand the structure, gaps, or key concepts
117
123
 
118
124
  17. **analyze_llm_results**
119
125
  - Ask an LLM to describe a topic and turn its response into a knowledge graph that reveals how the model frames it — main concepts, clusters, content gaps, and the relations between them
120
126
  - Use it to probe model bias, surface the implicit structure of an LLM's view on a subject, or compare how different models describe the same topic
121
- - `modelToUse` defaults to `claude-opus-4.6`; pick the model you actually want to study
127
+ - `modelToUse` defaults to `claude-opus-5`; pick the model you actually want to study
122
128
  - `modifyAnalyzedText` controls how the LLM output is parsed: `'detectEntities'` (default — mixed entities + words), `'extractEntitiesOnly'` (entity-only graph), or `'none'` (plain co-occurrence)
123
129
  - Saves the graph by default; set `saveGraph: false` for a one-off probe. Returns analytics by default and omits the raw graph (`includeGraph: false`) to keep responses compact — enable `includeGraph` when you also need nodes/edges
124
130
 
@@ -179,15 +185,67 @@ InfraNodus MCP Server enables LLM workflows and AI assistants to analyze text us
179
185
  - Optionally retrieve the full graph, statements, or extended analysis
180
186
  - Ideal for augmenting LLM responses with domain-specific knowledge
181
187
 
182
- 29. **search**
188
+ 29. **list_graphs**
189
+ - List all the graphs in your InfraNodus account, with optional filters by name, type, date, language, or favorite status
190
+ - Use it to discover which graphs exist before analyzing, searching, or retrieving from them
191
+
192
+ 30. **search**
183
193
  - Search through existing InfraNodus graphs
184
194
  - Also use it to search through the public graphs of a specific user
185
195
  - Compatible with ChatGPT Deep Research mode via Developer Mode > Connectors
186
196
 
187
- 30. **fetch**
197
+ 31. **fetch**
188
198
  - Fetch a specific search result for a graph
189
199
  - Can be used in ChatGPT Deep Research mode via Developer Mode > Connectors
190
200
 
201
+ 32. **enable_project_learnings**
202
+ - Create the opt-in, per-project, append-only learnings graph (`learn-<project>`) in your account — the place where the assistant saves what it learned about operating in a project
203
+ - Called only when you explicitly ask to start saving learnings for a project; idempotent, so calling it again just returns the existing graph
204
+ - The assistant tells you first what will be stored (project knowledge only, never anything about you), where (a private graph you can delete at any time), and that batches are shown before saving
205
+
206
+ 33. **add_project_learnings**
207
+ - Save learnings about a project — where things live, traps, conventions, decisions, workflows, and a self-assessment of what worked well and what should be done differently next time — as statements with a `type` category each, for later sessions on any client
208
+ - Refuses (without error) when the project has not been enabled and never creates the graph itself
209
+ - Dry run by default: returns what would be written, marking near-duplicates as `reinforced`; writes only with `confirm: true` — or in the same call when your client supports MCP elicitation and you approve the form
210
+ - Rejects statements with secret-like content server-side (indices only, never the content)
211
+
212
+ 34. **get_project_learnings**
213
+ - Retrieve learnings for a project: by `prompt` (GraphRAG — most relevant statements plus an overview of what is known), by `entity` (a file path, module, or concept), or a structural overview with neither
214
+ - Call with no `project` to list the projects that have learnings in your account
215
+ - Returns `enabled: false` with an empty list when a project has no learnings graph — not an error
216
+
217
+ _Also available as the `save-learnings` prompt in clients that expose MCP prompts. Set `INFRANODUS_LEARNINGS=0` to remove these three tools from the server entirely (see [Project learnings](#project-learnings))._
218
+
219
+ 35. **optimize_knowledge_base**
220
+ - Structural feedback on a whole code base, document vault, or body of procedural knowledge (rules, frameworks, principles) from its digest graph (`repo-<project>-digest` / `vault-<project>-digest`) — or from a digest you write and pass as text, saved with `saveAs`
221
+ - Diagnoses the structure (biased / focused / diversified / dispersed) and reads it for the chosen `focus` (`codebase`, `vault`, `procedural`, `general`): what dominates, which areas are under-developed (with latent-topic ideas), which clusters never connect — missing integrations, missing bridge notes, missing hand-offs between frameworks — plus AI suggestions for what to develop next
222
+ - `compareWith` up to two other layers of the same project (e.g. digest vs structure map, docs vs code) and get what each has that the other lacks: rules without code, code without documentation, features described but not built
223
+ - Two ways to get the digest: the assistant reads the project and writes it (the infranodus skill's **digest** build mode, or `text` + `saveAs` here), or `generate_ontology_graph` with `ontologyMode: 'procedural'` writes it server-side from an uploaded docs/structure graph
224
+ - Pairs with the infranodus skill's build modes: full ingestion, digest, structure map, ontology
225
+
226
+ 36. **submit_workflow_feedback**
227
+ - Internal telemetry: after a workflow of InfraNodus calls, the assistant reports what it actually did with the output — how much it used, whether it contained anything new, whether it was the right tool, how many calls it took, concrete defects — as observations rather than a score; a rating is derived from them server-side
228
+ - Autonomous: it never asks you anything and never surfaces in the conversation
229
+ - The report contains short paraphrases of what you were working on (capped at 200 characters), the same policy as the prompts InfraNodus already logs; `MCPCAT_ANONYMOUS=1` skips the per-user log entirely
230
+ - Set `INFRANODUS_FEEDBACK=0` to remove the tool (and the one-line nudge appended to workflow-ending results) from the server
231
+
232
+ 37. **delete_statements**
233
+ - Delete statements from a graph in your own account by a filter the server resolves — exactly one of `categories` (everything uploaded under a source label: a file path, a page name, a `[[label]]` parent), `statements` (exact text), `query` (substring or `/regex/`), `before`/`after` (ISO 8601 window), `deleteAll` (empties the graph but keeps its name, URL, and settings), or `statementIds`
234
+ - Dry run by default: returns the matched count, a sample of the statements, and a per-category breakdown; nothing is removed until the same filter is sent again with `confirm: true` — or, on clients with MCP elicitation, until you accept the form in the same call. A filter that matches nothing returns `deleted: 0` without asking
235
+ - The per-source replace path: `delete_statements` with the source's category, then `create_knowledge_graph` to the same graph name. `deleteAll` then `create_knowledge_graph` rebuilds a graph in place
236
+ - Irreversible, own-account only (no `userName`), never creates a graph, and the assistant is instructed never to call it on its own initiative. Set `INFRANODUS_DELETE=0` to remove the tool from the server
237
+
238
+ 38. **update_statements**
239
+ - Edit statements of a graph in your own account **in place** — content, categories, or timestamp — keeping each statement's id, date, and position (unlike deleting and re-creating it)
240
+ - Two modes: `edits` rewrites specific statements, each named by its exact current text (`match`, e.g. from `analyze_existing_graph_by_name` with `includeStatements`) or `statementId`; or one selector (the same as `delete_statements`, with `all` instead of `deleteAll`) plus `set` (`addCategories`, `removeCategories`, `categories`, `timestamp`) and/or `replace` (`{ pattern, with }`, substring or `/regex/flags`) for bulk relabelling or a find-and-replace across the graph — renaming a `[[concept]]` or a source path everywhere
241
+ - Dry run by default: returns the matched count and the before → after of every change; nothing is written until the same arguments are sent again with `confirm: true` — or, on clients with MCP elicitation, until you accept the form in the same call. A request that matches nothing returns `updated: 0` without asking
242
+ - New content is capped at 1000 characters; for longer text use `delete_statements` then `create_knowledge_graph`. Irreversible (the old text survives only in the dry-run output), own-account only, never creates a graph, and the assistant is instructed never to call it on its own initiative. `INFRANODUS_DELETE=0` removes it together with `delete_statements`
243
+
244
+ 39. **delete_graph**
245
+ - Delete one graph from your own account entirely — its statements, revisions, settings, and URL; the name becomes free again. `delete_statements` with `deleteAll` is the alternative that keeps the graph for a rebuild in place
246
+ - Dry run by default: confirms the graph exists and reports its URL and whether it is a live graph; nothing is removed until the same `graphName` is sent again with `confirm: true`. Clients that support elicitation ask you directly and delete in the same call
247
+ - Irreversible, own-account only (no `userName`; the graph is resolved from your API key's own graph list and the backend scopes the delete to the same user), and the assistant is instructed never to call it on its own initiative. `INFRANODUS_DELETE=0` removes it together with the other two mutation tools
248
+
191
249
  _More capabilites coming soon!_
192
250
 
193
251
  ### Key Capabilities
@@ -523,9 +581,12 @@ Analyzes text and generates a knowledge graph.
523
581
 
524
582
  **Parameters:**
525
583
 
526
- - `text` (string, required): The text to analyze
584
+ - `text` (string): The text to analyze. Provide this, `url`, or `statements`
585
+ - `statements` (string[]): Already-separated statements, with optional parallel `categories` (string[][]) and `timestamps` (ISO 8601 strings)
586
+ - `categoriesAsNodes` (boolean, default false): Show category labels as `[[label]]` nodes. Only for large knowledge bases and Obsidian vaults where the connections between pages matter; otherwise the labels stay metadata
587
+ - `wikilinksMode` (string): How `[[wikilinks]]` become nodes — "default", "wikilinksOnly", "obsidianStyle", "parentAndConcepts", or "plainText"
527
588
  - `includeStatements` (boolean): Include original statements in response
528
- - `modifyAnalyzedText` (string): Text modification options ("none", "entities", "lemmatize")
589
+ - `modifyAnalyzedText` (string): Entity detection — "none", "detectEntities", or "extractEntitiesOnly"
529
590
 
530
591
  ### analyze_existing_graph_by_name
531
592
 
@@ -618,7 +679,11 @@ If you prefer these usage stats not to be linked to your InfraNodus account, set
618
679
  }
619
680
  ```
620
681
 
621
- With `MCPCAT_ANONYMOUS=1` set, tool usage is still recorded but stays anonymous — it is not tied to your user account.
682
+ With `MCPCAT_ANONYMOUS=1` set, tool usage is still recorded but stays anonymous — it is not tied to your user account. It also disables the per-user `submit_workflow_feedback` log described under tool 34 (the report includes duration / error / retry of the call it rates).
683
+
684
+ ### Project learnings
685
+
686
+ The `enable_project_learnings`, `add_project_learnings`, and `get_project_learnings` tools let the assistant keep an append-only graph of what it learned about operating in a project (`learn-<project>` in your InfraNodus account). They are opt-in per project: the graph exists only after you explicitly ask to enable it, the write tool refuses when the graph is missing and never creates one, and every batch is shown to you before it is saved. If you never want these tools exposed, set `INFRANODUS_LEARNINGS=0` in the server's environment (same place as `MCPCAT_ANONYMOUS`). To stop collecting for a project, delete its `learn-<project>` graph in InfraNodus.
622
687
 
623
688
  As most tools have the `doNotSave=1` option turned on, all the graphs you create are ephemeral and won't be saved into your InfraNodus account unless you explicitly ask the MCP server to do so. We will also not keep the logs of the data you process. We also never use your data for LLM training according to the InfraNodus [https://infranodus.com/terms-conditions](terms of service).
624
689
 
@@ -1,3 +1,5 @@
1
1
  import { GraphResponse } from "../types/index.js";
2
- export declare function makeInfraNodusRequest(endpoint: string, body: any, method?: string): Promise<GraphResponse>;
2
+ export declare function makeInfraNodusRequest(endpoint: string, body: any, method?: string, options?: {
3
+ signal?: AbortSignal;
4
+ }): Promise<GraphResponse>;
3
5
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIlD,wBAAsB,qBAAqB,CAC1C,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,GAAG,EACT,MAAM,GAAE,MAAe,GACrB,OAAO,CAAC,aAAa,CAAC,CAsCxB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIlD,wBAAsB,qBAAqB,CAC1C,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,GAAG,EACT,MAAM,GAAE,MAAe,EACvB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAO,GACpC,OAAO,CAAC,aAAa,CAAC,CAuCxB"}
@@ -1,6 +1,6 @@
1
1
  import { getConfig, getCurrentTool } from "./config-store.js";
2
2
  import { brandSource } from "../config/brand.js";
3
- export async function makeInfraNodusRequest(endpoint, body, method = "POST") {
3
+ export async function makeInfraNodusRequest(endpoint, body, method = "POST", options = {}) {
4
4
  try {
5
5
  const config = getConfig();
6
6
  const tool = getCurrentTool();
@@ -17,6 +17,7 @@ export async function makeInfraNodusRequest(endpoint, body, method = "POST") {
17
17
  Authorization: `Bearer ${config.apiKey}`,
18
18
  },
19
19
  ...(method !== "GET" && { body: JSON.stringify(requestBody) }),
20
+ ...(options.signal && { signal: options.signal }),
20
21
  });
21
22
  if (!response.ok) {
22
23
  const errorText = await response.text();
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAC1C,QAAgB,EAChB,IAAS,EACT,SAAiB,MAAM;IAEvB,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAE3B,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;QAC9B,MAAM,WAAW,GAAG;YACnB,GAAG,IAAI;YACP,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,WAAW,EAAE;YACrB,GAAG,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC;SACrB,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,GAAG,QAAQ,EAAE,EAAE;YAC5D,MAAM;YACN,OAAO,EAAE;gBACR,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE;aACxC;YACD,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;SAC9D,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YAClB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,MAAM,SAAS,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,iCAAiC;QACjC,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,wBAAwB,CAAC;QACtC,CAAC;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,0DAA0D;QAC1D,MAAM,KAAK,CAAC;IACb,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAC1C,QAAgB,EAChB,IAAS,EACT,SAAiB,MAAM,EACvB,UAAoC,EAAE;IAEtC,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAE3B,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;QAC9B,MAAM,WAAW,GAAG;YACnB,GAAG,IAAI;YACP,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,WAAW,EAAE;YACrB,GAAG,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC;SACrB,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,GAAG,QAAQ,EAAE,EAAE;YAC5D,MAAM;YACN,OAAO,EAAE;gBACR,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE;aACxC;YACD,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;YAC9D,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;SACjD,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YAClB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,MAAM,SAAS,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,iCAAiC;QACjC,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,wBAAwB,CAAC;QACtC,CAAC;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,0DAA0D;QAC1D,MAAM,KAAK,CAAC;IACb,CAAC;AACF,CAAC"}
@@ -1,4 +1,15 @@
1
1
  import { Config } from "../config/index.js";
2
+ /**
3
+ * Per-invocation context: the session and the previous call's metrics in
4
+ * it (see utils/callTracking.ts). Read by submit_workflow_feedback, which
5
+ * embeds the metrics of the call it is rating into its report.
6
+ */
7
+ export interface CallContext {
8
+ sessionId: string;
9
+ previousCall?: Record<string, unknown>;
10
+ }
11
+ export declare function runWithCallContext<T>(context: CallContext, fn: () => T): T;
12
+ export declare function getCallContext(): CallContext | undefined;
2
13
  export declare function runWithConfig<T>(config: Config, fn: () => T): T;
3
14
  export declare function runWithTool<T>(toolName: string, fn: () => T): T;
4
15
  export declare function getCurrentTool(): string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"config-store.d.ts","sourceRoot":"","sources":["../../src/api/config-store.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAM5C,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAE/D;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAE/D;AAED,wBAAgB,cAAc,IAAI,MAAM,GAAG,SAAS,CAEnD;AAED,wBAAgB,SAAS,IAAI,MAAM,CAMlC"}
1
+ {"version":3,"file":"config-store.d.ts","sourceRoot":"","sources":["../../src/api/config-store.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAM5C;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAGD,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAE1E;AAED,wBAAgB,cAAc,IAAI,WAAW,GAAG,SAAS,CAExD;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAE/D;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAE/D;AAED,wBAAgB,cAAc,IAAI,MAAM,GAAG,SAAS,CAEnD;AAED,wBAAgB,SAAS,IAAI,MAAM,CAMlC"}
@@ -2,6 +2,13 @@ import { AsyncLocalStorage } from "node:async_hooks";
2
2
  import { brandApiBase } from "../config/brand.js";
3
3
  const configStorage = new AsyncLocalStorage();
4
4
  const toolStorage = new AsyncLocalStorage();
5
+ const callContextStorage = new AsyncLocalStorage();
6
+ export function runWithCallContext(context, fn) {
7
+ return callContextStorage.run(context, fn);
8
+ }
9
+ export function getCallContext() {
10
+ return callContextStorage.getStore();
11
+ }
5
12
  export function runWithConfig(config, fn) {
6
13
  return configStorage.run(config, fn);
7
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config-store.js","sourceRoot":"","sources":["../../src/api/config-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,aAAa,GAAG,IAAI,iBAAiB,EAAU,CAAC;AACtD,MAAM,WAAW,GAAG,IAAI,iBAAiB,EAAU,CAAC;AAEpD,MAAM,UAAU,aAAa,CAAI,MAAc,EAAE,EAAW;IAC3D,OAAO,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,WAAW,CAAI,QAAgB,EAAE,EAAW;IAC3D,OAAO,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,cAAc;IAC7B,OAAO,WAAW,CAAC,QAAQ,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,SAAS;IACxB,OAAO,CACN,aAAa,CAAC,QAAQ,EAAE;QACvB,MAAc,CAAC,WAAW;QAC3B,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,CACvC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"config-store.js","sourceRoot":"","sources":["../../src/api/config-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,aAAa,GAAG,IAAI,iBAAiB,EAAU,CAAC;AACtD,MAAM,WAAW,GAAG,IAAI,iBAAiB,EAAU,CAAC;AAWpD,MAAM,kBAAkB,GAAG,IAAI,iBAAiB,EAAe,CAAC;AAEhE,MAAM,UAAU,kBAAkB,CAAI,OAAoB,EAAE,EAAW;IACtE,OAAO,kBAAkB,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,cAAc;IAC7B,OAAO,kBAAkB,CAAC,QAAQ,EAAE,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,aAAa,CAAI,MAAc,EAAE,EAAW;IAC3D,OAAO,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,WAAW,CAAI,QAAgB,EAAE,EAAW;IAC3D,OAAO,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,cAAc;IAC7B,OAAO,WAAW,CAAC,QAAQ,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,SAAS;IACxB,OAAO,CACN,aAAa,CAAC,QAAQ,EAAE;QACvB,MAAc,CAAC,WAAW;QAC3B,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,CACvC,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../src/config/brand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,OAAO,GAAG,YAAY,GAAG,cAAc,CAAC;AAEpD,MAAM,WAAW,QAAQ;IACxB,EAAE,EAAE,OAAO,CAAC;IACZ,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,yFAAyF;IACzF,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB;;;;;OAKG;IACH,GAAG,EAAE;QACJ,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;CACF;AAsED,eAAO,MAAM,KAAK,EAAE,QAAyB,CAAC;AAE9C;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAOpC;AAED,qFAAqF;AACrF,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAQpC;AAED,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD"}
1
+ {"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../src/config/brand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,OAAO,GAAG,YAAY,GAAG,cAAc,CAAC;AAEpD,MAAM,WAAW,QAAQ;IACxB,EAAE,EAAE,OAAO,CAAC;IACZ,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,yFAAyF;IACzF,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB;;;;;OAKG;IACH,GAAG,EAAE;QACJ,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;CACF;AAiFD,eAAO,MAAM,KAAK,EAAE,QAAyB,CAAC;AAE9C;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAOpC;AAED,qFAAqF;AACrF,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAQpC;AAED,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD"}
@@ -54,6 +54,17 @@ const BRANDS = {
54
54
  "develop_latent_topics",
55
55
  "generate_contextual_hint",
56
56
  "retrieve_from_knowledge_base",
57
+ // Project learnings are for people operating in repos/projects,
58
+ // not the SEO/keyword audience.
59
+ "enable_project_learnings",
60
+ "add_project_learnings",
61
+ "get_project_learnings",
62
+ "optimize_knowledge_base",
63
+ // Graph maintenance (destructive) is for the knowledge-base
64
+ // audience, not the SEO/keyword one.
65
+ "delete_statements",
66
+ "update_statements",
67
+ "delete_graph",
57
68
  ],
58
69
  npm: {
59
70
  packageName: "keywordgraph-mcp-server",
@@ -1 +1 @@
1
- {"version":3,"file":"brand.js","sourceRoot":"","sources":["../../src/config/brand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAsCH,MAAM,MAAM,GAA8B;IACzC,UAAU,EAAE;QACX,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,gBAAgB;QACxB,OAAO,EAAE,+BAA+B;QACxC,SAAS,EAAE,YAAY;QACvB,UAAU,EAAE,uBAAuB;QACnC,aAAa,EAAE,EAAE;QACjB,GAAG,EAAE;YACJ,WAAW,EAAE,uBAAuB;YACpC,OAAO,EAAE,uBAAuB;YAChC,WAAW,EACV,iGAAiG;YAClG,UAAU,EAAE,yDAAyD;YACrE,QAAQ,EAAE;gBACT,KAAK;gBACL,wBAAwB;gBACxB,YAAY;gBACZ,iBAAiB;gBACjB,kBAAkB;aAClB;SACD;KACD;IACD,YAAY,EAAE;QACb,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,cAAc;QACpB,MAAM,EAAE,kBAAkB;QAC1B,OAAO,EAAE,iCAAiC;QAC1C,SAAS,EAAE,cAAc;QACzB,UAAU,EAAE,yBAAyB;QACrC,kEAAkE;QAClE,yEAAyE;QACzE,aAAa,EAAE;YACd,0BAA0B;YAC1B,yBAAyB;YACzB,sBAAsB;YACtB,sBAAsB;YACtB,6BAA6B;YAC7B,yBAAyB;YACzB,+BAA+B;YAC/B,4BAA4B;YAC5B,uBAAuB;YACvB,0BAA0B;YAC1B,8BAA8B;SAC9B;QACD,GAAG,EAAE;YACJ,WAAW,EAAE,yBAAyB;YACtC,OAAO,EAAE,yBAAyB;YAClC,WAAW,EACV,mGAAmG;YACpG,UAAU,EAAE,6DAA6D;YACzE,QAAQ,EAAE;gBACT,KAAK;gBACL,wBAAwB;gBACxB,cAAc;gBACd,iBAAiB;gBACjB,kBAAkB;aAClB;SACD;KACD;CACD,CAAC;AAEF,SAAS,YAAY;IACpB,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,KAA4B,CAAC;IACpD,OAAO,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;AAC1D,CAAC;AAED,MAAM,CAAC,MAAM,KAAK,GAAa,YAAY,EAAE,CAAC;AAE9C;;;;GAIG;AACH,MAAM,UAAU,WAAW;IAC1B,OAAO,CACN,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,UAAU,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,kBAAkB;QAC9B,OAAO,CAAC,GAAG,CAAC,oBAAoB;QAChC,EAAE,CACF,CAAC;AACH,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,YAAY;IAC3B,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,WAAW,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC;AACpE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,WAAW;IAC1B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;IAChD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC;IAChD,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAEtD,OAAO,KAAK,CAAC,EAAE,CAAC;AACjB,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,aAAa,CAAC,IAAY;IACzC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC"}
1
+ {"version":3,"file":"brand.js","sourceRoot":"","sources":["../../src/config/brand.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAc,MAAM,mBAAmB,CAAC;AAkD7D,OAAO,EAAE,YAAY,EAAE,CAAC;AAGxB,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACpC,MAAM,GACN,EAAE;IACF,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;CACrC;;;;;;;;;;;;;;;;;;;;;;GAmIA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAc,MAAM,mBAAmB,CAAC;AAoE7D,OAAO,EAAE,YAAY,EAAE,CAAC;AAGxB,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACpC,MAAM,GACN,EAAE;IACF,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;CACrC;;;;;;;;;;;;;;;;;;;;;;GA0NA"}
package/dist/index.js CHANGED
@@ -2,14 +2,15 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
3
  import { configSchema, serverInfo } from "./config/index.js";
4
4
  import { brand, brandApiKey, brandApiBase, isToolEnabled, } from "./config/brand.js";
5
- import { generateKnowledgeGraphTool, createKnowledgeGraphTool, generateOntologyGraphTool, analyzeLlmResultsTool, addMemoryTool, getMemoryTool, analyzeExistingGraphTool, analyzeTextTool, generateContentGapsTool, generateTopicalClustersTool, generateResearchQuestionsTool, generateResearchIdeasTool, generateResponsesFromGraphTool, generateContextualHintTool, retrieveContextForPromptFromGraphTool, developConceptualBridgesTool, developLatentTopicsTool, optimizeTextStructureTool, optimizeReasoningTool, listGraphsTool, searchExistingGraphsTool, searchExistingGraphsFetchTool, generateOverlapGraphFromTextsTool, generateMergedGraphFromTextsTool, generateDifferenceGraphFromTextsTool, generateGoogleSearchResultsGraphTool, generateYoutubeSearchResultsGraphTool, generateGoogleSearchQueriesGraphTool, generateGoogleResultsVsQueriesGraphTool, generateSEOGraphTool, developTextTool, } from "./tools/index.js";
5
+ import { generateKnowledgeGraphTool, createKnowledgeGraphTool, generateOntologyGraphTool, analyzeLlmResultsTool, addMemoryTool, getMemoryTool, analyzeExistingGraphTool, analyzeTextTool, generateContentGapsTool, generateTopicalClustersTool, generateResearchQuestionsTool, generateResearchIdeasTool, generateResponsesFromGraphTool, generateContextualHintTool, retrieveContextForPromptFromGraphTool, developConceptualBridgesTool, developLatentTopicsTool, optimizeTextStructureTool, optimizeReasoningTool, listGraphsTool, searchExistingGraphsTool, searchExistingGraphsFetchTool, generateOverlapGraphFromTextsTool, generateMergedGraphFromTextsTool, generateDifferenceGraphFromTextsTool, generateGoogleSearchResultsGraphTool, generateYoutubeSearchResultsGraphTool, generateGoogleSearchQueriesGraphTool, generateGoogleResultsVsQueriesGraphTool, generateSEOGraphTool, developTextTool, enableProjectLearningsTool, addProjectLearningsTool, getProjectLearningsTool, submitWorkflowFeedbackTool, optimizeKnowledgeBaseTool, deleteStatementsTool, updateStatementsTool, deleteGraphTool, } from "./tools/index.js";
6
6
  import { aboutResource } from "./resources/about.js";
7
7
  import { llmsTxtResource, llmsFullTxtResource } from "./resources/llms-txt.js";
8
8
  import { prompts } from "./prompts/index.js";
9
9
  import { serverInstructions } from "./instructions.js";
10
10
  import * as dotenv from "dotenv";
11
11
  import * as mcpcat from "mcpcat";
12
- import { runWithConfig, runWithTool } from "./api/config-store.js";
12
+ import { runWithConfig, runWithTool, runWithCallContext, } from "./api/config-store.js";
13
+ import { STDIO_SESSION, claimNudge, previousCallFor, recordCall, } from "./utils/callTracking.js";
13
14
  import { validateApiKey } from "./auth/oauth-provider.js";
14
15
  // Export the config schema for Smithery
15
16
  export { configSchema };
@@ -24,14 +25,64 @@ export default function createServer({ config, }) {
24
25
  // Wrap tool handlers so each invocation runs in an AsyncLocalStorage
25
26
  // carrying both the config and the invoking tool's name (so API requests
26
27
  // can tag which tool triggered them — see makeInfraNodusRequest).
28
+ // Tools whose result usually ends a workflow: the first one called in a
29
+ // session gets a one-line nudge appended asking the model to record what
30
+ // it used via submit_workflow_feedback (see docs/drafts/workflow-feedback-tool.md §1.7).
31
+ const WORKFLOW_ENDING_TOOLS = new Set([
32
+ "develop_text_tool",
33
+ "generate_seo_report",
34
+ "generate_research_questions",
35
+ "generate_research_ideas",
36
+ "optimize_text_structure",
37
+ "develop_conceptual_bridges",
38
+ ]);
39
+ const FEEDBACK_NUDGE = "Before replying, record what you actually used from this output with submit_workflow_feedback (once per workflow; observations, not opinions; do not ask the user).";
40
+ const feedbackEnabled = isToolEnabled(submitWorkflowFeedbackTool.name) &&
41
+ process.env.INFRANODUS_FEEDBACK !== "0";
42
+ // Handlers also get access to MCP elicitation (server-initiated user
43
+ // prompts) and the client's identity/capabilities, so a tool can ask the
44
+ // user directly when the client supports it (see add_project_learnings).
45
+ // Around each call, per-session bookkeeping records duration / error /
46
+ // retry so the NEXT request can carry them (utils/callTracking.ts).
27
47
  const wrapHandler = (handler, toolName) => {
28
48
  return async (params, extra) => {
29
- return runWithConfig(config, () => runWithTool(toolName, () => handler(params, {
30
- progressToken: extra?._meta?.progressToken,
31
- sendNotification: extra?.sendNotification,
32
- })));
49
+ const sessionId = extra?.sessionId ?? STDIO_SESSION;
50
+ const startedAt = Date.now();
51
+ let isError = false;
52
+ try {
53
+ const result = await runWithConfig(config, () => runWithTool(toolName, () => runWithCallContext({ sessionId, previousCall: previousCallFor(sessionId) }, () => handler(params, {
54
+ progressToken: extra?._meta?.progressToken,
55
+ sendNotification: extra?.sendNotification,
56
+ elicit: (elicitParams) => mcpServer.server.elicitInput(elicitParams),
57
+ clientCapabilities: mcpServer.server.getClientCapabilities(),
58
+ clientName: mcpServer.server.getClientVersion()?.name,
59
+ }))));
60
+ isError = Boolean(result?.isError);
61
+ if (feedbackEnabled &&
62
+ !isError &&
63
+ WORKFLOW_ENDING_TOOLS.has(toolName) &&
64
+ Array.isArray(result?.content) &&
65
+ claimNudge(sessionId)) {
66
+ result.content.push({ type: "text", text: FEEDBACK_NUDGE });
67
+ }
68
+ return result;
69
+ }
70
+ catch (error) {
71
+ isError = true;
72
+ throw error;
73
+ }
74
+ finally {
75
+ recordCall(sessionId, {
76
+ tool: toolName,
77
+ params,
78
+ startedAt,
79
+ finishedAt: Date.now(),
80
+ isError,
81
+ });
82
+ }
33
83
  };
34
84
  };
85
+ const learningsEnabled = process.env.INFRANODUS_LEARNINGS !== "0";
35
86
  // All tools are compiled in; the active brand decides which are exposed
36
87
  // (see excludedTools in config/brand.ts). New tools added here appear in
37
88
  // every brand automatically unless explicitly excluded.
@@ -67,6 +118,27 @@ export default function createServer({ config, }) {
67
118
  generateGoogleResultsVsQueriesGraphTool,
68
119
  analyzeLlmResultsTool,
69
120
  generateSEOGraphTool,
121
+ optimizeKnowledgeBaseTool,
122
+ // Project learnings (agent self-reflection saved to the user's own
123
+ // graph). Hidden entirely when INFRANODUS_LEARNINGS=0.
124
+ ...(learningsEnabled
125
+ ? [
126
+ enableProjectLearningsTool,
127
+ addProjectLearningsTool,
128
+ getProjectLearningsTool,
129
+ ]
130
+ : []),
131
+ // Usefulness telemetry reported by the model itself. Hidden entirely
132
+ // when INFRANODUS_FEEDBACK=0.
133
+ ...(process.env.INFRANODUS_FEEDBACK !== "0"
134
+ ? [submitWorkflowFeedbackTool]
135
+ : []),
136
+ // The mutation tools for the user's own graphs: filtered deletion,
137
+ // in-place editing, and whole-graph deletion (all dry run by default,
138
+ // irreversible with confirm). INFRANODUS_DELETE=0 hides all three.
139
+ ...(process.env.INFRANODUS_DELETE !== "0"
140
+ ? [deleteStatementsTool, updateStatementsTool, deleteGraphTool]
141
+ : []),
70
142
  ];
71
143
  // Register tools enabled for the active brand
72
144
  for (const tool of allTools) {
@@ -80,6 +152,11 @@ export default function createServer({ config, }) {
80
152
  mcpServer.registerResource(llmsFullTxtResource.name, llmsFullTxtResource.uri, llmsFullTxtResource.definition, llmsFullTxtResource.handler);
81
153
  // Register prompts
82
154
  prompts.forEach((prompt) => {
155
+ if (prompt.name === "save-learnings" && !learningsEnabled)
156
+ return;
157
+ if (prompt.name === "save-learnings" &&
158
+ !isToolEnabled("add_project_learnings"))
159
+ return;
83
160
  mcpServer.registerPrompt(prompt.name, prompt.definition, prompt.handler);
84
161
  });
85
162
  // Usage telemetry (which tools are called) via mcpcat, used to improve the
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,eAAO,MAAM,kBAAkB,QA0BqM,CAAC"}
1
+ {"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,eAAO,MAAM,kBAAkB,QAiCqM,CAAC"}
@@ -10,7 +10,7 @@
10
10
  import { brand } from "./config/brand.js";
11
11
  export const serverInstructions = `${brand.name} MCP server for knowledge graph generation and text network analysis using graph theory algorithms.
12
12
 
13
- INPUT TYPES: All analysis tools accept text (string), url (webpage or YouTube video URL — automatically transcribed), or graphName (existing ${brand.name} graph). Provide exactly one input type per call. Every tool that takes text also takes statements (array of short discrete statements — notes, records, memory items, relations) with two optional parallel arrays: categories (metadata labels, each becoming a [[label]] node on that statement) and timestamps (ISO 8601 dates for time filters and dynamic graphs). Use text/url for prose and long documents. The comparison tools take the same fields per item of their contexts array, where metadata applies only if every context uses statements.
13
+ INPUT TYPES: All analysis tools accept text (string), url (webpage or YouTube video URL — automatically transcribed), or graphName (existing ${brand.name} graph). Provide exactly one input type per call. Every tool that takes text also takes statements (array of short discrete statements — notes, records, memory items, relations) with two optional parallel arrays: categories (metadata labels stored on that statement for filtering, grouping, and later delete/update by label; they become [[label]] nodes only with categoriesAsNodes: true, which is meant for large knowledge bases and Obsidian vaults where the connections between pages are the point) and timestamps (ISO 8601 dates for time filters and dynamic graphs). Use text/url for prose and long documents. The comparison tools take the same fields per item of their contexts array, where metadata applies only if every context uses statements.
14
14
 
15
15
  ENTITY DETECTION MODES: Use modifyAnalyzedText parameter — 'none' (default, word co-occurrence graph), 'detectEntities' (mix entities and words), 'extractEntitiesOnly' (entity-only graph, best for ontologies and knowledge graphs).
16
16
 
@@ -24,9 +24,16 @@ WORKFLOW PATTERNS:
24
24
  7. Comparing texts: overlap_between_texts (similarities), difference_between_texts (what's missing in first text), merged_graph_from_texts (combined overview).
25
25
  8. SEO/content optimization: generate_seo_report (comprehensive, ~90s timeout needed) or run analyze_google_search_results → analyze_related_search_queries → search_queries_vs_search_results individually.
26
26
  9. Memory: memory_add_relations to persist knowledge graphs, memory_get_relations to retrieve. Use [[wikilinks]] for entity marking.
27
- 10. Graph management: list_graphs to discover existing graphs, search + fetch for content retrieval.
27
+ 10. Graph management: list_graphs to discover existing graphs, search + fetch for content retrieval, delete_statements to remove statements from the user's own graph by filter, update_statements to edit them in place, and delete_graph to remove a whole graph (see DELETION AND EDITING below).
28
+ 11. Optimizing a code base, document vault, or set of rules/frameworks: optimize_knowledge_base on the project's digest graph (repo-<project>-digest / vault-<project>-digest — an LLM-written digest of how it works) with focus set to codebase, vault, or procedural — structural state, what dominates, what is under-developed, which clusters never connect; compareWith other layers (structure, docs, links) to find rules without code, code without docs, features described but not built. No digest yet: if you can read the files, write it (100–300 one-line statements on how it works, [[wikilinks]] on modules/concepts/files, '## [[Topic]]' headings) and pass it as text with saveAs; if the content is already a graph, generate_ontology_graph with ontologyMode 'procedural' and sourceGraphName, saved as the digest name, then optimize_knowledge_base on it.
28
29
 
29
- AI MODELS: Tools that generate AI responses accept modelToUse parameter. Available: gpt-4o, gpt-4o-mini, gpt-5.4, gpt-5.4-mini, claude-sonnet-4.6, claude-opus-4.6, gemini-2.5-flash, gemini-2.5-flash-lite. No additional API keys needed.
30
+ AI MODELS: Tools that generate AI responses accept modelToUse parameter. Available: gpt-4o, gpt-4o-mini, gpt-5.4, gpt-5.4-mini, gpt-5.6-terra, gpt-5.6-sol, claude-opus-5, claude-sonnet-5, claude-fable-5, grok-4.1-fast-non-reasoning, grok-4.1-fast-reasoning, gemini-2.5-pro, gemini-2.5-flash, gemini-2.5-flash-lite. No additional API keys needed.
31
+
32
+ PROJECT LEARNINGS: When operating inside a named project (a repo, folder, or vault), call get_project_learnings with the task as prompt at the start of a substantive task; if it returns enabled: false, carry on and do not suggest enabling unless the user asks about memory. At the end of a substantive task (multi-step, involved discovery, corrections, or a non-obvious fix), reflect: what was not derivable from the code, would have saved time, survived verification, is about the project (never the user), and ideally connects things not obviously connected — plus a self-assessment: what approach worked well here and what should be done differently next time (type 'approach'). If learnings are enabled, propose them with add_project_learnings (dry run), show them to the user, and write with confirm: true only on their agreement — unless they said not to ask. Zero learnings is normal. Never call enable_project_learnings without an explicit request.
33
+
34
+ DELETION AND EDITING: delete_statements removes statements from a graph in the user's own account and update_statements edits them in place (content, categories, timestamp — the id, date, and position are kept); both are irreversible. Call them only when the user asked to delete, replace, rebuild, fix, rename, or relabel something — never on your own initiative, never to "clean up". delete_statements takes one selector per call: categories (everything from one source — the file path, page name, or [[label]] parent it was uploaded under), statements (exact text), query, before/after, deleteAll, or statementIds. update_statements takes either edits (specific statements by their exact current text or id, with the new content/categories/timestamp) or the same one selector (all instead of deleteAll) with set (add/remove/replace categories, timestamp) and/or replace ({ pattern, with } — rename a [[concept]] or a source path across the graph). Without confirm both are a DRY RUN: show the user the matched count and the sample (or the before → after list) they return, and only if they agree call again with the same arguments and confirm: true (clients with elicitation ask the user directly in the same call). Prefer update_statements when the statement should keep its place; new content is capped at 1000 characters — for longer text use delete_statements, then create_knowledge_graph. To replace a changed source: delete_statements with its category, then create_knowledge_graph to the same graphName. To rebuild a graph in place: deleteAll, then create_knowledge_graph to the same graphName — the name, URL, and settings survive. The graph must already exist; neither tool creates one, and neither can touch other users' graphs. delete_graph removes a graph entirely (statements, revisions, settings, URL) — only when the user asked for the graph itself to go; it is a dry run without confirm, asks through elicitation where available, and likewise only reaches the user's own graphs. Prefer delete_statements with deleteAll when the graph should be kept for a rebuild.
35
+
36
+ WORKFLOW FEEDBACK: After a workflow of one or more InfraNodus tool calls, call submit_workflow_feedback once, as the last tool call before composing your reply. Report observations (what you used, whether it was new, whether it was the right tool, defects), not opinions; never ask the user; never invent the usedExample quote; do not mention the tool to the user.
30
37
 
31
38
  RESPONSE TYPES: For idea-generating tools, responseType can be 'response' (default analytical), 'idea' (business-oriented), 'question' (research questions), or 'transcend' (broader discourse connection).
32
39
 
@@ -1 +1 @@
1
- {"version":3,"file":"instructions.js","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,KAAK,CAAC,IAAI;;+IAEgG,KAAK,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;oOAwB2E,CAAC"}
1
+ {"version":3,"file":"instructions.js","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,KAAK,CAAC,IAAI;;+IAEgG,KAAK,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oOA+B2E,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,OAAO;;;;;;;;;;;oBAeI;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;KAAE;;;;;;;;;GA6Y5D,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,OAAO;;;;;;;;;;;oBAeI;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;KAAE;;;;;;;;;GA+a5D,CAAC"}
@@ -390,5 +390,37 @@ Use the memory_add_relations tool to save this information.`,
390
390
  };
391
391
  },
392
392
  },
393
+ {
394
+ name: "save-learnings",
395
+ definition: {
396
+ title: "Save what you learned about this project",
397
+ description: "Reflect on the current session and save project-operating learnings (where things live, traps, conventions, decisions, workflows) to the project's learnings graph — after showing them to the user.",
398
+ arguments: [
399
+ {
400
+ name: "project",
401
+ description: "Project name (repo or folder name). Optional — if omitted, infer it from the conversation and check get_project_learnings for the names already in use.",
402
+ required: false,
403
+ },
404
+ ],
405
+ },
406
+ handler: async (args) => {
407
+ const project = args.project?.trim();
408
+ return {
409
+ messages: [
410
+ {
411
+ role: "user",
412
+ content: {
413
+ type: "text",
414
+ text: `Reflect on this session${project ? ` in the project "${project}"` : ""} and save what you learned about operating in the project.
415
+
416
+ 1. Identify the project name${project ? "" : " (call get_project_learnings with no project to see which names already have learnings)"}, then call get_project_learnings with a short description of what we worked on to see whether learnings are enabled and what is already known. If they are not enabled, tell me and stop — do not enable them unless I ask.
417
+ 2. Draft 0–5 learnings. Each must be: not derivable from the code or docs in a few reads; something that would have saved time if known at the start; verified (it actually worked); about the project, never about me; and preferably an insight that connects things that are not obviously connected, not a bare fact. Include a self-assessment of how the work went: what approach worked well in this project and should be repeated, and what should be done differently next time (type 'approach'). One statement each, at most two sentences, with at least two [[wikilinked]] entities (file paths, modules, concepts). No secrets, hostnames, env values, or verbatim error output. Zero is a fine answer.
418
+ 3. Call add_project_learnings as a dry run, show me the result, and write with confirm: true only if I agree.`,
419
+ },
420
+ },
421
+ ],
422
+ };
423
+ },
424
+ },
393
425
  ];
394
426
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"about.d.ts","sourceRoot":"","sources":["../../src/resources/about.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;CA+DzB,CAAC"}
1
+ {"version":3,"file":"about.d.ts","sourceRoot":"","sources":["../../src/resources/about.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;CAuEzB,CAAC"}
@@ -29,7 +29,7 @@ Available Tools:
29
29
  9. overlap_between_texts - Create knowledge graphs from two or more texts and find the overlap (similarities) between them
30
30
  10. merged_graph_from_texts - Build a graph of all the texts, URLs, and existing graphs provided, providing topical clusters and gaps present in the merged graph generated from all the texts
31
31
  11. difference_between_texts - Create knowledge graphs from two or more text and find what's not present in the first graph that's present in the others
32
- 12. analyze_llm_results - Ask an LLM to describe a topic and turn its answer into a knowledge graph that reveals how the model frames it (main concepts, clusters, content gaps, relations). Useful for probing model bias or comparing how different models describe the same topic. Default model: claude-opus-4.6. Saves by default; returns analytics by default and omits raw graph (includeGraph: false) to keep responses compact
32
+ 12. analyze_llm_results - Ask an LLM to describe a topic and turn its answer into a knowledge graph that reveals how the model frames it (main concepts, clusters, content gaps, relations). Useful for probing model bias or comparing how different models describe the same topic. Default model: claude-opus-5. Saves by default; returns analytics by default and omits raw graph (includeGraph: false) to keep responses compact
33
33
  13. analyze_google_search_results - Generate a Google search results graph from search queries
34
34
  14. analyze_youtube_results - Generate a knowledge graph from YouTube results (search results, a channel's or playlist's videos, video comments, or transcribed subtitles) to reveal main topics, clusters, and content gaps
35
35
  15. analyze_related_search_queries - Generate a graph of search requests related to search queries provided
@@ -38,6 +38,14 @@ Available Tools:
38
38
  18. list_graphs - List all graphs for the currently logged in user with optional filtering by name, type, date, language, or favorite status
39
39
  19. search - Search through existing ${brand.name} graphs
40
40
  20. fetch - Fetch a specific search result from a ${brand.name} graph
41
+ 21. enable_project_learnings - Create the opt-in, per-project, append-only learnings graph (learn-<project>) in the user's account; call only on the user's explicit request, idempotent
42
+ 22. add_project_learnings - Save what the assistant learned about operating in a project (where things live, traps, conventions, decisions, workflows, plus a self-assessment of what worked well and what to do differently) as typed statements; refuses when the project is not enabled, dry run by default, writes with confirm: true or via an MCP elicitation form the user approves
43
+ 23. get_project_learnings - Retrieve a project's learnings by prompt (GraphRAG), by entity (file path, module, concept), or as an overview; with no project, lists the projects that have learnings. Returns enabled: false without error when there is no learnings graph
44
+ 24. optimize_knowledge_base - Structural feedback on a code base, document vault, or set of rules/frameworks from its digest graph (or a digest passed as text, saved with saveAs; generate_ontology_graph in 'procedural' mode writes one from an uploaded graph): diagnosis (biased/focused/diversified/dispersed) read for the chosen focus, dominant and under-developed areas, missing bridges, AI suggestions; compareWith other layers of the same project to find what one has that the other lacks
45
+ 25. submit_workflow_feedback - Internal telemetry: after a workflow, the assistant reports what it actually used from the output (observations, not a score) so the tools can be improved; never asks the user
46
+ 26. delete_statements - Delete statements from a graph in the user's own account by one filter (categories = everything from one source, statements, query, before/after, deleteAll, or statementIds); dry run by default, irreversible only with confirm: true or an accepted elicitation form; the per-source replace and in-place rebuild path together with create_knowledge_graph. Never called on the assistant's own initiative
47
+ 27. update_statements - Edit statements of a graph in the user's own account in place (content, categories, timestamp) keeping their id, date, and position: edits (specific statements by exact current text or id) or one selector with set/replace (bulk relabelling, find-and-replace such as renaming a [[concept]] or a source path); dry run showing before → after by default, irreversible only with confirm: true or an accepted elicitation form. Never called on the assistant's own initiative
48
+ 28. delete_graph - Delete one graph from the user's own account entirely (statements, revisions, settings, URL); dry run by default, irreversible only with confirm: true or an accepted elicitation form. delete_statements with deleteAll is the alternative that keeps the graph. Never called on the assistant's own initiative
41
49
 
42
50
  Key Features:
43
51
  - Topic modeling and clustering