onlymcp 0.10.0 → 0.12.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 (63) hide show
  1. package/README.md +14 -11
  2. package/dist/apiBaseUrl.d.ts +12 -0
  3. package/dist/apiBaseUrl.js +28 -0
  4. package/dist/apiBaseUrl.js.map +1 -0
  5. package/dist/apiClient.d.ts +37 -2
  6. package/dist/apiClient.js +42 -4
  7. package/dist/apiClient.js.map +1 -1
  8. package/dist/bin/cli.js +189 -151
  9. package/dist/bin/cli.js.map +1 -1
  10. package/dist/bin/mcp.js +4 -2
  11. package/dist/bin/mcp.js.map +1 -1
  12. package/dist/deviceId.d.ts +2 -0
  13. package/dist/deviceId.js +97 -0
  14. package/dist/deviceId.js.map +1 -0
  15. package/dist/identity.d.ts +5 -1
  16. package/dist/identity.js +12 -2
  17. package/dist/identity.js.map +1 -1
  18. package/dist/import/secrets.js +1 -1
  19. package/dist/import/secrets.js.map +1 -1
  20. package/dist/import/upload.js +7 -1
  21. package/dist/import/upload.js.map +1 -1
  22. package/dist/install.d.ts +66 -12
  23. package/dist/install.js +137 -63
  24. package/dist/install.js.map +1 -1
  25. package/dist/instructions.js +2 -0
  26. package/dist/instructions.js.map +1 -1
  27. package/dist/paths.d.ts +2 -0
  28. package/dist/paths.js +4 -0
  29. package/dist/paths.js.map +1 -1
  30. package/dist/registry/caveats.d.ts +17 -0
  31. package/dist/registry/caveats.js +50 -0
  32. package/dist/registry/caveats.js.map +1 -0
  33. package/dist/registry/clients.d.ts +11 -0
  34. package/dist/registry/clients.js +333 -0
  35. package/dist/registry/clients.js.map +1 -0
  36. package/dist/registry/index.d.ts +5 -0
  37. package/dist/registry/index.js +6 -0
  38. package/dist/registry/index.js.map +1 -0
  39. package/dist/registry/serverInfo.d.ts +25 -0
  40. package/dist/registry/serverInfo.js +33 -0
  41. package/dist/registry/serverInfo.js.map +1 -0
  42. package/dist/registry/servers.d.ts +50 -0
  43. package/dist/registry/servers.js +225 -0
  44. package/dist/registry/servers.js.map +1 -0
  45. package/dist/registry/types.d.ts +60 -0
  46. package/dist/registry/types.js +6 -0
  47. package/dist/registry/types.js.map +1 -0
  48. package/dist/stubs.js +2 -2
  49. package/dist/tools/getAgentDefinition.js +5 -2
  50. package/dist/tools/getAgentDefinition.js.map +1 -1
  51. package/dist/tools/getSkill.js +1 -1
  52. package/dist/tools/getSkill.js.map +1 -1
  53. package/dist/tools/getSkillFile.js +3 -3
  54. package/dist/tools/getSkillFile.js.map +1 -1
  55. package/dist/tools/memoryGraph.js +16 -11
  56. package/dist/tools/memoryGraph.js.map +1 -1
  57. package/dist/tools/memoryRead.js +1 -1
  58. package/dist/tools/memoryRead.js.map +1 -1
  59. package/dist/tools/memoryWrite.js +4 -2
  60. package/dist/tools/memoryWrite.js.map +1 -1
  61. package/dist/tools/write.js +3 -3
  62. package/dist/tools/write.js.map +1 -1
  63. package/package.json +4 -4
@@ -0,0 +1,225 @@
1
+ /**
2
+ * The picture the product is named after: many MCP servers behind one
3
+ * connection. This catalogue backs the rotating tiles in
4
+ * `packages/web/src/components/McpHub.tsx`, `/api/mcp-catalog`, and the
5
+ * "add a server" step of Connect.
6
+ *
7
+ * Every server in the pool was verified, not remembered. Originally
8
+ * (2026-09-05): each URL was pushed through this product's own
9
+ * POST /api/mcp-connections/test, and only the ones that completed an MCP
10
+ * handshake or answered UNAUTHORIZED (which means a real MCP server is
11
+ * there and wants credentials) were listed. Dropped on that evidence:
12
+ * GitLab (mcp.gitlab.com does not resolve), Figma, Google Drive, Slack.
13
+ * Dropped for want of a brand icon: Canva, monday.com.
14
+ *
15
+ * Re-verified 2026-09-25 for this registry, this time against each
16
+ * vendor's own documentation (`docsUrl` below) AND a fresh local probe: a
17
+ * scratch script POSTed an MCP `initialize` request, unauthenticated, to
18
+ * every URL below. All 17 answered `401` with a `WWW-Authenticate: Bearer`
19
+ * header naming an OAuth protected-resource metadata document (for
20
+ * example `resource_metadata="https://mcp.notion.com/.well-known/oauth-
21
+ * protected-resource/mcp"`), which is exactly what a live MCP server
22
+ * behind OAuth returns - confirming each URL is real and reachable, not
23
+ * only documented. The finer distinction of `auth` below (whether a
24
+ * static bearer token is ALSO accepted, alongside OAuth) came from each
25
+ * vendor's docs, because a 401 alone cannot tell OAuth-only apart from
26
+ * OAuth-or-bearer.
27
+ *
28
+ * One correction from the 2026-09-05 note: this pass found Linear's docs
29
+ * now document `Authorization: Bearer <token>` as an accepted alternative
30
+ * to the interactive OAuth flow. The original spec text (problem #6)
31
+ * called Linear OAuth-only as of that date; either that capability is new,
32
+ * or it was missed in the first pass. `auth` below reflects the current,
33
+ * re-verified state, and this comment records the discrepancy rather than
34
+ * silently overwriting it.
35
+ *
36
+ * The open MCP registry is not a usable source for this list, by the way -
37
+ * anyone may publish there, and a search for "github" returns community
38
+ * wrappers hosted by third parties, not GitHub's own server.
39
+ *
40
+ * `filesystem` and `postgres`, the textbook examples, are absent on purpose:
41
+ * they are local stdio processes, and OnlyMCP deliberately does not run those
42
+ * (a process we spawn on a user's behalf is code execution on our side, see
43
+ * docs/SECURITY.md).
44
+ *
45
+ * The prefixes are real. `github__create_issue` is exactly what a client
46
+ * sees, because the gateway namespaces every proxied tool with the
47
+ * connection's slug (packages/api/src/mcp/gateway.ts).
48
+ */
49
+ export const SERVERS = [
50
+ {
51
+ id: 'github',
52
+ name: 'GitHub',
53
+ brand: 'github',
54
+ url: 'https://api.githubcopilot.com/mcp/',
55
+ auth: 'oauth-or-bearer',
56
+ docsUrl: 'https://docs.github.com/en/copilot/how-tos/provide-context/use-mcp-in-your-ide/set-up-the-github-mcp-server',
57
+ verifiedOn: '2026-09-25',
58
+ suggestedSlug: 'github',
59
+ },
60
+ {
61
+ id: 'linear',
62
+ name: 'Linear',
63
+ brand: 'linear',
64
+ url: 'https://mcp.linear.app/mcp',
65
+ auth: 'oauth-or-bearer',
66
+ docsUrl: 'https://linear.app/docs/mcp',
67
+ verifiedOn: '2026-09-25',
68
+ suggestedSlug: 'linear',
69
+ },
70
+ {
71
+ id: 'notion',
72
+ name: 'Notion',
73
+ brand: 'notion',
74
+ url: 'https://mcp.notion.com/mcp',
75
+ auth: 'oauth',
76
+ docsUrl: 'https://developers.notion.com/guides/mcp/get-started-with-mcp',
77
+ verifiedOn: '2026-09-25',
78
+ suggestedSlug: 'notion',
79
+ },
80
+ {
81
+ id: 'sentry',
82
+ name: 'Sentry',
83
+ brand: 'sentry',
84
+ url: 'https://mcp.sentry.dev/mcp',
85
+ auth: 'oauth',
86
+ docsUrl: 'https://docs.sentry.io/product/mcp-servers/getting-started/',
87
+ verifiedOn: '2026-09-25',
88
+ suggestedSlug: 'sentry',
89
+ },
90
+ {
91
+ id: 'stripe',
92
+ name: 'Stripe',
93
+ brand: 'stripe',
94
+ url: 'https://mcp.stripe.com',
95
+ auth: 'oauth-or-bearer',
96
+ docsUrl: 'https://docs.stripe.com/mcp',
97
+ verifiedOn: '2026-09-25',
98
+ suggestedSlug: 'stripe',
99
+ },
100
+ {
101
+ id: 'supabase',
102
+ name: 'Supabase',
103
+ brand: 'supabase',
104
+ url: 'https://mcp.supabase.com/mcp',
105
+ auth: 'oauth-or-bearer',
106
+ docsUrl: 'https://supabase.com/docs/guides/ai-tools/mcp',
107
+ verifiedOn: '2026-09-25',
108
+ suggestedSlug: 'supabase',
109
+ },
110
+ {
111
+ id: 'vercel',
112
+ name: 'Vercel',
113
+ brand: 'vercel',
114
+ url: 'https://mcp.vercel.com',
115
+ auth: 'oauth',
116
+ docsUrl: 'https://vercel.com/docs/mcp/vercel-mcp',
117
+ verifiedOn: '2026-09-25',
118
+ suggestedSlug: 'vercel',
119
+ },
120
+ {
121
+ id: 'atlassian',
122
+ name: 'Atlassian',
123
+ brand: 'atlassian',
124
+ url: 'https://mcp.atlassian.com/v2/mcp',
125
+ auth: 'oauth-or-bearer',
126
+ docsUrl: 'https://support.atlassian.com/atlassian-rovo-mcp-server/docs/getting-started-with-the-atlassian-remote-mcp-server/',
127
+ verifiedOn: '2026-09-25',
128
+ suggestedSlug: 'atlassian',
129
+ },
130
+ {
131
+ id: 'asana',
132
+ name: 'Asana',
133
+ brand: 'asana',
134
+ // V2. The V1 Beta server (mcp.asana.com/sse) shut down 2026-08-05.
135
+ url: 'https://mcp.asana.com/v2/mcp',
136
+ auth: 'oauth',
137
+ docsUrl: 'https://developers.asana.com/docs/integrating-with-asanas-mcp-server',
138
+ verifiedOn: '2026-09-25',
139
+ suggestedSlug: 'asana',
140
+ },
141
+ {
142
+ id: 'cloudflare',
143
+ name: 'Cloudflare',
144
+ brand: 'cloudflare',
145
+ // The general-purpose one: 2,500+ endpoints across DNS, Workers, R2,
146
+ // Zero Trust. Cloudflare also hosts 16 narrower servers (docs,
147
+ // bindings, observability, ...), not used here.
148
+ url: 'https://mcp.cloudflare.com/mcp',
149
+ auth: 'oauth',
150
+ docsUrl: 'https://developers.cloudflare.com/agents/model-context-protocol/cloudflare/servers-for-cloudflare/',
151
+ verifiedOn: '2026-09-25',
152
+ suggestedSlug: 'cloudflare',
153
+ },
154
+ {
155
+ id: 'intercom',
156
+ name: 'Intercom',
157
+ brand: 'intercom',
158
+ url: 'https://mcp.intercom.com/mcp',
159
+ auth: 'oauth-or-bearer',
160
+ docsUrl: 'https://developers.intercom.com/docs/guides/mcp',
161
+ verifiedOn: '2026-09-25',
162
+ suggestedSlug: 'intercom',
163
+ },
164
+ {
165
+ id: 'hubspot',
166
+ name: 'HubSpot',
167
+ brand: 'hubspot',
168
+ url: 'https://mcp.hubspot.com',
169
+ auth: 'oauth',
170
+ docsUrl: 'https://developers.hubspot.com/docs/apps/developer-platform/build-apps/integrate-with-the-remote-hubspot-mcp-server',
171
+ verifiedOn: '2026-09-25',
172
+ suggestedSlug: 'hubspot',
173
+ },
174
+ {
175
+ id: 'netlify',
176
+ name: 'Netlify',
177
+ brand: 'netlify',
178
+ url: 'https://netlify-mcp.netlify.app/mcp',
179
+ auth: 'oauth-or-bearer',
180
+ docsUrl: 'https://docs.netlify.com/build/build-with-ai/netlify-mcp-server/',
181
+ verifiedOn: '2026-09-25',
182
+ suggestedSlug: 'netlify',
183
+ },
184
+ {
185
+ id: 'neon',
186
+ name: 'Neon',
187
+ brand: 'neon',
188
+ url: 'https://mcp.neon.tech/mcp',
189
+ auth: 'oauth-or-bearer',
190
+ docsUrl: 'https://neon.com/docs/ai/connect-mcp-clients-to-neon',
191
+ verifiedOn: '2026-09-25',
192
+ suggestedSlug: 'neon',
193
+ },
194
+ {
195
+ id: 'zapier',
196
+ name: 'Zapier',
197
+ brand: 'zapier',
198
+ url: 'https://mcp.zapier.com/api/v1/connect',
199
+ auth: 'oauth-or-bearer',
200
+ docsUrl: 'https://docs.zapier.com/mcp/overview/how-connections-work',
201
+ verifiedOn: '2026-09-25',
202
+ suggestedSlug: 'zapier',
203
+ },
204
+ {
205
+ id: 'webflow',
206
+ name: 'Webflow',
207
+ brand: 'webflow',
208
+ url: 'https://mcp.webflow.com/mcp',
209
+ auth: 'oauth',
210
+ docsUrl: 'https://developers.webflow.com/mcp/reference/getting-started',
211
+ verifiedOn: '2026-09-25',
212
+ suggestedSlug: 'webflow',
213
+ },
214
+ {
215
+ id: 'wix',
216
+ name: 'Wix',
217
+ brand: 'wix',
218
+ url: 'https://mcp.wix.com/mcp',
219
+ auth: 'oauth-or-bearer',
220
+ docsUrl: 'https://dev.wix.com/docs/overview/ai-the-wix-platform/the-wix-mcp',
221
+ verifiedOn: '2026-09-25',
222
+ suggestedSlug: 'wix',
223
+ },
224
+ ];
225
+ //# sourceMappingURL=servers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"servers.js","sourceRoot":"","sources":["../../src/registry/servers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ export type ClientId = 'claude-code' | 'claude-app' | 'chatgpt' | 'codex' | 'gemini-cli' | 'gemini-app' | 'copilot-vscode' | 'cursor' | 'windsurf' | 'cline' | 'zed' | 'continue' | 'opencode';
2
+ export type ClientCategory = 'chat' | 'coding' | 'ide';
3
+ /** How this client can reach OnlyMCP. Order in the array is preference order. */
4
+ export type ConnectMethod = 'remote-oauth' | 'remote-header' | 'stdio';
5
+ export type SnippetLanguage = 'bash' | 'json' | 'toml' | 'yaml' | 'text';
6
+ export interface Snippet {
7
+ language: SnippetLanguage;
8
+ /** Never translated, never localised, never contains a placeholder path. */
9
+ text: string;
10
+ /** Where the snippet goes, if it is a file. */
11
+ path?: string;
12
+ }
13
+ /** Present only where `npx onlymcp install` can write the config itself. */
14
+ export interface ClientInstall {
15
+ configPath: string;
16
+ format: 'json' | 'toml';
17
+ stubDir: string | null;
18
+ }
19
+ export interface ClientRecord {
20
+ id: ClientId;
21
+ name: string;
22
+ category: ClientCategory;
23
+ /**
24
+ * simple-icons slug, or a key of `FILE_MARKS` in `web/src/components/BrandMark.tsx` (an owner's official file, shown
25
+ * under their brand guidelines: `openai`), or null when no mark may be used.
26
+ */
27
+ brand: string | null;
28
+ methods: ConnectMethod[];
29
+ docsUrl: string;
30
+ /** ISO date on which the facts below were checked against docsUrl. */
31
+ verifiedOn: string;
32
+ /** Keys into CAVEATS (caveats.ts) for restrictions that must be stated; empty when there are none. */
33
+ caveats: string[];
34
+ install: ClientInstall | null;
35
+ /** Pure generator. Returns null when the remote-header method does not apply. */
36
+ remote(ctx: RemoteContext): Snippet[] | null;
37
+ }
38
+ export interface RemoteContext {
39
+ /** https://only-mcp.com/api/mcp */
40
+ endpoint: string;
41
+ /** Real token, or the literal placeholder 'omk_...'. */
42
+ token: string;
43
+ /** '~' on posix, '%USERPROFILE%' on windows. */
44
+ homePlaceholder?: string;
45
+ }
46
+ export interface ServerRecord {
47
+ id: string;
48
+ name: string;
49
+ /**
50
+ * simple-icons slug, or a key of `FILE_MARKS` in `web/src/components/BrandMark.tsx` (an owner's official file, shown
51
+ * under their brand guidelines: `openai`), or null when no mark may be used.
52
+ */
53
+ brand: string | null;
54
+ url: string;
55
+ auth: 'oauth' | 'bearer' | 'oauth-or-bearer' | 'none';
56
+ docsUrl: string;
57
+ verifiedOn: string;
58
+ /** 'github' -> github__create_issue */
59
+ suggestedSlug: string;
60
+ }
@@ -0,0 +1,6 @@
1
+ // Generated by scripts/sync-registry.mjs. Do not edit.
2
+ // Types for the client and server registry. Zero runtime dependencies, no
3
+ // Node API, no DOM, no React: this package is imported by the API (server),
4
+ // the web app (browser) and, as a generated copy, the published CLI.
5
+ export {};
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/registry/types.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,0EAA0E;AAC1E,4EAA4E;AAC5E,qEAAqE"}
package/dist/stubs.js CHANGED
@@ -95,7 +95,7 @@ ${MARKER}: true
95
95
  x-onlymcp-name: ${s.name}
96
96
  ---
97
97
 
98
- Rufe \`get_skill({ name: "${s.name}" })\` am OnlyMCP-Server auf und befolge, was zurueckkommt.
98
+ Call \`get_skill({ name: "${s.name}" })\` on the OnlyMCP server and follow whatever comes back.
99
99
  `, 'utf8');
100
100
  written += 1;
101
101
  // Die Begleitdateien liegen danach WIRKLICH auf der Platte, nicht hinter
@@ -150,7 +150,7 @@ ${MARKER}: true
150
150
  x-onlymcp-name: ${a.name}
151
151
  ---
152
152
 
153
- Rufe \`get_agent_definition({ name: "${a.name}" })\` am OnlyMCP-Server auf und befolge, was zurueckkommt.
153
+ Call \`get_agent_definition({ name: "${a.name}" })\` on the OnlyMCP server and follow whatever comes back.
154
154
  `, 'utf8');
155
155
  agentsWritten += 1;
156
156
  }
@@ -4,7 +4,7 @@ export const GetAgentInput = z.object({ name: z.string().min(1).max(64) });
4
4
  export function createGetAgentDefinitionTool(api, cache) {
5
5
  return {
6
6
  name: 'get_agent_definition',
7
- description: 'Liefert den System-Prompt eines Agenten aus der OnlyMCP-Cloud.',
7
+ description: "Delivers an agent's system prompt from the OnlyMCP cloud.",
8
8
  inputSchema: GetAgentInput,
9
9
  async handler(args) {
10
10
  const key = `agent:${args.name}`;
@@ -12,7 +12,10 @@ export function createGetAgentDefinitionTool(api, cache) {
12
12
  if (cached !== null)
13
13
  return { content: [{ type: 'text', text: cached }] };
14
14
  try {
15
- const a = await api.getAgent(args.name);
15
+ // This is the one read that runs the agent, so it asks the server to
16
+ // count it. The cache above answers repeat loads without a request: the
17
+ // count for this transport is a lower bound.
18
+ const a = await api.getAgent(args.name, { use: true });
16
19
  await cache.set(key, a.body);
17
20
  return { content: [{ type: 'text', text: a.body }] };
18
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"getAgentDefinition.js","sourceRoot":"","sources":["../../src/tools/getAgentDefinition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG3C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAE3E,MAAM,UAAU,4BAA4B,CAAC,GAAc,EAAE,KAAe;IAC1E,OAAO;QACL,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,gEAAgE;QAC7E,WAAW,EAAE,aAAa;QAC1B,KAAK,CAAC,OAAO,CAAC,IAAmC;YAC/C,MAAM,GAAG,GAAG,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,MAAM,KAAK,IAAI;gBAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YACnF,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACxC,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC7B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YAChE,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,IAAI,GAAG,CAAC,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC;gBAC/D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC7E,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"getAgentDefinition.js","sourceRoot":"","sources":["../../src/tools/getAgentDefinition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG3C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAE3E,MAAM,UAAU,4BAA4B,CAAC,GAAc,EAAE,KAAe;IAC1E,OAAO;QACL,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,2DAA2D;QACxE,WAAW,EAAE,aAAa;QAC1B,KAAK,CAAC,OAAO,CAAC,IAAmC;YAC/C,MAAM,GAAG,GAAG,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,MAAM,KAAK,IAAI;gBAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YACnF,IAAI,CAAC;gBACH,qEAAqE;gBACrE,wEAAwE;gBACxE,6CAA6C;gBAC7C,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvD,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC7B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YAChE,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,IAAI,GAAG,CAAC,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC;gBAC/D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC7E,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -4,7 +4,7 @@ export const GetSkillInput = z.object({ name: z.string().min(1).max(64) });
4
4
  export function createGetSkillTool(api, cache) {
5
5
  return {
6
6
  name: 'get_skill',
7
- description: 'Liefert den vollstaendigen Inhalt eines Skills aus der OnlyMCP-Cloud. Wird von den Stub-Dateien aufgerufen.',
7
+ description: "Delivers a skill's full content from the OnlyMCP cloud. Called from the stub files.",
8
8
  inputSchema: GetSkillInput,
9
9
  async handler(args) {
10
10
  const key = `skill:${args.name}`;
@@ -1 +1 @@
1
- {"version":3,"file":"getSkill.js","sourceRoot":"","sources":["../../src/tools/getSkill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG3C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAE3E,MAAM,UAAU,kBAAkB,CAAC,GAAc,EAAE,KAAe;IAChE,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,WAAW,EACT,6GAA6G;QAC/G,WAAW,EAAE,aAAa;QAC1B,KAAK,CAAC,OAAO,CAAC,IAAmC;YAC/C,MAAM,GAAG,GAAG,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,MAAM,KAAK,IAAI;gBAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YACnF,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC5C,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBACjC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YACpE,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,IAAI,GAAG,CAAC,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC;gBAC/D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC7E,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"getSkill.js","sourceRoot":"","sources":["../../src/tools/getSkill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG3C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAE3E,MAAM,UAAU,kBAAkB,CAAC,GAAc,EAAE,KAAe;IAChE,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,WAAW,EACT,qFAAqF;QACvF,WAAW,EAAE,aAAa;QAC1B,KAAK,CAAC,OAAO,CAAC,IAAmC;YAC/C,MAAM,GAAG,GAAG,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,MAAM,KAAK,IAAI;gBAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YACnF,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC5C,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBACjC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YACpE,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,IAAI,GAAG,CAAC,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC;gBAC/D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC7E,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -7,8 +7,8 @@ export const GetSkillFileInput = z.object({
7
7
  export function createGetSkillFileTool(api) {
8
8
  return {
9
9
  name: 'get_skill_file',
10
- description: 'Liefert eine einzelne Begleitdatei eines Skills aus der OnlyMCP-Cloud, etwa references/palette.md. ' +
11
- 'Normalerweise nicht noetig: `onlymcp sync` legt diese Dateien neben der SKILL.md ab.',
10
+ description: "Delivers a single companion file of a skill from the OnlyMCP cloud, e.g. references/palette.md. " +
11
+ 'Usually not needed: `npx onlymcp sync` places these files next to the SKILL.md.',
12
12
  inputSchema: GetSkillFileInput,
13
13
  async handler(args) {
14
14
  try {
@@ -21,7 +21,7 @@ export function createGetSkillFileTool(api) {
21
21
  content: [
22
22
  {
23
23
  type: 'text',
24
- text: `errors.BINARY_FILE ${file.path} (${file.size} Bytes) - mit \`onlymcp sync\` auf die Platte holen.`,
24
+ text: `errors.BINARY_FILE ${file.path} (${file.size} bytes) - fetch it to disk with \`npx onlymcp sync\`.`,
25
25
  },
26
26
  ],
27
27
  isError: true,
@@ -1 +1 @@
1
- {"version":3,"file":"getSkillFile.js","sourceRoot":"","sources":["../../src/tools/getSkillFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;CACjC,CAAC,CAAC;AAEH,MAAM,UAAU,sBAAsB,CAAC,GAAc;IACnD,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,WAAW,EACT,qGAAqG;YACrG,sFAAsF;QACxF,WAAW,EAAE,iBAAiB;QAC9B,KAAK,CAAC,OAAO,CAAC,IAAuC;YACnD,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC1D,wEAAwE;gBACxE,gEAAgE;gBAChE,6DAA6D;gBAC7D,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBAC/B,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAe;gCACrB,IAAI,EAAE,sBAAsB,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,sDAAsD;6BAC1G;yBACF;wBACD,OAAO,EAAE,IAAI;qBACd,CAAC;gBACJ,CAAC;gBACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YACtE,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,IAAI,GAAG,CAAC,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC;gBAC/D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC7E,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"getSkillFile.js","sourceRoot":"","sources":["../../src/tools/getSkillFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;CACjC,CAAC,CAAC;AAEH,MAAM,UAAU,sBAAsB,CAAC,GAAc;IACnD,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,WAAW,EACT,kGAAkG;YAClG,iFAAiF;QACnF,WAAW,EAAE,iBAAiB;QAC9B,KAAK,CAAC,OAAO,CAAC,IAAuC;YACnD,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC1D,wEAAwE;gBACxE,gEAAgE;gBAChE,6DAA6D;gBAC7D,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBAC/B,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAe;gCACrB,IAAI,EAAE,sBAAsB,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,uDAAuD;6BAC3G;yBACF;wBACD,OAAO,EAAE,IAAI;qBACd,CAAC;gBACJ,CAAC;gBACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YACtE,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,IAAI,GAAG,CAAC,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC;gBAC/D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC7E,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -14,7 +14,7 @@ export const MemorySearchInput = z.object({
14
14
  export function createMemorySearchTool(api) {
15
15
  return {
16
16
  name: 'memory_search',
17
- description: 'Volltextsuche ueber Memory, Skills und Agents. Liefert die besten Treffer mit je einem kurzen Ausschnitt.',
17
+ description: 'Full-text search across memory, skills and agents. Delivers the best hits with a short snippet each.',
18
18
  inputSchema: MemorySearchInput,
19
19
  async handler(args) {
20
20
  try {
@@ -23,7 +23,7 @@ export function createMemorySearchTool(api) {
23
23
  limit: args.limit,
24
24
  });
25
25
  if (hits.length === 0)
26
- return text(`Nichts gefunden zu ${args.query}`);
26
+ return text(`Nothing found for ${args.query}`);
27
27
  // Die Adresse zuerst: der naechste Aufruf ist memory_read(path) oder
28
28
  // get_skill(name), und was dafuer gebraucht wird, darf nicht im
29
29
  // Ausschnitt untergehen.
@@ -41,13 +41,13 @@ export const MemoryTreeInput = z.object({ scope: z.string().max(96).optional() }
41
41
  export function createMemoryTreeTool(api) {
42
42
  return {
43
43
  name: 'memory_tree',
44
- description: 'Die Ordnerstruktur dieses Kontos: jeder Ordner, auch leere, und die Dateien darin.',
44
+ description: 'This account\'s folder structure: every folder, empty ones included, and the files in it.',
45
45
  inputSchema: MemoryTreeInput,
46
46
  async handler(args) {
47
47
  try {
48
48
  const { nodes } = await api.memoryTree(args.scope ?? 'all');
49
49
  if (nodes.length === 0)
50
- return text('(leer)');
50
+ return text('(empty)');
51
51
  return text(nodes
52
52
  .map((n) => {
53
53
  const depth = n.path.split('/').length - 1;
@@ -67,10 +67,14 @@ export const MemoryMoveInput = z.object({
67
67
  to: z.string().min(3).max(256),
68
68
  updateLinks: z.boolean().optional(),
69
69
  });
70
+ /** "1 file", "2 files": the move answers in files. */
71
+ function files(count) {
72
+ return `${count} ${count === 1 ? 'file' : 'files'}`;
73
+ }
70
74
  export function createMemoryMoveTool(api) {
71
75
  return {
72
76
  name: 'memory_move',
73
- description: 'Verschiebt oder benennt eine Memory-Datei um. Jede [[Verknuepfung]] auf den alten Namen wird mitgezogen, sofern nicht abgewaehlt.',
77
+ description: "Moves or renames a memory file. Every [[link]] that would no longer find it follows along, by name or by path, unless turned off.",
74
78
  inputSchema: MemoryMoveInput,
75
79
  async handler(args) {
76
80
  // Beide Pfade hier geprueft und nicht erst am Server: siehe
@@ -80,8 +84,9 @@ export function createMemoryMoveTool(api) {
80
84
  const updateLinks = args.updateLinks ?? true;
81
85
  try {
82
86
  const r = await api.moveMemory(args.from, args.to, updateLinks);
83
- return text(`${r.from} nach ${r.to} verschoben` +
84
- (updateLinks ? `, ${r.rewritten} Verknuepfungen angepasst, ${r.skipped} unveraendert` : ''));
87
+ return text(`${r.from} moved to ${r.to}` +
88
+ // The counts are files, not links: a file with three links to the moved one is one.
89
+ (updateLinks ? `, links updated in ${files(r.rewritten)}, ${files(r.skipped)} left unchanged` : ''));
85
90
  }
86
91
  catch (e) {
87
92
  return failure(codeOf(e));
@@ -93,7 +98,7 @@ export const MemoryLinksInput = z.object({ path: z.string().min(3).max(256) });
93
98
  export function createMemoryLinksTool(api) {
94
99
  return {
95
100
  name: 'memory_links',
96
- description: 'Die [[Verknuepfungen]] einer Memory-Datei, getrennt nach denen, die irgendwohin zeigen, und denen, die ins Leere gehen.',
101
+ description: "A memory file's [[links]], split between the ones that point somewhere and the ones that point nowhere.",
97
102
  inputSchema: MemoryLinksInput,
98
103
  async handler(args) {
99
104
  if (!isSafeMemoryPath(args.path))
@@ -102,14 +107,14 @@ export function createMemoryLinksTool(api) {
102
107
  const file = await api.readMemory(args.path);
103
108
  const { resolved, unresolved } = file.links;
104
109
  if (resolved.length === 0 && unresolved.length === 0) {
105
- return text(`${args.path} verweist auf nichts.`);
110
+ return text(`${args.path} does not link to anything.`);
106
111
  }
107
112
  // Eine offene Verknuepfung ist kein Fehler und wird nicht versteckt:
108
113
  // sie ist eine Notiz, die jemand schreiben wollte und noch nicht
109
114
  // geschrieben hat. Genau dafuer gibt es die Trennung (Spec 4.3).
110
115
  return text([
111
- resolved.length > 0 ? `Aufgeloest: ${resolved.join(', ')}` : '',
112
- unresolved.length > 0 ? `Offen (noch keine Datei dieses Namens): ${unresolved.join(', ')}` : '',
116
+ resolved.length > 0 ? `Resolved: ${resolved.join(', ')}` : '',
117
+ unresolved.length > 0 ? `Open (no file with this name yet): ${unresolved.join(', ')}` : '',
113
118
  ]
114
119
  .filter((line) => line !== '')
115
120
  .join('\n'));
@@ -1 +1 @@
1
- {"version":3,"file":"memoryGraph.js","sourceRoot":"","sources":["../../src/tools/memoryGraph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memoryGraph.js","sourceRoot":"","sources":["../../src/tools/memoryGraph.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ export function createMemoryReadTool(api) {
6
6
  const inFlight = new Map();
7
7
  return {
8
8
  name: 'memory_read',
9
- description: 'Liest eine Memory-Datei live aus der OnlyMCP-Cloud. Kein Diskcache.',
9
+ description: 'Reads a memory file live from the OnlyMCP cloud. No disk cache.',
10
10
  inputSchema: MemoryReadInput,
11
11
  async handler(args) {
12
12
  if (!isSafeMemoryPath(args.path)) {
@@ -1 +1 @@
1
- {"version":3,"file":"memoryRead.js","sourceRoot":"","sources":["../../src/tools/memoryRead.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAE9E,MAAM,UAAU,oBAAoB,CAAC,GAAc;IACjD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA2B,CAAC;IAEpD,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,qEAAqE;QAClF,WAAW,EAAE,eAAe;QAC5B,KAAK,CAAC,OAAO,CAAC,IAAqC;YACjD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC9F,CAAC;YACD,IAAI,CAAC;gBACH,mEAAmE;gBACnE,2DAA2D;gBAC3D,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChC,IAAI,CAAC,CAAC,EAAE,CAAC;oBACP,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;oBACrD,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;oBAC3B,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC9C,CAAC;gBACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;YACjE,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,IAAI,GAAG,CAAC,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC;gBAC/D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC7E,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"memoryRead.js","sourceRoot":"","sources":["../../src/tools/memoryRead.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAE9E,MAAM,UAAU,oBAAoB,CAAC,GAAc;IACjD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA2B,CAAC;IAEpD,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,iEAAiE;QAC9E,WAAW,EAAE,eAAe;QAC5B,KAAK,CAAC,OAAO,CAAC,IAAqC;YACjD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC9F,CAAC;YACD,IAAI,CAAC;gBACH,mEAAmE;gBACnE,2DAA2D;gBAC3D,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChC,IAAI,CAAC,CAAC,EAAE,CAAC;oBACP,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;oBACrD,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;oBAC3B,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC9C,CAAC;gBACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;YACjE,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,IAAI,GAAG,CAAC,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC;gBAC/D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC7E,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -9,7 +9,7 @@ export const MemoryWriteInput = z.object({
9
9
  export function createMemoryWriteTool(api) {
10
10
  return {
11
11
  name: 'memory_write',
12
- description: 'Schreibt eine Memory-Datei live in die OnlyMCP-Cloud (write-through).',
12
+ description: 'Writes a memory file live into the OnlyMCP cloud (write-through).',
13
13
  inputSchema: MemoryWriteInput,
14
14
  async handler(args) {
15
15
  if (!isSafeMemoryPath(args.path)) {
@@ -17,9 +17,11 @@ export function createMemoryWriteTool(api) {
17
17
  }
18
18
  try {
19
19
  const res = await api.writeMemory(args.path, args.content, hostname());
20
- const text = res.warning
20
+ let text = res.warning
21
21
  ? `${res.path} ${res.updatedAt} ${res.warning.code} ${JSON.stringify(res.warning.params)}`
22
22
  : `${res.path} ${res.updatedAt}`;
23
+ if (res.routedTo)
24
+ text += ` (created in team ${res.routedTo.teamName})`;
23
25
  return { content: [{ type: 'text', text }] };
24
26
  }
25
27
  catch (e) {
@@ -1 +1 @@
1
- {"version":3,"file":"memoryWrite.js","sourceRoot":"","sources":["../../src/tools/memoryWrite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAChC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;CACnC,CAAC,CAAC;AAEH,MAAM,UAAU,qBAAqB,CAAC,GAAc;IAClD,OAAO;QACL,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,uEAAuE;QACpF,WAAW,EAAE,gBAAgB;QAC7B,KAAK,CAAC,OAAO,CAAC,IAAsC;YAClD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC9F,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACvE,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO;oBACtB,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;oBAC1F,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;gBACnC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YACxD,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,IAAI,GAAG,CAAC,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC;gBAC/D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC7E,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"memoryWrite.js","sourceRoot":"","sources":["../../src/tools/memoryWrite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAChC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;CACnC,CAAC,CAAC;AAEH,MAAM,UAAU,qBAAqB,CAAC,GAAc;IAClD,OAAO;QACL,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,mEAAmE;QAChF,WAAW,EAAE,gBAAgB;QAC7B,KAAK,CAAC,OAAO,CAAC,IAAsC;YAClD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC9F,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACvE,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO;oBACpB,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;oBAC1F,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;gBACnC,IAAI,GAAG,CAAC,QAAQ;oBAAE,IAAI,IAAI,qBAAqB,GAAG,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC;gBACxE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YACxD,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,IAAI,GAAG,CAAC,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC;gBAC/D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC7E,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -54,7 +54,7 @@ export const SkillDeleteInput = z.object({ name: skillNameSchema });
54
54
  export function createSkillDeleteTool(api) {
55
55
  return {
56
56
  name: 'skill_delete',
57
- description: 'Delete one skill and every file that belongs to it. This cannot be undone.',
57
+ description: 'Delete one skill and every file that belongs to it. Moves it to the trash; it can be restored in the dashboard for the trash period (default 7 days).',
58
58
  inputSchema: SkillDeleteInput,
59
59
  handler: (args) => attempt(async () => {
60
60
  await api.deleteSkill(args.name);
@@ -149,7 +149,7 @@ export const AgentDeleteInput = z.object({ name: skillNameSchema });
149
149
  export function createAgentDeleteTool(api) {
150
150
  return {
151
151
  name: 'agent_delete',
152
- description: 'Delete one agent. This cannot be undone.',
152
+ description: 'Delete one agent. Moves it to the trash; it can be restored in the dashboard for the trash period (default 7 days).',
153
153
  inputSchema: AgentDeleteInput,
154
154
  handler: (args) => attempt(async () => {
155
155
  await api.deleteAgent(args.name);
@@ -178,7 +178,7 @@ export const MemoryDeleteInput = z.object({ path: z.string().min(3).max(256) });
178
178
  export function createMemoryDeleteTool(api) {
179
179
  return {
180
180
  name: 'memory_delete',
181
- description: 'Delete one memory file. This cannot be undone.',
181
+ description: 'Delete one memory file. Moves it to the trash; it can be restored in the dashboard for the trash period (default 7 days).',
182
182
  inputSchema: MemoryDeleteInput,
183
183
  handler: (args) => {
184
184
  if (!isSafeMemoryPath(args.path))