@noodleseed/agent-kit 0.99.1 → 0.100.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 (58) hide show
  1. package/manifest.json +369 -369
  2. package/package.json +1 -1
  3. package/skills/claude-code/SKILL.md +1 -1
  4. package/skills/claude-code/authoring-mcp-servers/SKILL.md +1 -1
  5. package/skills/claude-code/authoring-mcp-servers/references/authoring-workflow.md +7 -0
  6. package/skills/claude-code/authoring-mcp-servers/references/sdk-surface.md +1 -0
  7. package/skills/claude-code/building-mcp-apps/SKILL.md +1 -1
  8. package/skills/claude-code/connecting-apis-to-mcp/SKILL.md +1 -1
  9. package/skills/claude-code/connecting-apis-to-mcp/references/authoring-workflow.md +7 -0
  10. package/skills/claude-code/creating-product-agent-guides/SKILL.md +1 -1
  11. package/skills/claude-code/debugging-mcp-delivery/SKILL.md +1 -1
  12. package/skills/claude-code/deploying-mcp-services/SKILL.md +1 -1
  13. package/skills/claude-code/deploying-mcp-services/references/cli-commands.md +1 -0
  14. package/skills/claude-code/designing-mcp-products/SKILL.md +1 -1
  15. package/skills/claude-code/designing-mcp-products/references/authoring-workflow.md +7 -0
  16. package/skills/claude-code/embedding-mcp-assistants/SKILL.md +1 -1
  17. package/skills/claude-code/embedding-mcp-assistants/references/authoring-workflow.md +7 -0
  18. package/skills/claude-code/examples/acme-bistro/README.md +4 -0
  19. package/skills/claude-code/examples/acme-bistro/src/server.ts +14 -1
  20. package/skills/claude-code/examples/acme-bistro/test/server.test.ts +10 -0
  21. package/skills/claude-code/executing-noodle-plans/SKILL.md +1 -1
  22. package/skills/claude-code/publishing-mcp-integrations/SKILL.md +1 -1
  23. package/skills/claude-code/references/authoring-workflow.md +7 -0
  24. package/skills/claude-code/references/cli-commands.md +1 -0
  25. package/skills/claude-code/references/compile-errors.md +2 -1
  26. package/skills/claude-code/references/sdk-surface.md +1 -0
  27. package/skills/claude-code/reporting-noodle-feedback/SKILL.md +1 -1
  28. package/skills/claude-code/verifying-mcp-delivery/SKILL.md +1 -1
  29. package/skills/claude-code/wrapping-existing-applications/SKILL.md +1 -1
  30. package/skills/claude-code/wrapping-existing-applications/references/authoring-workflow.md +7 -0
  31. package/skills/codex/SKILL.md +1 -1
  32. package/skills/codex/authoring-mcp-servers/SKILL.md +1 -1
  33. package/skills/codex/authoring-mcp-servers/references/authoring-workflow.md +7 -0
  34. package/skills/codex/authoring-mcp-servers/references/sdk-surface.md +1 -0
  35. package/skills/codex/building-mcp-apps/SKILL.md +1 -1
  36. package/skills/codex/connecting-apis-to-mcp/SKILL.md +1 -1
  37. package/skills/codex/connecting-apis-to-mcp/references/authoring-workflow.md +7 -0
  38. package/skills/codex/creating-product-agent-guides/SKILL.md +1 -1
  39. package/skills/codex/debugging-mcp-delivery/SKILL.md +1 -1
  40. package/skills/codex/deploying-mcp-services/SKILL.md +1 -1
  41. package/skills/codex/deploying-mcp-services/references/cli-commands.md +1 -0
  42. package/skills/codex/designing-mcp-products/SKILL.md +1 -1
  43. package/skills/codex/designing-mcp-products/references/authoring-workflow.md +7 -0
  44. package/skills/codex/embedding-mcp-assistants/SKILL.md +1 -1
  45. package/skills/codex/embedding-mcp-assistants/references/authoring-workflow.md +7 -0
  46. package/skills/codex/examples/acme-bistro/README.md +4 -0
  47. package/skills/codex/examples/acme-bistro/src/server.ts +14 -1
  48. package/skills/codex/examples/acme-bistro/test/server.test.ts +10 -0
  49. package/skills/codex/executing-noodle-plans/SKILL.md +1 -1
  50. package/skills/codex/publishing-mcp-integrations/SKILL.md +1 -1
  51. package/skills/codex/references/authoring-workflow.md +7 -0
  52. package/skills/codex/references/cli-commands.md +1 -0
  53. package/skills/codex/references/compile-errors.md +2 -1
  54. package/skills/codex/references/sdk-surface.md +1 -0
  55. package/skills/codex/reporting-noodle-feedback/SKILL.md +1 -1
  56. package/skills/codex/verifying-mcp-delivery/SKILL.md +1 -1
  57. package/skills/codex/wrapping-existing-applications/SKILL.md +1 -1
  58. package/skills/codex/wrapping-existing-applications/references/authoring-workflow.md +7 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@noodleseed/agent-kit",
3
- "version": "0.99.1",
3
+ "version": "0.100.0",
4
4
  "private": false,
5
5
  "description": "Self-checking, self-updating agent skills for the Noodle Seed CLI. Authored in this repo by @noodle-borg/agent-kit; this is the published, independently-versioned canonical skills artifact the CLI fetches and verifies.",
6
6
  "license": "Apache-2.0",
@@ -3,7 +3,7 @@ name: noodle-seed
3
3
  description: "Use when building, validating, testing, deploying, or operating a local or hosted Noodle Seed MCP server or app authored in TypeScript with the noodle CLI."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.99.1 hash:d3ceb1902ef4bb72 -->
6
+ <!-- noodle-skill version:0.100.0 hash:d3ceb1902ef4bb72 -->
7
7
 
8
8
  # Noodle Seed
9
9
 
@@ -3,7 +3,7 @@ name: authoring-mcp-servers
3
3
  description: "Use when creating or extending a headless Noodle Seed MCP server, tool, resource, prompt, or typed model-facing capability."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.99.1 hash:dd57a15df15d10b2 -->
6
+ <!-- noodle-skill version:0.100.0 hash:dd57a15df15d10b2 -->
7
7
 
8
8
  # authoring-mcp-servers
9
9
 
@@ -17,6 +17,7 @@
17
17
  - Tests
18
18
  - Secrets and variables
19
19
  - Embedded assistant
20
+ - Managed collections
20
21
  - Boundaries
21
22
 
22
23
  ## Input paths
@@ -441,6 +442,12 @@ The compiler validates and hashes every document at build time (bad extensions,
441
442
 
442
443
  The managed crawler and managed index are the defaults and need no configuration. A component may instead bring its own crawler (`crawler: firecrawl({ apiKey: secret('FIRECRAWL_API_KEY') })` or `tavily(...)`) and/or its own index (`index: algolia({ appId: variable('ALGOLIA_APP_ID'), apiKey: secret('ALGOLIA_API_KEY') })` or `meilisearch({ host: variable(...), apiKey: secret(...) })`). The code declares only config names; operators supply values with `noodle secrets set` / `noodle variables set`, and deploy preflight fails closed naming any unset reference.
443
444
 
445
+ ## Managed collections
446
+
447
+ Use `managedCollection(name, { title, description, schemaVersion, record })` when an application needs reusable typed intent for business records that Noodle may later hold. Pass it through `server(..., { collections: [...] }, definitions)`. `record` is one bounded, closed Zod object; names use lowercase letters, numbers, and underscores. Keep payment-card, credentials, passport/government identity, health, and biometric fields out of this surface.
448
+
449
+ This declaration compiles schema metadata only. It does not create a submit tool, grant access, select retention or residency, provision storage, or make records available to MCP or the embedded assistant. Operators bind lifecycle and authority separately. Until the service intake path is shipped, keep live business operations on their existing connector tools.
450
+
444
451
  ## Boundaries
445
452
 
446
453
  Import public app authoring only from `@noodleseed/one` (and its documented `/react` or `/platform` subpaths). Packages and subpaths under `@noodle-borg/*` are runtime implementation details, including `/portable` boundaries, and must never appear in customer `server.ts` code. Do not hand-author manifest JSON/YAML, runtime artifacts, connector IR, or hosted asset metadata. Do not read or copy secrets, bearer tokens, refresh tokens, static access keys, `.env`, `.env.noodle`, or `~/.noodle/config.json`. Hosted access is identity-based — do not add static data-plane credential paths.
@@ -63,6 +63,7 @@ Platform helper connectors are explicit subpath imports from `@noodleseed/one/pl
63
63
  - `firecrawl`
64
64
  - `gmailConnector`
65
65
  - `knowledge`
66
+ - `managedCollection`
66
67
  - `managedSecret`
67
68
  - `meilisearch`
68
69
  - `noodleManaged`
@@ -3,7 +3,7 @@ name: building-mcp-apps
3
3
  description: "Use when a Noodle Seed MCP App, widget, interactive card, visual interaction, or host-visible UI is the primary requested outcome."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.99.1 hash:98c7b07c82a7d7ce -->
6
+ <!-- noodle-skill version:0.100.0 hash:98c7b07c82a7d7ce -->
7
7
 
8
8
  # building-mcp-apps
9
9
 
@@ -3,7 +3,7 @@ name: connecting-apis-to-mcp
3
3
  description: "Use when all four API-evidence inputs exist—and only then: API base URL, authentication scheme, representative safe read, and observed response."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.99.1 hash:8020811f1769c538 -->
6
+ <!-- noodle-skill version:0.100.0 hash:8020811f1769c538 -->
7
7
 
8
8
  # connecting-apis-to-mcp
9
9
 
@@ -17,6 +17,7 @@
17
17
  - Tests
18
18
  - Secrets and variables
19
19
  - Embedded assistant
20
+ - Managed collections
20
21
  - Boundaries
21
22
 
22
23
  ## Input paths
@@ -441,6 +442,12 @@ The compiler validates and hashes every document at build time (bad extensions,
441
442
 
442
443
  The managed crawler and managed index are the defaults and need no configuration. A component may instead bring its own crawler (`crawler: firecrawl({ apiKey: secret('FIRECRAWL_API_KEY') })` or `tavily(...)`) and/or its own index (`index: algolia({ appId: variable('ALGOLIA_APP_ID'), apiKey: secret('ALGOLIA_API_KEY') })` or `meilisearch({ host: variable(...), apiKey: secret(...) })`). The code declares only config names; operators supply values with `noodle secrets set` / `noodle variables set`, and deploy preflight fails closed naming any unset reference.
443
444
 
445
+ ## Managed collections
446
+
447
+ Use `managedCollection(name, { title, description, schemaVersion, record })` when an application needs reusable typed intent for business records that Noodle may later hold. Pass it through `server(..., { collections: [...] }, definitions)`. `record` is one bounded, closed Zod object; names use lowercase letters, numbers, and underscores. Keep payment-card, credentials, passport/government identity, health, and biometric fields out of this surface.
448
+
449
+ This declaration compiles schema metadata only. It does not create a submit tool, grant access, select retention or residency, provision storage, or make records available to MCP or the embedded assistant. Operators bind lifecycle and authority separately. Until the service intake path is shipped, keep live business operations on their existing connector tools.
450
+
444
451
  ## Boundaries
445
452
 
446
453
  Import public app authoring only from `@noodleseed/one` (and its documented `/react` or `/platform` subpaths). Packages and subpaths under `@noodle-borg/*` are runtime implementation details, including `/portable` boundaries, and must never appear in customer `server.ts` code. Do not hand-author manifest JSON/YAML, runtime artifacts, connector IR, or hosted asset metadata. Do not read or copy secrets, bearer tokens, refresh tokens, static access keys, `.env`, `.env.noodle`, or `~/.noodle/config.json`. Hosted access is identity-based — do not add static data-plane credential paths.
@@ -3,7 +3,7 @@ name: creating-product-agent-guides
3
3
  description: "Use when a Noodle Seed MCP server needs a new or revised product agent guide, App Package skill, or explicit product-skill regeneration."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.99.1 hash:0e06e11254563b6a -->
6
+ <!-- noodle-skill version:0.100.0 hash:0e06e11254563b6a -->
7
7
 
8
8
  # creating-product-agent-guides
9
9
 
@@ -3,7 +3,7 @@ name: debugging-mcp-delivery
3
3
  description: "Use when an existing Noodle Seed MCP project has a concrete validation, runtime, connector, App, host, deployment, or production failure."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.99.1 hash:8d75ad13f4b3120a -->
6
+ <!-- noodle-skill version:0.100.0 hash:8d75ad13f4b3120a -->
7
7
 
8
8
  # debugging-mcp-delivery
9
9
 
@@ -3,7 +3,7 @@ name: deploying-mcp-services
3
3
  description: "Use when the user explicitly requests a Noodle Seed hosted link, configuration write, deployment, access change, rollback, or connection write."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.99.1 hash:3a1e14ff9b98ddbd -->
6
+ <!-- noodle-skill version:0.100.0 hash:3a1e14ff9b98ddbd -->
7
7
 
8
8
  # deploying-mcp-services
9
9
 
@@ -61,6 +61,7 @@ Developer-facing `noodle` commands, grouped by area. Local authoring commands (`
61
61
  | `noodle deployments` | List or inspect individual deployments (`deployments list`/`deployments inspect <id>`). |
62
62
  | `noodle distributions` | Publish immutable host archives, record their lifecycle, and operate bounded delivery. |
63
63
  | `noodle service` | Query hosted service capabilities. |
64
+ | `noodle solutions` | Install managed solutions and operate their grants, records, activity, exports, and deletion. |
64
65
  | `noodle login` | Authenticate with Noodle Seed Cloud. |
65
66
  | `noodle logout` | Clear saved credentials. |
66
67
  | `noodle whoami` | Print the current authenticated user. |
@@ -3,7 +3,7 @@ name: designing-mcp-products
3
3
  description: "Use when a Noodle Seed MCP product idea needs conversational fit, user benefit, scope, interaction, or evidence design before implementation."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.99.1 hash:a21b2ed9997f9454 -->
6
+ <!-- noodle-skill version:0.100.0 hash:a21b2ed9997f9454 -->
7
7
 
8
8
  # designing-mcp-products
9
9
 
@@ -17,6 +17,7 @@
17
17
  - Tests
18
18
  - Secrets and variables
19
19
  - Embedded assistant
20
+ - Managed collections
20
21
  - Boundaries
21
22
 
22
23
  ## Input paths
@@ -441,6 +442,12 @@ The compiler validates and hashes every document at build time (bad extensions,
441
442
 
442
443
  The managed crawler and managed index are the defaults and need no configuration. A component may instead bring its own crawler (`crawler: firecrawl({ apiKey: secret('FIRECRAWL_API_KEY') })` or `tavily(...)`) and/or its own index (`index: algolia({ appId: variable('ALGOLIA_APP_ID'), apiKey: secret('ALGOLIA_API_KEY') })` or `meilisearch({ host: variable(...), apiKey: secret(...) })`). The code declares only config names; operators supply values with `noodle secrets set` / `noodle variables set`, and deploy preflight fails closed naming any unset reference.
443
444
 
445
+ ## Managed collections
446
+
447
+ Use `managedCollection(name, { title, description, schemaVersion, record })` when an application needs reusable typed intent for business records that Noodle may later hold. Pass it through `server(..., { collections: [...] }, definitions)`. `record` is one bounded, closed Zod object; names use lowercase letters, numbers, and underscores. Keep payment-card, credentials, passport/government identity, health, and biometric fields out of this surface.
448
+
449
+ This declaration compiles schema metadata only. It does not create a submit tool, grant access, select retention or residency, provision storage, or make records available to MCP or the embedded assistant. Operators bind lifecycle and authority separately. Until the service intake path is shipped, keep live business operations on their existing connector tools.
450
+
444
451
  ## Boundaries
445
452
 
446
453
  Import public app authoring only from `@noodleseed/one` (and its documented `/react` or `/platform` subpaths). Packages and subpaths under `@noodle-borg/*` are runtime implementation details, including `/portable` boundaries, and must never appear in customer `server.ts` code. Do not hand-author manifest JSON/YAML, runtime artifacts, connector IR, or hosted asset metadata. Do not read or copy secrets, bearer tokens, refresh tokens, static access keys, `.env`, `.env.noodle`, or `~/.noodle/config.json`. Hosted access is identity-based — do not add static data-plane credential paths.
@@ -3,7 +3,7 @@ name: embedding-mcp-assistants
3
3
  description: "Use when embedding a Noodle assistant into an existing SaaS or web application with browser, identity, session, and credential boundaries."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.99.1 hash:d554d661ed7ac7be -->
6
+ <!-- noodle-skill version:0.100.0 hash:d554d661ed7ac7be -->
7
7
 
8
8
  # embedding-mcp-assistants
9
9
 
@@ -17,6 +17,7 @@
17
17
  - Tests
18
18
  - Secrets and variables
19
19
  - Embedded assistant
20
+ - Managed collections
20
21
  - Boundaries
21
22
 
22
23
  ## Input paths
@@ -441,6 +442,12 @@ The compiler validates and hashes every document at build time (bad extensions,
441
442
 
442
443
  The managed crawler and managed index are the defaults and need no configuration. A component may instead bring its own crawler (`crawler: firecrawl({ apiKey: secret('FIRECRAWL_API_KEY') })` or `tavily(...)`) and/or its own index (`index: algolia({ appId: variable('ALGOLIA_APP_ID'), apiKey: secret('ALGOLIA_API_KEY') })` or `meilisearch({ host: variable(...), apiKey: secret(...) })`). The code declares only config names; operators supply values with `noodle secrets set` / `noodle variables set`, and deploy preflight fails closed naming any unset reference.
443
444
 
445
+ ## Managed collections
446
+
447
+ Use `managedCollection(name, { title, description, schemaVersion, record })` when an application needs reusable typed intent for business records that Noodle may later hold. Pass it through `server(..., { collections: [...] }, definitions)`. `record` is one bounded, closed Zod object; names use lowercase letters, numbers, and underscores. Keep payment-card, credentials, passport/government identity, health, and biometric fields out of this surface.
448
+
449
+ This declaration compiles schema metadata only. It does not create a submit tool, grant access, select retention or residency, provision storage, or make records available to MCP or the embedded assistant. Operators bind lifecycle and authority separately. Until the service intake path is shipped, keep live business operations on their existing connector tools.
450
+
444
451
  ## Boundaries
445
452
 
446
453
  Import public app authoring only from `@noodleseed/one` (and its documented `/react` or `/platform` subpaths). Packages and subpaths under `@noodle-borg/*` are runtime implementation details, including `/portable` boundaries, and must never appear in customer `server.ts` code. Do not hand-author manifest JSON/YAML, runtime artifacts, connector IR, or hosted asset metadata. Do not read or copy secrets, bearer tokens, refresh tokens, static access keys, `.env`, `.env.noodle`, or `~/.noodle/config.json`. Hosted access is identity-based — do not add static data-plane credential paths.
@@ -6,6 +6,10 @@ completes in chat — only **payment** hands off, via a signed checkout deep lin
6
6
  the app). It pairs a view-backed `tool` menu/cart with app-only `tool` cart helpers and a model-visible
7
7
  `create_checkout` tool backed by `handoff.allowedDomains`.
8
8
 
9
+ It also declares a reusable `guest_requests` managed-collection schema. In this foundation slice the
10
+ declaration compiles schema intent only: storage lifecycle, access, and a public submit route are bound by
11
+ the hosting service separately, and no submit tool is generated.
12
+
9
13
  Capability slot: **end-to-end in-chat transaction + payment-only handoff**, plus a worked **design-first**
10
14
  deliverable set (`design/` — a UX Document, a single-file HTML wireframe with an embedded OpenAI Apps SDK
11
15
  compliance audit, and a Recommended API contract). It sets the quality bar the `noodle-seed` skill's
@@ -1,4 +1,4 @@
1
- import { annotations, server, tool, z } from '@noodleseed/one';
1
+ import { annotations, managedCollection, server, tool, z } from '@noodleseed/one';
2
2
 
3
3
  // Acme Bistro is a fictional restaurant. This app is deliberately END-TO-END: the customer browses the
4
4
  // menu and builds the order in chat, and the order completes in chat — only *payment* hands off, via a
@@ -28,6 +28,17 @@ const menuItemOutput = z.object({
28
28
  kind: z.string(),
29
29
  });
30
30
 
31
+ const guestRequests = managedCollection('guest_requests', {
32
+ title: 'Guest requests',
33
+ description: 'Guest service requests that restaurant staff can review and resolve.',
34
+ schemaVersion: 1,
35
+ record: z.object({
36
+ locationReference: z.string().min(1).max(120),
37
+ requestType: z.enum(['reservation_help', 'accessibility', 'dietary_question', 'other']),
38
+ summary: z.string().min(1).max(1000),
39
+ }),
40
+ });
41
+
31
42
  // Tool annotations for host planners: the menu read is read-only; cart edits are local writes; checkout
32
43
  // opens an external (payment) link.
33
44
  const readOnly = annotations.readOnly();
@@ -52,6 +63,8 @@ export default server(
52
63
  handoff: {
53
64
  allowedDomains: ['https://pay.acme.example', 'https://acme.example'],
54
65
  },
66
+ // Reusable business-record intent. Storage, lifecycle, access, and public intake bind separately.
67
+ collections: [guestRequests],
55
68
  },
56
69
  [
57
70
  tool('show_menu', {
@@ -18,4 +18,14 @@ describe('acme-bistro example', () => {
18
18
  expect(text).toContain('add_to_cart');
19
19
  expect(text).toContain('create_checkout');
20
20
  });
21
+
22
+ it('declares reusable guest-request record intent without generating a submit tool', async () => {
23
+ const manifest = await app.toManifest();
24
+ expect(manifest.server.collections).toEqual([
25
+ expect.objectContaining({ name: 'guest_requests', schemaVersion: 1 }),
26
+ ]);
27
+ expect(manifest.tools).not.toContainEqual(
28
+ expect.objectContaining({ name: 'submit_guest_requests' }),
29
+ );
30
+ });
21
31
  });
@@ -3,7 +3,7 @@ name: executing-noodle-plans
3
3
  description: "Use when the user asks to execute an approved, decision-complete implementation plan for a Noodle Seed project task by task with test-first changes, review, recovery, and final verification."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.99.1 hash:6a9f132ddb79352e -->
6
+ <!-- noodle-skill version:0.100.0 hash:6a9f132ddb79352e -->
7
7
 
8
8
  # Execute a Noodle Seed implementation plan
9
9
 
@@ -3,7 +3,7 @@ name: publishing-mcp-integrations
3
3
  description: "Use when preparing, reviewing, or submitting a Noodle Seed MCP integration to a host or app directory."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.99.1 hash:0ccafb222038f553 -->
6
+ <!-- noodle-skill version:0.100.0 hash:0ccafb222038f553 -->
7
7
 
8
8
  # publishing-mcp-integrations
9
9
 
@@ -17,6 +17,7 @@
17
17
  - Tests
18
18
  - Secrets and variables
19
19
  - Embedded assistant
20
+ - Managed collections
20
21
  - Boundaries
21
22
 
22
23
  ## Input paths
@@ -441,6 +442,12 @@ The compiler validates and hashes every document at build time (bad extensions,
441
442
 
442
443
  The managed crawler and managed index are the defaults and need no configuration. A component may instead bring its own crawler (`crawler: firecrawl({ apiKey: secret('FIRECRAWL_API_KEY') })` or `tavily(...)`) and/or its own index (`index: algolia({ appId: variable('ALGOLIA_APP_ID'), apiKey: secret('ALGOLIA_API_KEY') })` or `meilisearch({ host: variable(...), apiKey: secret(...) })`). The code declares only config names; operators supply values with `noodle secrets set` / `noodle variables set`, and deploy preflight fails closed naming any unset reference.
443
444
 
445
+ ## Managed collections
446
+
447
+ Use `managedCollection(name, { title, description, schemaVersion, record })` when an application needs reusable typed intent for business records that Noodle may later hold. Pass it through `server(..., { collections: [...] }, definitions)`. `record` is one bounded, closed Zod object; names use lowercase letters, numbers, and underscores. Keep payment-card, credentials, passport/government identity, health, and biometric fields out of this surface.
448
+
449
+ This declaration compiles schema metadata only. It does not create a submit tool, grant access, select retention or residency, provision storage, or make records available to MCP or the embedded assistant. Operators bind lifecycle and authority separately. Until the service intake path is shipped, keep live business operations on their existing connector tools.
450
+
444
451
  ## Boundaries
445
452
 
446
453
  Import public app authoring only from `@noodleseed/one` (and its documented `/react` or `/platform` subpaths). Packages and subpaths under `@noodle-borg/*` are runtime implementation details, including `/portable` boundaries, and must never appear in customer `server.ts` code. Do not hand-author manifest JSON/YAML, runtime artifacts, connector IR, or hosted asset metadata. Do not read or copy secrets, bearer tokens, refresh tokens, static access keys, `.env`, `.env.noodle`, or `~/.noodle/config.json`. Hosted access is identity-based — do not add static data-plane credential paths.
@@ -61,6 +61,7 @@ Developer-facing `noodle` commands, grouped by area. Local authoring commands (`
61
61
  | `noodle deployments` | List or inspect individual deployments (`deployments list`/`deployments inspect <id>`). |
62
62
  | `noodle distributions` | Publish immutable host archives, record their lifecycle, and operate bounded delivery. |
63
63
  | `noodle service` | Query hosted service capabilities. |
64
+ | `noodle solutions` | Install managed solutions and operate their grants, records, activity, exports, and deletion. |
64
65
  | `noodle login` | Authenticate with Noodle Seed Cloud. |
65
66
  | `noodle logout` | Clear saved credentials. |
66
67
  | `noodle whoami` | Print the current authenticated user. |
@@ -18,7 +18,7 @@ Run `noodle validate` (add `--json` for the machine-readable envelope, `--fix-pr
18
18
  | `invalid_shape` | A field has the wrong type or structure; match the shape the compiler reports under `path` against the SDK builder you used. |
19
19
  | `invalid_name` | Rename the identifier to match the allowed pattern (lowercase, no spaces/reserved characters) cited at `path`. |
20
20
  | `duplicate_name` | Two tools/components share a name; give each a unique name at the cited `path`. |
21
- | `reserved_name` | Rename the reserved identifier; `__noodleIntent` is platform-owned, while application context uses one explicit zero-input tool with `contextProvider: true`. |
21
+ | `reserved_name` | Rename the reserved identifier; `__noodleIntent` and future managed-collection `submit_<name>` tools are platform-owned, while application context uses one explicit zero-input tool with `contextProvider: true`. |
22
22
  | `unsupported_manifest_version` | Update the SDK/CLI so the emitted manifest version is supported; do not pin an old manifest shape. |
23
23
  | `reserved_for_future_version` | The verb at `path` (currently `compute` as a flow step) is reserved for a future core version; express the step with `use` (a connector operation), `map` (a pure mapping), or the shipped `ctx.elicit` input primitive instead. |
24
24
  | `invalid_operation_ref` | Fix the connector operation reference to `alias.operation` for an operation that exists on that connector. |
@@ -58,6 +58,7 @@ Run `noodle validate` (add `--json` for the machine-readable envelope, `--fix-pr
58
58
  | `state_secret_field` | Remove the secret-shaped field from widget/handle state; secrets must never be stored in state or sent to widgets. |
59
59
  | `invalid_knowledge` | Fix the `knowledge()` declaration: documents must be existing UTF-8 `.md`/`.txt` files inside the project root (no symlinks), within the 100-file / 1 MiB / 25 MiB bounds, and sites need an exact HTTPS origin plus at least one include glob. |
60
60
  | `knowledge_unhashed` | Compile from the project root (`noodle validate`/`noodle dev`) so declared knowledge documents can be read and hashed. |
61
+ | `invalid_managed_collection` | Fix the `managedCollection()` declaration: use a bounded, closed Zod object without credential, payment-card, government-identity, health, or biometric field names. |
61
62
  | `unknown_connector_alias` | The tool calls a connector alias not declared in `use`/`provides`; add it or fix the alias (see `suggestions`). |
62
63
  | `connector_not_in_catalog` | The referenced connector is not in the resolved catalog; add it to the project connectors or correct the reference. |
63
64
  | `unknown_operation` | The connector has no such operation; use an operation declared on that connector (see `didYouMean`/`suggestions`). |
@@ -63,6 +63,7 @@ Platform helper connectors are explicit subpath imports from `@noodleseed/one/pl
63
63
  - `firecrawl`
64
64
  - `gmailConnector`
65
65
  - `knowledge`
66
+ - `managedCollection`
66
67
  - `managedSecret`
67
68
  - `meilisearch`
68
69
  - `noodleManaged`
@@ -3,7 +3,7 @@ name: reporting-noodle-feedback
3
3
  description: "Use when a Noodle Seed bug, misleading instruction, missing capability, or concrete product improvement should be proposed to the user."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.99.1 hash:660cc6ad9469d90f -->
6
+ <!-- noodle-skill version:0.100.0 hash:660cc6ad9469d90f -->
7
7
 
8
8
  # reporting-noodle-feedback
9
9
 
@@ -3,7 +3,7 @@ name: verifying-mcp-delivery
3
3
  description: "Use when proving a Noodle Seed MCP project works at a named compile, local, connector, App, host, deployment, or production evidence level."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.99.1 hash:292253cbaed9a3c5 -->
6
+ <!-- noodle-skill version:0.100.0 hash:292253cbaed9a3c5 -->
7
7
 
8
8
  # verifying-mcp-delivery
9
9
 
@@ -3,7 +3,7 @@ name: wrapping-existing-applications
3
3
  description: "Use when an existing application has no stable usable API and needs a read-only, identity-first Noodle Seed integration plan before implementation."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.99.1 hash:379ab9f64878f1fe -->
6
+ <!-- noodle-skill version:0.100.0 hash:379ab9f64878f1fe -->
7
7
 
8
8
  # wrapping-existing-applications
9
9
 
@@ -17,6 +17,7 @@
17
17
  - Tests
18
18
  - Secrets and variables
19
19
  - Embedded assistant
20
+ - Managed collections
20
21
  - Boundaries
21
22
 
22
23
  ## Input paths
@@ -441,6 +442,12 @@ The compiler validates and hashes every document at build time (bad extensions,
441
442
 
442
443
  The managed crawler and managed index are the defaults and need no configuration. A component may instead bring its own crawler (`crawler: firecrawl({ apiKey: secret('FIRECRAWL_API_KEY') })` or `tavily(...)`) and/or its own index (`index: algolia({ appId: variable('ALGOLIA_APP_ID'), apiKey: secret('ALGOLIA_API_KEY') })` or `meilisearch({ host: variable(...), apiKey: secret(...) })`). The code declares only config names; operators supply values with `noodle secrets set` / `noodle variables set`, and deploy preflight fails closed naming any unset reference.
443
444
 
445
+ ## Managed collections
446
+
447
+ Use `managedCollection(name, { title, description, schemaVersion, record })` when an application needs reusable typed intent for business records that Noodle may later hold. Pass it through `server(..., { collections: [...] }, definitions)`. `record` is one bounded, closed Zod object; names use lowercase letters, numbers, and underscores. Keep payment-card, credentials, passport/government identity, health, and biometric fields out of this surface.
448
+
449
+ This declaration compiles schema metadata only. It does not create a submit tool, grant access, select retention or residency, provision storage, or make records available to MCP or the embedded assistant. Operators bind lifecycle and authority separately. Until the service intake path is shipped, keep live business operations on their existing connector tools.
450
+
444
451
  ## Boundaries
445
452
 
446
453
  Import public app authoring only from `@noodleseed/one` (and its documented `/react` or `/platform` subpaths). Packages and subpaths under `@noodle-borg/*` are runtime implementation details, including `/portable` boundaries, and must never appear in customer `server.ts` code. Do not hand-author manifest JSON/YAML, runtime artifacts, connector IR, or hosted asset metadata. Do not read or copy secrets, bearer tokens, refresh tokens, static access keys, `.env`, `.env.noodle`, or `~/.noodle/config.json`. Hosted access is identity-based — do not add static data-plane credential paths.
@@ -3,7 +3,7 @@ name: noodle-seed
3
3
  description: "Use when building, validating, testing, deploying, or operating a local or hosted Noodle Seed MCP server or app authored in TypeScript with the noodle CLI."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.99.1 hash:d3ceb1902ef4bb72 -->
6
+ <!-- noodle-skill version:0.100.0 hash:d3ceb1902ef4bb72 -->
7
7
 
8
8
  # Noodle Seed
9
9
 
@@ -3,7 +3,7 @@ name: authoring-mcp-servers
3
3
  description: "Use when creating or extending a headless Noodle Seed MCP server, tool, resource, prompt, or typed model-facing capability."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.99.1 hash:dd57a15df15d10b2 -->
6
+ <!-- noodle-skill version:0.100.0 hash:dd57a15df15d10b2 -->
7
7
 
8
8
  # authoring-mcp-servers
9
9
 
@@ -17,6 +17,7 @@
17
17
  - Tests
18
18
  - Secrets and variables
19
19
  - Embedded assistant
20
+ - Managed collections
20
21
  - Boundaries
21
22
 
22
23
  ## Input paths
@@ -441,6 +442,12 @@ The compiler validates and hashes every document at build time (bad extensions,
441
442
 
442
443
  The managed crawler and managed index are the defaults and need no configuration. A component may instead bring its own crawler (`crawler: firecrawl({ apiKey: secret('FIRECRAWL_API_KEY') })` or `tavily(...)`) and/or its own index (`index: algolia({ appId: variable('ALGOLIA_APP_ID'), apiKey: secret('ALGOLIA_API_KEY') })` or `meilisearch({ host: variable(...), apiKey: secret(...) })`). The code declares only config names; operators supply values with `noodle secrets set` / `noodle variables set`, and deploy preflight fails closed naming any unset reference.
443
444
 
445
+ ## Managed collections
446
+
447
+ Use `managedCollection(name, { title, description, schemaVersion, record })` when an application needs reusable typed intent for business records that Noodle may later hold. Pass it through `server(..., { collections: [...] }, definitions)`. `record` is one bounded, closed Zod object; names use lowercase letters, numbers, and underscores. Keep payment-card, credentials, passport/government identity, health, and biometric fields out of this surface.
448
+
449
+ This declaration compiles schema metadata only. It does not create a submit tool, grant access, select retention or residency, provision storage, or make records available to MCP or the embedded assistant. Operators bind lifecycle and authority separately. Until the service intake path is shipped, keep live business operations on their existing connector tools.
450
+
444
451
  ## Boundaries
445
452
 
446
453
  Import public app authoring only from `@noodleseed/one` (and its documented `/react` or `/platform` subpaths). Packages and subpaths under `@noodle-borg/*` are runtime implementation details, including `/portable` boundaries, and must never appear in customer `server.ts` code. Do not hand-author manifest JSON/YAML, runtime artifacts, connector IR, or hosted asset metadata. Do not read or copy secrets, bearer tokens, refresh tokens, static access keys, `.env`, `.env.noodle`, or `~/.noodle/config.json`. Hosted access is identity-based — do not add static data-plane credential paths.
@@ -63,6 +63,7 @@ Platform helper connectors are explicit subpath imports from `@noodleseed/one/pl
63
63
  - `firecrawl`
64
64
  - `gmailConnector`
65
65
  - `knowledge`
66
+ - `managedCollection`
66
67
  - `managedSecret`
67
68
  - `meilisearch`
68
69
  - `noodleManaged`
@@ -3,7 +3,7 @@ name: building-mcp-apps
3
3
  description: "Use when a Noodle Seed MCP App, widget, interactive card, visual interaction, or host-visible UI is the primary requested outcome."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.99.1 hash:98c7b07c82a7d7ce -->
6
+ <!-- noodle-skill version:0.100.0 hash:98c7b07c82a7d7ce -->
7
7
 
8
8
  # building-mcp-apps
9
9
 
@@ -3,7 +3,7 @@ name: connecting-apis-to-mcp
3
3
  description: "Use when all four API-evidence inputs exist—and only then: API base URL, authentication scheme, representative safe read, and observed response."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.99.1 hash:8020811f1769c538 -->
6
+ <!-- noodle-skill version:0.100.0 hash:8020811f1769c538 -->
7
7
 
8
8
  # connecting-apis-to-mcp
9
9
 
@@ -17,6 +17,7 @@
17
17
  - Tests
18
18
  - Secrets and variables
19
19
  - Embedded assistant
20
+ - Managed collections
20
21
  - Boundaries
21
22
 
22
23
  ## Input paths
@@ -441,6 +442,12 @@ The compiler validates and hashes every document at build time (bad extensions,
441
442
 
442
443
  The managed crawler and managed index are the defaults and need no configuration. A component may instead bring its own crawler (`crawler: firecrawl({ apiKey: secret('FIRECRAWL_API_KEY') })` or `tavily(...)`) and/or its own index (`index: algolia({ appId: variable('ALGOLIA_APP_ID'), apiKey: secret('ALGOLIA_API_KEY') })` or `meilisearch({ host: variable(...), apiKey: secret(...) })`). The code declares only config names; operators supply values with `noodle secrets set` / `noodle variables set`, and deploy preflight fails closed naming any unset reference.
443
444
 
445
+ ## Managed collections
446
+
447
+ Use `managedCollection(name, { title, description, schemaVersion, record })` when an application needs reusable typed intent for business records that Noodle may later hold. Pass it through `server(..., { collections: [...] }, definitions)`. `record` is one bounded, closed Zod object; names use lowercase letters, numbers, and underscores. Keep payment-card, credentials, passport/government identity, health, and biometric fields out of this surface.
448
+
449
+ This declaration compiles schema metadata only. It does not create a submit tool, grant access, select retention or residency, provision storage, or make records available to MCP or the embedded assistant. Operators bind lifecycle and authority separately. Until the service intake path is shipped, keep live business operations on their existing connector tools.
450
+
444
451
  ## Boundaries
445
452
 
446
453
  Import public app authoring only from `@noodleseed/one` (and its documented `/react` or `/platform` subpaths). Packages and subpaths under `@noodle-borg/*` are runtime implementation details, including `/portable` boundaries, and must never appear in customer `server.ts` code. Do not hand-author manifest JSON/YAML, runtime artifacts, connector IR, or hosted asset metadata. Do not read or copy secrets, bearer tokens, refresh tokens, static access keys, `.env`, `.env.noodle`, or `~/.noodle/config.json`. Hosted access is identity-based — do not add static data-plane credential paths.
@@ -3,7 +3,7 @@ name: creating-product-agent-guides
3
3
  description: "Use when a Noodle Seed MCP server needs a new or revised product agent guide, App Package skill, or explicit product-skill regeneration."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.99.1 hash:0e06e11254563b6a -->
6
+ <!-- noodle-skill version:0.100.0 hash:0e06e11254563b6a -->
7
7
 
8
8
  # creating-product-agent-guides
9
9
 
@@ -3,7 +3,7 @@ name: debugging-mcp-delivery
3
3
  description: "Use when an existing Noodle Seed MCP project has a concrete validation, runtime, connector, App, host, deployment, or production failure."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.99.1 hash:8d75ad13f4b3120a -->
6
+ <!-- noodle-skill version:0.100.0 hash:8d75ad13f4b3120a -->
7
7
 
8
8
  # debugging-mcp-delivery
9
9
 
@@ -3,7 +3,7 @@ name: deploying-mcp-services
3
3
  description: "Use when the user explicitly requests a Noodle Seed hosted link, configuration write, deployment, access change, rollback, or connection write."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.99.1 hash:3a1e14ff9b98ddbd -->
6
+ <!-- noodle-skill version:0.100.0 hash:3a1e14ff9b98ddbd -->
7
7
 
8
8
  # deploying-mcp-services
9
9
 
@@ -61,6 +61,7 @@ Developer-facing `noodle` commands, grouped by area. Local authoring commands (`
61
61
  | `noodle deployments` | List or inspect individual deployments (`deployments list`/`deployments inspect <id>`). |
62
62
  | `noodle distributions` | Publish immutable host archives, record their lifecycle, and operate bounded delivery. |
63
63
  | `noodle service` | Query hosted service capabilities. |
64
+ | `noodle solutions` | Install managed solutions and operate their grants, records, activity, exports, and deletion. |
64
65
  | `noodle login` | Authenticate with Noodle Seed Cloud. |
65
66
  | `noodle logout` | Clear saved credentials. |
66
67
  | `noodle whoami` | Print the current authenticated user. |
@@ -3,7 +3,7 @@ name: designing-mcp-products
3
3
  description: "Use when a Noodle Seed MCP product idea needs conversational fit, user benefit, scope, interaction, or evidence design before implementation."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.99.1 hash:a21b2ed9997f9454 -->
6
+ <!-- noodle-skill version:0.100.0 hash:a21b2ed9997f9454 -->
7
7
 
8
8
  # designing-mcp-products
9
9
 
@@ -17,6 +17,7 @@
17
17
  - Tests
18
18
  - Secrets and variables
19
19
  - Embedded assistant
20
+ - Managed collections
20
21
  - Boundaries
21
22
 
22
23
  ## Input paths
@@ -441,6 +442,12 @@ The compiler validates and hashes every document at build time (bad extensions,
441
442
 
442
443
  The managed crawler and managed index are the defaults and need no configuration. A component may instead bring its own crawler (`crawler: firecrawl({ apiKey: secret('FIRECRAWL_API_KEY') })` or `tavily(...)`) and/or its own index (`index: algolia({ appId: variable('ALGOLIA_APP_ID'), apiKey: secret('ALGOLIA_API_KEY') })` or `meilisearch({ host: variable(...), apiKey: secret(...) })`). The code declares only config names; operators supply values with `noodle secrets set` / `noodle variables set`, and deploy preflight fails closed naming any unset reference.
443
444
 
445
+ ## Managed collections
446
+
447
+ Use `managedCollection(name, { title, description, schemaVersion, record })` when an application needs reusable typed intent for business records that Noodle may later hold. Pass it through `server(..., { collections: [...] }, definitions)`. `record` is one bounded, closed Zod object; names use lowercase letters, numbers, and underscores. Keep payment-card, credentials, passport/government identity, health, and biometric fields out of this surface.
448
+
449
+ This declaration compiles schema metadata only. It does not create a submit tool, grant access, select retention or residency, provision storage, or make records available to MCP or the embedded assistant. Operators bind lifecycle and authority separately. Until the service intake path is shipped, keep live business operations on their existing connector tools.
450
+
444
451
  ## Boundaries
445
452
 
446
453
  Import public app authoring only from `@noodleseed/one` (and its documented `/react` or `/platform` subpaths). Packages and subpaths under `@noodle-borg/*` are runtime implementation details, including `/portable` boundaries, and must never appear in customer `server.ts` code. Do not hand-author manifest JSON/YAML, runtime artifacts, connector IR, or hosted asset metadata. Do not read or copy secrets, bearer tokens, refresh tokens, static access keys, `.env`, `.env.noodle`, or `~/.noodle/config.json`. Hosted access is identity-based — do not add static data-plane credential paths.
@@ -3,7 +3,7 @@ name: embedding-mcp-assistants
3
3
  description: "Use when embedding a Noodle assistant into an existing SaaS or web application with browser, identity, session, and credential boundaries."
4
4
  ---
5
5
 
6
- <!-- noodle-skill version:0.99.1 hash:d554d661ed7ac7be -->
6
+ <!-- noodle-skill version:0.100.0 hash:d554d661ed7ac7be -->
7
7
 
8
8
  # embedding-mcp-assistants
9
9
 
@@ -17,6 +17,7 @@
17
17
  - Tests
18
18
  - Secrets and variables
19
19
  - Embedded assistant
20
+ - Managed collections
20
21
  - Boundaries
21
22
 
22
23
  ## Input paths
@@ -441,6 +442,12 @@ The compiler validates and hashes every document at build time (bad extensions,
441
442
 
442
443
  The managed crawler and managed index are the defaults and need no configuration. A component may instead bring its own crawler (`crawler: firecrawl({ apiKey: secret('FIRECRAWL_API_KEY') })` or `tavily(...)`) and/or its own index (`index: algolia({ appId: variable('ALGOLIA_APP_ID'), apiKey: secret('ALGOLIA_API_KEY') })` or `meilisearch({ host: variable(...), apiKey: secret(...) })`). The code declares only config names; operators supply values with `noodle secrets set` / `noodle variables set`, and deploy preflight fails closed naming any unset reference.
443
444
 
445
+ ## Managed collections
446
+
447
+ Use `managedCollection(name, { title, description, schemaVersion, record })` when an application needs reusable typed intent for business records that Noodle may later hold. Pass it through `server(..., { collections: [...] }, definitions)`. `record` is one bounded, closed Zod object; names use lowercase letters, numbers, and underscores. Keep payment-card, credentials, passport/government identity, health, and biometric fields out of this surface.
448
+
449
+ This declaration compiles schema metadata only. It does not create a submit tool, grant access, select retention or residency, provision storage, or make records available to MCP or the embedded assistant. Operators bind lifecycle and authority separately. Until the service intake path is shipped, keep live business operations on their existing connector tools.
450
+
444
451
  ## Boundaries
445
452
 
446
453
  Import public app authoring only from `@noodleseed/one` (and its documented `/react` or `/platform` subpaths). Packages and subpaths under `@noodle-borg/*` are runtime implementation details, including `/portable` boundaries, and must never appear in customer `server.ts` code. Do not hand-author manifest JSON/YAML, runtime artifacts, connector IR, or hosted asset metadata. Do not read or copy secrets, bearer tokens, refresh tokens, static access keys, `.env`, `.env.noodle`, or `~/.noodle/config.json`. Hosted access is identity-based — do not add static data-plane credential paths.