@toolgrain/mcp 0.1.1 → 0.1.3

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 (73) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +9 -8
  3. package/dist/auth/audience.d.ts +9 -1
  4. package/dist/auth/audience.d.ts.map +1 -1
  5. package/dist/auth/audience.js +9 -1
  6. package/dist/auth/audience.js.map +1 -1
  7. package/dist/auth/context.d.ts +9 -1
  8. package/dist/auth/context.d.ts.map +1 -1
  9. package/dist/auth/context.js +9 -1
  10. package/dist/auth/context.js.map +1 -1
  11. package/dist/auth/errors.d.ts +19 -1
  12. package/dist/auth/errors.d.ts.map +1 -1
  13. package/dist/auth/errors.js +16 -1
  14. package/dist/auth/errors.js.map +1 -1
  15. package/dist/auth/types.d.ts +21 -0
  16. package/dist/auth/types.d.ts.map +1 -1
  17. package/dist/auth/url.d.ts +9 -1
  18. package/dist/auth/url.d.ts.map +1 -1
  19. package/dist/auth/url.js +9 -1
  20. package/dist/auth/url.js.map +1 -1
  21. package/dist/context/definition.d.ts +28 -1
  22. package/dist/context/definition.d.ts.map +1 -1
  23. package/dist/context/definition.js +10 -1
  24. package/dist/context/definition.js.map +1 -1
  25. package/dist/diagnostics.d.ts +2 -0
  26. package/dist/diagnostics.d.ts.map +1 -1
  27. package/dist/diagnostics.js.map +1 -1
  28. package/dist/server.d.ts +59 -2
  29. package/dist/server.d.ts.map +1 -1
  30. package/dist/server.js +9 -1
  31. package/dist/server.js.map +1 -1
  32. package/dist/tools/context.d.ts +19 -1
  33. package/dist/tools/context.d.ts.map +1 -1
  34. package/dist/tools/context.js +8 -1
  35. package/dist/tools/context.js.map +1 -1
  36. package/dist/tools/definition.d.ts +49 -0
  37. package/dist/tools/definition.d.ts.map +1 -1
  38. package/dist/tools/definition.js +9 -0
  39. package/dist/tools/definition.js.map +1 -1
  40. package/dist/tools/name.d.ts +6 -1
  41. package/dist/tools/name.d.ts.map +1 -1
  42. package/dist/tools/name.js +5 -1
  43. package/dist/tools/name.js.map +1 -1
  44. package/dist/tools/registry.d.ts +4 -0
  45. package/dist/tools/registry.d.ts.map +1 -1
  46. package/dist/tools/registry.js.map +1 -1
  47. package/dist/tools/rich-result.d.ts +56 -2
  48. package/dist/tools/rich-result.d.ts.map +1 -1
  49. package/dist/tools/rich-result.js +7 -1
  50. package/dist/tools/rich-result.js.map +1 -1
  51. package/dist/tools/schema.d.ts +13 -1
  52. package/dist/tools/schema.d.ts.map +1 -1
  53. package/dist/tools/schema.js +11 -1
  54. package/dist/tools/schema.js.map +1 -1
  55. package/dist/transport.d.ts +21 -0
  56. package/dist/transport.d.ts.map +1 -1
  57. package/dist/transport.js.map +1 -1
  58. package/package.json +3 -3
  59. package/src/auth/audience.ts +9 -1
  60. package/src/auth/context.ts +9 -1
  61. package/src/auth/errors.ts +19 -1
  62. package/src/auth/types.ts +21 -0
  63. package/src/auth/url.ts +9 -1
  64. package/src/context/definition.ts +28 -1
  65. package/src/diagnostics.ts +2 -0
  66. package/src/server.ts +63 -3
  67. package/src/tools/context.ts +19 -1
  68. package/src/tools/definition.ts +52 -1
  69. package/src/tools/name.ts +6 -1
  70. package/src/tools/registry.ts +4 -0
  71. package/src/tools/rich-result.ts +68 -6
  72. package/src/tools/schema.ts +8 -0
  73. package/src/transport.ts +21 -0
@@ -6,28 +6,46 @@ import { type ContextRegistry } from "../context/registry.js";
6
6
  import type { DeepReadonly } from "./json-value.js";
7
7
  /** What the client reported about itself; unverified, so not a basis for security decisions. */
8
8
  export interface ToolClient {
9
+ /** Copied, deeply frozen implementation details supplied by the client, when available. */
9
10
  readonly info?: DeepReadonly<Implementation | LegacyImplementation>;
11
+ /** Copied, deeply frozen capability claims supplied by the client, when available. */
10
12
  readonly capabilities?: DeepReadonly<ClientCapabilities | LegacyClientCapabilities>;
11
13
  }
14
+ /** Copied, immutable protocol metadata for one invocation; client claims remain unverified. */
12
15
  export interface ToolRequest {
16
+ /** JSON-RPC request identifier; identical IDs can occur in independent contexts. */
13
17
  readonly id: RequestId;
18
+ /** Supported protocol revision selected for this invocation. */
14
19
  readonly protocolVersion: SupportedProtocolVersion;
15
20
  /** Absent when the era and transport carry no client information, such as legacy HTTP. */
16
21
  readonly client?: ToolClient;
17
22
  /** A deeply frozen copy of the request's `_meta`; empty when the request carried none. */
18
23
  readonly meta: Readonly<Record<string, unknown>>;
19
24
  }
25
+ /** Per-invocation data passed to tool handlers and lazy context resolvers. */
20
26
  export interface ToolContext {
21
27
  /** Aborts when the client cancels or disconnects, or the transport or server closes. */
22
28
  readonly signal: AbortSignal;
29
+ /** Frozen request metadata; contains no verified authorization identity. */
23
30
  readonly request: ToolRequest;
24
31
  }
32
+ /** Optional metadata, cancellation, and provider bindings for a direct-call context. */
25
33
  export interface ToolContextOptions {
34
+ /** Caller-owned cancellation signal; defaults to a fresh, non-aborted signal. */
26
35
  signal?: AbortSignal;
36
+ /** Request fields to override; defaults are ID `0`, the modern revision, and empty metadata. */
27
37
  request?: Partial<ToolRequest>;
38
+ /** Providers or overrides available through their accessors; defaults to no registrations. */
28
39
  context?: readonly RegisteredContextProvider[];
29
40
  }
30
- /** Build a context for calling a definition's `execute` directly, for example in tests. */
41
+ /**
42
+ * Build an unauthenticated context for direct `execute()` calls, for example in tests.
43
+ * Request metadata is copied and deeply frozen; each call creates a fresh provider cache.
44
+ * Direct execution still bypasses server authorization, validation, and MCP conversion.
45
+ *
46
+ * @param options - Optional signal, request metadata, and provider registrations.
47
+ * @returns A context accepted by Toolgrain's provider accessors.
48
+ */
31
49
  export declare function toolContext(options?: ToolContextOptions): ToolContext;
32
50
  /** Each request gets its own deeply frozen copies, so handlers cannot affect one another. */
33
51
  export declare function createToolContext(signal: AbortSignal, { client, ...request }: ToolRequest, auth?: AuthIdentity, providers?: ContextRegistry): ToolContext;
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/tools/context.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,cAAc,EAEnB,KAAK,SAAS,EACd,KAAK,wBAAwB,EAC9B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,kBAAkB,IAAI,wBAAwB,EAC9C,cAAc,IAAI,oBAAoB,EACvC,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EACL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,gGAAgG;AAChG,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,cAAc,GAAG,oBAAoB,CAAC,CAAC;IACpE,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAClC,kBAAkB,GAAG,wBAAwB,CAC9C,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,eAAe,EAAE,wBAAwB,CAAC;IACnD,0FAA0F;IAC1F,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;IAC7B,0FAA0F;IAC1F,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,WAAW;IAC1B,wFAAwF;IACxF,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;CAC/B;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,SAAS,yBAAyB,EAAE,CAAC;CAChD;AAED,2FAA2F;AAC3F,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,WAAW,CAmBzE;AAED,6FAA6F;AAC7F,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,EACnB,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,EAAE,WAAW,EACnC,IAAI,CAAC,EAAE,YAAY,EACnB,SAAS,GAAE,eAAyC,GACnD,WAAW,CAiBb;AAED,4EAA4E;AAC5E,wBAAgB,UAAU,CACxB,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,EACxB,YAAY,EAAE,UAAU,CAAC,cAAc,CAAC,GACvC,UAAU,CAKZ"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/tools/context.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,cAAc,EAEnB,KAAK,SAAS,EACd,KAAK,wBAAwB,EAC9B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,kBAAkB,IAAI,wBAAwB,EAC9C,cAAc,IAAI,oBAAoB,EACvC,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EACL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,gGAAgG;AAChG,MAAM,WAAW,UAAU;IACzB,2FAA2F;IAC3F,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,cAAc,GAAG,oBAAoB,CAAC,CAAC;IACpE,sFAAsF;IACtF,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAClC,kBAAkB,GAAG,wBAAwB,CAC9C,CAAC;CACH;AAED,+FAA+F;AAC/F,MAAM,WAAW,WAAW;IAC1B,oFAAoF;IACpF,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;IACvB,gEAAgE;IAChE,QAAQ,CAAC,eAAe,EAAE,wBAAwB,CAAC;IACnD,0FAA0F;IAC1F,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;IAC7B,0FAA0F;IAC1F,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAClD;AAED,8EAA8E;AAC9E,MAAM,WAAW,WAAW;IAC1B,wFAAwF;IACxF,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,4EAA4E;IAC5E,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;CAC/B;AAED,wFAAwF;AACxF,MAAM,WAAW,kBAAkB;IACjC,iFAAiF;IACjF,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,gGAAgG;IAChG,OAAO,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/B,8FAA8F;IAC9F,OAAO,CAAC,EAAE,SAAS,yBAAyB,EAAE,CAAC;CAChD;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,WAAW,CAmBzE;AAED,6FAA6F;AAC7F,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,EACnB,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,EAAE,WAAW,EACnC,IAAI,CAAC,EAAE,YAAY,EACnB,SAAS,GAAE,eAAyC,GACnD,WAAW,CAiBb;AAED,4EAA4E;AAC5E,wBAAgB,UAAU,CACxB,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,EACxB,YAAY,EAAE,UAAU,CAAC,cAAc,CAAC,GACvC,UAAU,CAKZ"}
@@ -2,7 +2,14 @@ import { PROTOCOL_VERSION, } from "@toolgrain/protocol";
2
2
  import { attachAuth } from "../auth/context.js";
3
3
  import { createContextRegistry, } from "../context/registry.js";
4
4
  import { createContextScope } from "../context/scope.js";
5
- /** Build a context for calling a definition's `execute` directly, for example in tests. */
5
+ /**
6
+ * Build an unauthenticated context for direct `execute()` calls, for example in tests.
7
+ * Request metadata is copied and deeply frozen; each call creates a fresh provider cache.
8
+ * Direct execution still bypasses server authorization, validation, and MCP conversion.
9
+ *
10
+ * @param options - Optional signal, request metadata, and provider registrations.
11
+ * @returns A context accepted by Toolgrain's provider accessors.
12
+ */
6
13
  export function toolContext(options = {}) {
7
14
  // Default each field separately so an explicit undefined cannot replace a default.
8
15
  const { id = 0, protocolVersion = PROTOCOL_VERSION, client, meta = {}, } = options.request ?? {};
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/tools/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,gBAAgB,GAGjB,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,OAAO,EAEL,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAgCzD,2FAA2F;AAC3F,MAAM,UAAU,WAAW,CAAC,OAAO,GAAuB,EAAE;IAC1D,mFAAmF;IACnF,MAAM,EACJ,EAAE,GAAG,CAAC,EACN,eAAe,GAAG,gBAAgB,EAClC,MAAM,EACN,IAAI,GAAG,EAAE,GACV,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IAC1B,OAAO,iBAAiB,CACtB,OAAO,CAAC,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC,MAAM,EAC9C;QACE,EAAE;QACF,eAAe;QACf,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3C,IAAI;KACL,EACD,SAAS,EACT,qBAAqB,CAAC,OAAO,CAAC,OAAO,CAAC,CACvC,CAAC;AACJ,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,iBAAiB,CAC/B,MAAmB,EACnB,EAAE,MAAM,EAAE,GAAG,OAAO,EAAe,EACnC,IAAmB,EACnB,SAAS,GAAoB,qBAAqB,EAAE;IAEpD,MAAM,GAAG,GAAG,UAAU,CACpB;QACE,MAAM;QACN,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;YACrB,GAAG,OAAO;YACV,GAAG,CAAC,MAAM,KAAK,SAAS;gBACtB,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC;oBACE,MAAM,EAAE,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;iBACjE,CAAC;YACN,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC;SAC/B,CAAC;KACH,EACD,IAAI,CACL,CAAC;IACF,OAAO,kBAAkB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AAC5C,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,UAAU,CACxB,IAAwB,EACxB,YAAwC;IAExC,OAAO;QACL,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QACvC,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;KACxD,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAI,KAAQ;IAC7B,OAAO,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,UAAU,CAAI,KAAQ;IAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;YAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/tools/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,gBAAgB,GAGjB,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,OAAO,EAEL,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AA2CzD;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,OAAO,GAAuB,EAAE;IAC1D,mFAAmF;IACnF,MAAM,EACJ,EAAE,GAAG,CAAC,EACN,eAAe,GAAG,gBAAgB,EAClC,MAAM,EACN,IAAI,GAAG,EAAE,GACV,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IAC1B,OAAO,iBAAiB,CACtB,OAAO,CAAC,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC,MAAM,EAC9C;QACE,EAAE;QACF,eAAe;QACf,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3C,IAAI;KACL,EACD,SAAS,EACT,qBAAqB,CAAC,OAAO,CAAC,OAAO,CAAC,CACvC,CAAC;AACJ,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,iBAAiB,CAC/B,MAAmB,EACnB,EAAE,MAAM,EAAE,GAAG,OAAO,EAAe,EACnC,IAAmB,EACnB,SAAS,GAAoB,qBAAqB,EAAE;IAEpD,MAAM,GAAG,GAAG,UAAU,CACpB;QACE,MAAM;QACN,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;YACrB,GAAG,OAAO;YACV,GAAG,CAAC,MAAM,KAAK,SAAS;gBACtB,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC;oBACE,MAAM,EAAE,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;iBACjE,CAAC;YACN,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC;SAC/B,CAAC;KACH,EACD,IAAI,CACL,CAAC;IACF,OAAO,kBAAkB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AAC5C,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,UAAU,CACxB,IAAwB,EACxB,YAAwC;IAExC,OAAO;QACL,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QACvC,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;KACxD,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAI,KAAQ;IAC7B,OAAO,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,UAAU,CAAI,KAAQ;IAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;YAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -4,9 +4,23 @@ import type { ToolContext } from "./context.js";
4
4
  import type { DeepReadonly, IsJsonCompatible, JsonCompatible } from "./json-value.js";
5
5
  import type { McpErrorResult, McpResult, McpStructuredResult } from "./rich-result.js";
6
6
  export declare const TOOL_METADATA_KEYS: readonly ["title", "description", "annotations", "icons", "_meta"];
7
+ /**
8
+ * Optional client-facing tool title, description, behavior hints, icons, and `_meta`.
9
+ * Accepts readonly authoring data; registration checks JSON compatibility and copies
10
+ * metadata for wire descriptions. Hints describe behavior rather than enforce policy.
11
+ */
7
12
  export type ToolMetadata = DeepReadonly<Pick<ProtocolTool, (typeof TOOL_METADATA_KEYS)[number]>>;
13
+ /**
14
+ * Authoring contract for `tool()`; handler input uses the parsed Zod output type.
15
+ *
16
+ * @typeParam Schema - Zod 4 Classic or Mini input schema with an exposable object root.
17
+ * @typeParam Result - Raw handler return value, including a promise-like value.
18
+ * @typeParam Output - Optional Zod output schema; the handler returns its input type.
19
+ */
8
20
  export interface ToolDefinition<Schema extends core.$ZodType, Result, Output extends core.$ZodType = never> extends ToolMetadata {
21
+ /** Input schema, parsed asynchronously by the server before the handler runs. */
9
22
  readonly input: Schema;
23
+ /** Optional output schema, parsed asynchronously before successful result conversion. */
10
24
  readonly output?: Output;
11
25
  /** Raw handler; server invocation performs validation and result conversion. */
12
26
  readonly execute: (input: core.output<Schema>, ctx: ToolContext) => Result;
@@ -29,27 +43,62 @@ export declare abstract class RegisteredTool {
29
43
  }
30
44
  /** Recognize definitions created by any compatible copy of this package. */
31
45
  export declare function isRegisteredTool(value: unknown): value is RegisteredTool;
46
+ /**
47
+ * Frozen, reusable tool definition returned by `tool()`. Register the same definition
48
+ * under different keys or create typed variants by passing a spread through `tool()` again.
49
+ * Direct `execute()` calls remain raw application calls.
50
+ *
51
+ * @typeParam Schema - Input schema whose parsed output is passed to the handler.
52
+ * @typeParam Result - Raw handler return type, before server output parsing and conversion.
53
+ * @typeParam Output - Output schema when declared by the definition.
54
+ */
32
55
  export declare class Tool<Schema extends core.$ZodType, Result, Output extends core.$ZodType = core.$ZodType> extends RegisteredTool {
56
+ /** Zod input schema used by server validation; defaults and transforms run asynchronously. */
33
57
  readonly input: Schema;
58
+ /** Optional Zod output schema used by server result validation. */
34
59
  readonly output?: Output;
60
+ /** Raw handler; direct calls bypass authorization, input/output parsing, and MCP conversion. */
35
61
  readonly execute: (input: core.output<Schema>, ctx: ToolContext) => Result;
62
+ /** Optional human-readable title advertised to clients. */
36
63
  readonly title?: string;
64
+ /** Optional description explaining the tool's purpose and behavior to clients. */
37
65
  readonly description?: string;
66
+ /** Client-facing behavior hints; Toolgrain does not enforce their assertions. */
38
67
  readonly annotations?: NonNullable<ToolMetadata["annotations"]>;
68
+ /** Optional client-facing icon descriptors, with readonly authoring inputs. */
39
69
  readonly icons?: NonNullable<ToolMetadata["icons"]>;
70
+ /** Optional JSON-compatible protocol metadata advertised with the tool. */
40
71
  readonly _meta?: NonNullable<ToolMetadata["_meta"]>;
41
72
  constructor(definition: ToolDefinition<Schema, Result, core.$ZodType>);
42
73
  }
43
74
  type OutputResult<Output extends core.$ZodType> = core.input<Output> | McpStructuredResult<core.input<Output>> | McpErrorResult<core.input<Output>>;
44
75
  type JsonSafeOutput<Result> = Result extends PromiseLike<infer Resolved> ? PromiseLike<JsonSafeOutput<Resolved>> : Result extends McpResult<infer Structured> ? IsJsonCompatible<Structured> extends true ? Result : never : JsonCompatible<Result>;
45
76
  type ToolDefinitionWithoutOutput<Schema extends core.$ZodType, Result> = Omit<ToolDefinition<Schema, Result>, "execute"> & {
77
+ /** Raw handler accepting parsed input; server invocation validates its JSON-compatible result. */
46
78
  readonly execute: (input: core.output<Schema>, ctx: ToolContext) => Result & JsonSafeOutput<Result>;
47
79
  };
80
+ /**
81
+ * Define a frozen tool with asynchronously validated input and declared output.
82
+ * Successful rich results must include `structuredContent`; explicit text-only errors may omit it.
83
+ *
84
+ * @param definition - Zod schemas, a handler returning the output schema's input type, and metadata.
85
+ * @returns A reusable tool retaining input, output, and handler inference.
86
+ * Its `execute` property stays raw; server invocation performs validation and conversion.
87
+ */
48
88
  export declare function tool<Schema extends core.$ZodType, Output extends core.$ZodType, Result extends OutputResult<NoInfer<Output>> | PromiseLike<OutputResult<NoInfer<Output>>>>(definition: ToolDefinition<Schema, Result, Output> & {
89
+ /** Required output schema for this overload; parses handler data before MCP conversion. */
49
90
  readonly output: Output;
50
91
  }): Tool<Schema, Result, Output> & {
92
+ /** Declared output schema, retained as required on the inferred tool type. */
51
93
  readonly output: Output;
52
94
  };
95
+ /**
96
+ * Define a frozen tool without an output schema, preserving the handler's inferred return type.
97
+ * Ordinary strings and JSON values become MCP results; use `mcpResult()` for rich content.
98
+ *
99
+ * @param definition - Zod input schema, a JSON-compatible or explicit-result handler, and metadata.
100
+ * @returns A reusable tool whose direct `execute()` calls bypass server validation and conversion.
101
+ */
53
102
  export declare function tool<Schema extends core.$ZodType, Result>(definition: ToolDefinitionWithoutOutput<Schema, Result>): Tool<Schema, Result, never>;
54
103
  export {};
55
104
  //# sourceMappingURL=definition.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/tools/definition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,IAAI,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,KAAK,IAAI,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACT,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAE1B,eAAO,MAAM,kBAAkB,YAC7B,OAAO,EACP,aAAa,EACb,aAAa,EACb,OAAO,EACP,OAAO,CACC,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,YAAY,CACrC,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,CACxD,CAAC;AAEF,MAAM,WAAW,cAAc,CAC7B,MAAM,SAAS,IAAI,CAAC,QAAQ,EAC5B,MAAM,EACN,MAAM,SAAS,IAAI,CAAC,QAAQ,GAAG,KAAK,CACpC,SAAQ,YAAY;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,gFAAgF;IAChF,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,WAAW,KAAK,MAAM,CAAC;CAC5E;AAKD,4EAA4E;AAC5E,8BAAsB,cAAc;IAClC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;IACzC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC;IACvE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC;IACzE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7D,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IAE7D;;;OAGG;IACH,YAAY,IAAI,QAAQ,CAEvB;CACF;AAGD,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAMxE;AAED,qBAAa,IAAI,CACf,MAAM,SAAS,IAAI,CAAC,QAAQ,EAC5B,MAAM,EACN,MAAM,SAAS,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAC5C,SAAQ,cAAc;IACtB,SAAiB,KAAK,EAAE,MAAM,CAAC;IAC/B,SAAiB,MAAM,CAAC,EAAE,MAAM,CAAC;IACjC,SAAiB,OAAO,EAAE,CACxB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAC1B,GAAG,EAAE,WAAW,KACb,MAAM,CAAC;IACZ,SAAiB,KAAK,CAAC,EAAE,MAAM,CAAC;IAChC,SAAiB,WAAW,CAAC,EAAE,MAAM,CAAC;IACtC,SAAiB,WAAW,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC;IACxE,SAAiB,KAAK,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5D,SAAiB,KAAK,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IAE5D,YAAY,UAAU,EAAE,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,EAUpE;CACF;AAED,KAAK,YAAY,CAAC,MAAM,SAAS,IAAI,CAAC,QAAQ,IAC1C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAClB,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GACvC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAEvC,KAAK,cAAc,CAAC,MAAM,IACxB,MAAM,SAAS,WAAW,CAAC,MAAM,QAAQ,CAAC,GACtC,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,GACrC,MAAM,SAAS,SAAS,CAAC,MAAM,UAAU,CAAC,GACxC,gBAAgB,CAAC,UAAU,CAAC,SAAS,IAAI,GACvC,MAAM,GACN,KAAK,GACP,cAAc,CAAC,MAAM,CAAC,CAAC;AAE/B,KAAK,2BAA2B,CAAC,MAAM,SAAS,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,IAAI,CAC3E,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,SAAS,CACV,GAAG;IACF,QAAQ,CAAC,OAAO,EAAE,CAChB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAC1B,GAAG,EAAE,WAAW,KACb,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;CACtC,CAAC;AAEF,wBAAgB,IAAI,CAClB,MAAM,SAAS,IAAI,CAAC,QAAQ,EAC5B,MAAM,SAAS,IAAI,CAAC,QAAQ,EAC5B,MAAM,SACF,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAC7B,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAE9C,UAAU,EAAE,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG;IACnD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,GACA,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAC9D,wBAAgB,IAAI,CAAC,MAAM,SAAS,IAAI,CAAC,QAAQ,EAAE,MAAM,EACvD,UAAU,EAAE,2BAA2B,CAAC,MAAM,EAAE,MAAM,CAAC,GACtD,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/tools/definition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,IAAI,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,KAAK,IAAI,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACT,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAE1B,eAAO,MAAM,kBAAkB,YAC7B,OAAO,EACP,aAAa,EACb,aAAa,EACb,OAAO,EACP,OAAO,CACC,CAAC;AAEX;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,YAAY,CACrC,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,CACxD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,WAAW,cAAc,CAC7B,MAAM,SAAS,IAAI,CAAC,QAAQ,EAC5B,MAAM,EACN,MAAM,SAAS,IAAI,CAAC,QAAQ,GAAG,KAAK,CACpC,SAAQ,YAAY;IACpB,iFAAiF;IACjF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,yFAAyF;IACzF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,gFAAgF;IAChF,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,WAAW,KAAK,MAAM,CAAC;CAC5E;AAKD,4EAA4E;AAC5E,8BAAsB,cAAc;IAClC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;IACzC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC;IACvE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC;IACzE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7D,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IAE7D;;;OAGG;IACH,YAAY,IAAI,QAAQ,CAEvB;CACF;AAGD,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAMxE;AAED;;;;;;;;GAQG;AACH,qBAAa,IAAI,CACf,MAAM,SAAS,IAAI,CAAC,QAAQ,EAC5B,MAAM,EACN,MAAM,SAAS,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAC5C,SAAQ,cAAc;IACtB,8FAA8F;IAC9F,SAAiB,KAAK,EAAE,MAAM,CAAC;IAC/B,mEAAmE;IACnE,SAAiB,MAAM,CAAC,EAAE,MAAM,CAAC;IACjC,gGAAgG;IAChG,SAAiB,OAAO,EAAE,CACxB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAC1B,GAAG,EAAE,WAAW,KACb,MAAM,CAAC;IACZ,2DAA2D;IAC3D,SAAiB,KAAK,CAAC,EAAE,MAAM,CAAC;IAChC,kFAAkF;IAClF,SAAiB,WAAW,CAAC,EAAE,MAAM,CAAC;IACtC,iFAAiF;IACjF,SAAiB,WAAW,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC;IACxE,+EAA+E;IAC/E,SAAiB,KAAK,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5D,2EAA2E;IAC3E,SAAiB,KAAK,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IAE5D,YAAY,UAAU,EAAE,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,EAUpE;CACF;AAED,KAAK,YAAY,CAAC,MAAM,SAAS,IAAI,CAAC,QAAQ,IAC1C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAClB,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GACvC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAEvC,KAAK,cAAc,CAAC,MAAM,IACxB,MAAM,SAAS,WAAW,CAAC,MAAM,QAAQ,CAAC,GACtC,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,GACrC,MAAM,SAAS,SAAS,CAAC,MAAM,UAAU,CAAC,GACxC,gBAAgB,CAAC,UAAU,CAAC,SAAS,IAAI,GACvC,MAAM,GACN,KAAK,GACP,cAAc,CAAC,MAAM,CAAC,CAAC;AAE/B,KAAK,2BAA2B,CAAC,MAAM,SAAS,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,IAAI,CAC3E,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,SAAS,CACV,GAAG;IACF,kGAAkG;IAClG,QAAQ,CAAC,OAAO,EAAE,CAChB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAC1B,GAAG,EAAE,WAAW,KACb,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;CACtC,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAClB,MAAM,SAAS,IAAI,CAAC,QAAQ,EAC5B,MAAM,SAAS,IAAI,CAAC,QAAQ,EAC5B,MAAM,SACF,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAC7B,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAE9C,UAAU,EAAE,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG;IACnD,2FAA2F;IAC3F,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,GACA,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG;IAChC,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AACF;;;;;;GAMG;AACH,wBAAgB,IAAI,CAAC,MAAM,SAAS,IAAI,CAAC,QAAQ,EAAE,MAAM,EACvD,UAAU,EAAE,2BAA2B,CAAC,MAAM,EAAE,MAAM,CAAC,GACtD,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC"}
@@ -24,6 +24,15 @@ export function isRegisteredTool(value) {
24
24
  value !== null &&
25
25
  value[TOOL_BRAND] === true);
26
26
  }
27
+ /**
28
+ * Frozen, reusable tool definition returned by `tool()`. Register the same definition
29
+ * under different keys or create typed variants by passing a spread through `tool()` again.
30
+ * Direct `execute()` calls remain raw application calls.
31
+ *
32
+ * @typeParam Schema - Input schema whose parsed output is passed to the handler.
33
+ * @typeParam Result - Raw handler return type, before server output parsing and conversion.
34
+ * @typeParam Output - Output schema when declared by the definition.
35
+ */
27
36
  export class Tool extends RegisteredTool {
28
37
  constructor(definition) {
29
38
  super();
@@ -1 +1 @@
1
- {"version":3,"file":"definition.js","sourceRoot":"","sources":["../../src/tools/definition.ts"],"names":[],"mappings":"AAcA,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,OAAO;IACP,aAAa;IACb,aAAa;IACb,OAAO;IACP,OAAO;CACC,CAAC;AAiBX,gFAAgF;AAChF,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AAEvD,4EAA4E;AAC5E,MAAM,OAAgB,cAAc;IAUlC;;;OAGG;IACH,YAAY;QACV,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AACD,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAE7E,4EAA4E;AAC5E,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACb,KAAoC,CAAC,UAAU,CAAC,KAAK,IAAI,CAC3D,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,IAIX,SAAQ,cAAc;IAatB,YAAY,UAAyD;QACnE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QAClC,KAAK,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,kBAAkB,CAAU,EAAE,CAAC;YAC7D,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,KAAK,KAAK,SAAS;gBACrB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;CACF;AAwCD,gFAAgF;AAChF,MAAM,UAAU,IAAI,CAClB,UAAyD;IAEzD,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"definition.js","sourceRoot":"","sources":["../../src/tools/definition.ts"],"names":[],"mappings":"AAcA,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,OAAO;IACP,aAAa;IACb,aAAa;IACb,OAAO;IACP,OAAO;CACC,CAAC;AA+BX,gFAAgF;AAChF,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AAEvD,4EAA4E;AAC5E,MAAM,OAAgB,cAAc;IAUlC;;;OAGG;IACH,YAAY;QACV,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AACD,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAE7E,4EAA4E;AAC5E,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACb,KAAoC,CAAC,UAAU,CAAC,KAAK,IAAI,CAC3D,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,OAAO,IAIX,SAAQ,cAAc;IAqBtB,YAAY,UAAyD;QACnE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QAClC,KAAK,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,kBAAkB,CAAU,EAAE,CAAC;YAC7D,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,KAAK,KAAK,SAAS;gBACrB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;CACF;AA4DD,gFAAgF;AAChF,MAAM,UAAU,IAAI,CAClB,UAAyD;IAEzD,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;AAC9B,CAAC"}
@@ -1,6 +1,11 @@
1
+ /** Registration error for a name outside 1–128 ASCII letters, digits, underscores, hyphens, or dots. */
1
2
  export declare class ToolNameError extends Error {
3
+ /** Invalid exposed registration name. */
2
4
  readonly toolName: string;
3
- constructor(toolName: string);
5
+ /** @param toolName - Invalid registration key that could not be exposed as an MCP tool name. */
6
+ constructor(
7
+ /** Invalid exposed registration name. */
8
+ toolName: string);
4
9
  }
5
10
  export declare function validateToolName(name: string): void;
6
11
  //# sourceMappingURL=name.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"name.d.ts","sourceRoot":"","sources":["../../src/tools/name.ts"],"names":[],"mappings":"AAAA,qBAAa,aAAc,SAAQ,KAAK;aACV,QAAQ,EAAE,MAAM;IAA5C,YAA4B,QAAQ,EAAE,MAAM,EAK3C;CACF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAGnD"}
1
+ {"version":3,"file":"name.d.ts","sourceRoot":"","sources":["../../src/tools/name.ts"],"names":[],"mappings":"AAAA,wGAAwG;AACxG,qBAAa,aAAc,SAAQ,KAAK;IAGpC,yCAAyC;aACzB,QAAQ,EAAE,MAAM;IAHlC,gGAAgG;IAChG;IACE,yCAAyC;IACzB,QAAQ,EAAE,MAAM,EAMjC;CACF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAGnD"}
@@ -1,6 +1,10 @@
1
+ /** Registration error for a name outside 1–128 ASCII letters, digits, underscores, hyphens, or dots. */
1
2
  export class ToolNameError extends Error {
2
3
  toolName;
3
- constructor(toolName) {
4
+ /** @param toolName - Invalid registration key that could not be exposed as an MCP tool name. */
5
+ constructor(
6
+ /** Invalid exposed registration name. */
7
+ toolName) {
4
8
  super(`Invalid MCP tool name: ${JSON.stringify(toolName)}. Use 1–128 ASCII letters, digits, underscores, hyphens, or dots.`);
5
9
  this.toolName = toolName;
6
10
  this.name = "ToolNameError";
@@ -1 +1 @@
1
- {"version":3,"file":"name.js","sourceRoot":"","sources":["../../src/tools/name.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,aAAc,SAAQ,KAAK;IACV,QAAQ;IAApC,YAA4B,QAAgB;QAC1C,KAAK,CACH,0BAA0B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,mEAAmE,CACtH,CAAC;wBAHwB,QAAQ;QAIlC,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;QACtE,MAAM,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"name.js","sourceRoot":"","sources":["../../src/tools/name.ts"],"names":[],"mappings":"AAAA,wGAAwG;AACxG,MAAM,OAAO,aAAc,SAAQ,KAAK;IAIpB,QAAQ;IAH1B,gGAAgG;IAChG;IACE,yCAAyC;IACzB,QAAgB;QAEhC,KAAK,CACH,0BAA0B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,mEAAmE,CACtH,CAAC;wBAJc,QAAQ;QAKxB,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;QACtE,MAAM,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC"}
@@ -1,5 +1,9 @@
1
1
  import type { ToolContext } from "./context.js";
2
2
  import { type RegisteredTool, type ToolMetadata } from "./definition.js";
3
+ /**
4
+ * Tools indexed by exposed MCP names. Values must be frozen definitions made with `tool()`;
5
+ * names come from these keys, not from a definition's variable name or title.
6
+ */
3
7
  export type ToolMap = Record<string, RegisteredTool>;
4
8
  export interface ToolEntry extends ToolMetadata {
5
9
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AAGzB,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAErD,MAAM,WAAW,SAAU,SAAQ,YAAY;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,IAAI,SAAS,EAAE,CAAC;IACpB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3E;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CA6BvD"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AAGzB;;;GAGG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAErD,MAAM,WAAW,SAAU,SAAQ,YAAY;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,IAAI,SAAS,EAAE,CAAC;IACpB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3E;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CA6BvD"}
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AAEpC,OAAO,EACL,gBAAgB,GAGjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAe/D,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,MAAM,OAAO,GAAG,IAAI,GAAG,CACrB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE;QAC/C,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;YAC/B,MAAM,IAAI,SAAS,CACjB,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,8BAA8B,CAC3D,CAAC;QACJ,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,UAAU,EAAE,CAAC,CAAU,CAAC;IAC3D,CAAC,CAAC,CACH,CAAC;IAEF,OAAO;QACL,IAAI;YACF,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE;gBAChD,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,GAAG,UAAU,CAAC;gBACtD,OAAO,EAAE,IAAI,EAAE,GAAG,QAAQ,EAAE,CAAC;YAC/B,CAAC,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG;YAC5B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,CAAC,UAAU;gBAAE,MAAM,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAClE,IAAI,CAAC,MAAM,CAAC,OAAO;gBAAE,MAAM,IAAI,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAClE,kEAAkE;YAClE,GAAG,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAC5B,4EAA4E;YAC5E,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,IAAa,EAAE,GAAG,CAAC,CAAC;QACvD,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AAEpC,OAAO,EACL,gBAAgB,GAGjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAmB/D,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,MAAM,OAAO,GAAG,IAAI,GAAG,CACrB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE;QAC/C,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;YAC/B,MAAM,IAAI,SAAS,CACjB,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,8BAA8B,CAC3D,CAAC;QACJ,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,UAAU,EAAE,CAAC,CAAU,CAAC;IAC3D,CAAC,CAAC,CACH,CAAC;IAEF,OAAO;QACL,IAAI;YACF,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE;gBAChD,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,GAAG,UAAU,CAAC;gBACtD,OAAO,EAAE,IAAI,EAAE,GAAG,QAAQ,EAAE,CAAC;YAC/B,CAAC,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG;YAC5B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,CAAC,UAAU;gBAAE,MAAM,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAClE,IAAI,CAAC,MAAM,CAAC,OAAO;gBAAE,MAAM,IAAI,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAClE,kEAAkE;YAClE,GAAG,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAC5B,4EAA4E;YAC5E,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,IAAa,EAAE,GAAG,CAAC,CAAC;QACvD,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,44 +1,98 @@
1
1
  import type { ContentBlock, MetaObject } from "@toolgrain/protocol";
2
2
  import type { DeepReadonly, JsonCompatible } from "./json-value.js";
3
+ /** Explicit MCP content and optional structured data, wrapped with `mcpResult()`. */
3
4
  export interface McpResultOptions<Structured = unknown> {
5
+ /** Content blocks for the client; readonly authoring arrays are accepted. */
4
6
  content: readonly DeepReadonly<ContentBlock>[];
7
+ /** JSON-compatible data; required for successful rich results with a declared output schema. */
5
8
  structuredContent?: Structured & JsonCompatible<NoInfer<Structured>>;
9
+ /** Marks an expected, client-visible tool failure; omitted or false indicates success. */
6
10
  isError?: boolean;
11
+ /** Optional protocol result metadata, distinct from application structured data. */
7
12
  _meta?: MetaObject;
8
13
  }
14
+ /**
15
+ * Branded rich-result wrapper recognized by compatible Toolgrain package copies.
16
+ * Use `mcpResult()` to construct one; a plain object with the same fields remains application data.
17
+ */
9
18
  export declare class McpResult<Structured> {
19
+ /** Explicit MCP result envelope, before server validation and revision-specific conversion. */
10
20
  readonly value: McpResultOptions<Structured>;
11
- constructor(value: McpResultOptions<Structured>);
21
+ constructor(
22
+ /** Explicit MCP result envelope, before server validation and revision-specific conversion. */
23
+ value: McpResultOptions<Structured>);
12
24
  /** Structural brand shared by package copies; object spreads do not keep it. */
13
25
  "~toolgrain"(): "result@1";
14
26
  }
15
27
  /** Recognize results created by any compatible copy of this package. */
16
28
  export declare function isMcpResult(value: unknown): value is McpResult<unknown>;
29
+ /** Explicit, client-visible tool error; structured data may be omitted for text-only errors. */
17
30
  export type McpErrorResult<Structured = never> = McpResult<Structured> & {
31
+ /** Envelope statically marked as an error. */
18
32
  readonly value: McpResultOptions<Structured> & {
33
+ /** Explicit expected-failure marker, preserved in the MCP result. */
19
34
  isError: true;
20
35
  };
21
36
  };
22
37
  /** A result whose structured data is present, as required by an output schema. */
23
38
  export type McpStructuredResult<Structured> = McpResult<Structured> & {
39
+ /** Envelope with required application structured data. */
24
40
  readonly value: McpResultOptions<Structured> & {
41
+ /** Structured value validated against the tool's output schema when one is declared. */
25
42
  structuredContent: Structured;
26
43
  };
27
44
  };
28
- /** Explicitly return MCP content. Ordinary objects always remain application data. */
45
+ /**
46
+ * Explicitly return rich MCP content; ordinary result-shaped objects remain application data.
47
+ * This overload wraps a public tool error that also supplies structured data.
48
+ * @param value - Error content and JSON-compatible data, parsed by any declared output schema.
49
+ * @returns A branded result typed as both an error and a structured result.
50
+ */
29
51
  export declare function mcpResult<Structured = never>(value: McpResultOptions<Structured> & {
52
+ /** Mark this result as an expected, client-visible tool failure. */
30
53
  isError: true;
54
+ /** Structured error data, subject to output-schema validation when declared. */
31
55
  structuredContent: Structured;
32
56
  }): McpErrorResult<Structured> & McpStructuredResult<Structured>;
57
+ /**
58
+ * Wrap a text/content-only public tool error, allowed even when the tool declares output.
59
+ * @param value - Explicit error content without structured application data.
60
+ * @returns A branded error result whose `isError` flag is statically true.
61
+ */
33
62
  export declare function mcpResult(value: McpResultOptions<never> & {
63
+ /** Mark this result as an expected, client-visible tool failure. */
34
64
  isError: true;
35
65
  }): McpErrorResult<never>;
66
+ /**
67
+ * Wrap a public tool error with an optional structured-data contract.
68
+ * @param value - Error content and any JSON-compatible structured data.
69
+ * @returns A branded error result; provided structured data still undergoes output validation.
70
+ */
36
71
  export declare function mcpResult<Structured>(value: McpResultOptions<Structured> & {
72
+ /** Mark this result as an expected, client-visible tool failure. */
37
73
  isError: true;
38
74
  }): McpErrorResult<Structured>;
75
+ /**
76
+ * Wrap rich content with required structured application data.
77
+ * @param value - Client content and JSON-compatible data; a successful output-schema result needs both.
78
+ * @returns A branded structured result; the server validates and converts it for the selected revision.
79
+ */
39
80
  export declare function mcpResult<Structured>(value: McpResultOptions<Structured> & {
81
+ /** Required application data, parsed by the declared output schema when present. */
40
82
  structuredContent: Structured;
41
83
  }): McpStructuredResult<Structured>;
84
+ /**
85
+ * Wrap explicit client content without structured application data.
86
+ * @param value - Rich content; successful results of this form require a tool without an output schema.
87
+ * @returns A branded MCP result. Ordinary result-shaped objects are not treated as rich results.
88
+ */
42
89
  export declare function mcpResult(value: McpResultOptions<never>): McpResult<never>;
90
+ /**
91
+ * Explicitly return MCP content instead of ordinary application JSON.
92
+ * The server validates the envelope, parses supplied output data, and converts it for the protocol revision.
93
+ *
94
+ * @param value - Content blocks, optional structured data, an error marker, and protocol metadata.
95
+ * @returns A frozen result wrapper; content is checked during server invocation.
96
+ */
43
97
  export declare function mcpResult<Structured = never>(value: McpResultOptions<Structured>): McpResult<Structured>;
44
98
  //# sourceMappingURL=rich-result.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rich-result.d.ts","sourceRoot":"","sources":["../../src/tools/rich-result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEpE,MAAM,WAAW,gBAAgB,CAAC,UAAU,GAAG,OAAO;IACpD,OAAO,EAAE,SAAS,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC;IAC/C,iBAAiB,CAAC,EAAE,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IACrE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAKD,qBAAa,SAAS,CAAC,UAAU;IACnB,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC,UAAU,CAAC;IAAxD,YAAqB,KAAK,EAAE,gBAAgB,CAAC,UAAU,CAAC,EAEvD;IAED,gFAAgF;IAChF,YAAY,IAAI,UAAU,CAEzB;CACF;AAGD,wEAAwE;AACxE,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAAC,OAAO,CAAC,CAMvE;AAED,MAAM,MAAM,cAAc,CAAC,UAAU,GAAG,KAAK,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG;IACvE,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC,UAAU,CAAC,GAAG;QAAE,OAAO,EAAE,IAAI,CAAA;KAAE,CAAC;CAClE,CAAC;AAEF,kFAAkF;AAClF,MAAM,MAAM,mBAAmB,CAAC,UAAU,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG;IACpE,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC,UAAU,CAAC,GAAG;QAC7C,iBAAiB,EAAE,UAAU,CAAC;KAC/B,CAAC;CACH,CAAC;AAEF,sFAAsF;AACtF,wBAAgB,SAAS,CAAC,UAAU,GAAG,KAAK,EAC1C,KAAK,EAAE,gBAAgB,CAAC,UAAU,CAAC,GAAG;IACpC,OAAO,EAAE,IAAI,CAAC;IACd,iBAAiB,EAAE,UAAU,CAAC;CAC/B,GACA,cAAc,CAAC,UAAU,CAAC,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;AAChE,wBAAgB,SAAS,CACvB,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAAG;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,GACjD,cAAc,CAAC,KAAK,CAAC,CAAC;AACzB,wBAAgB,SAAS,CAAC,UAAU,EAClC,KAAK,EAAE,gBAAgB,CAAC,UAAU,CAAC,GAAG;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,GACtD,cAAc,CAAC,UAAU,CAAC,CAAC;AAC9B,wBAAgB,SAAS,CAAC,UAAU,EAClC,KAAK,EAAE,gBAAgB,CAAC,UAAU,CAAC,GAAG;IAAE,iBAAiB,EAAE,UAAU,CAAA;CAAE,GACtE,mBAAmB,CAAC,UAAU,CAAC,CAAC;AACnC,wBAAgB,SAAS,CAAC,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;AAC5E,wBAAgB,SAAS,CAAC,UAAU,GAAG,KAAK,EAC1C,KAAK,EAAE,gBAAgB,CAAC,UAAU,CAAC,GAClC,SAAS,CAAC,UAAU,CAAC,CAAC"}
1
+ {"version":3,"file":"rich-result.d.ts","sourceRoot":"","sources":["../../src/tools/rich-result.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,14 @@
1
1
  // Registered symbols let duplicate package copies recognize each other's results.
2
2
  const RESULT_BRAND = Symbol.for("@toolgrain/mcp/result@1");
3
+ /**
4
+ * Branded rich-result wrapper recognized by compatible Toolgrain package copies.
5
+ * Use `mcpResult()` to construct one; a plain object with the same fields remains application data.
6
+ */
3
7
  export class McpResult {
4
8
  value;
5
- constructor(value) {
9
+ constructor(
10
+ /** Explicit MCP result envelope, before server validation and revision-specific conversion. */
11
+ value) {
6
12
  this.value = value;
7
13
  Object.freeze(this);
8
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"rich-result.js","sourceRoot":"","sources":["../../src/tools/rich-result.ts"],"names":[],"mappings":"AAUA,kFAAkF;AAClF,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AAE3D,MAAM,OAAO,SAAS;IACC,KAAK;IAA1B,YAAqB,KAAmC;qBAAnC,KAAK;QACxB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,gFAAgF;IAChF,YAAY;QACV,OAAO,UAAU,CAAC;IACpB,CAAC;CACF;AACD,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAE1E,wEAAwE;AACxE,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACb,KAAsC,CAAC,YAAY,CAAC,KAAK,IAAI,CAC/D,CAAC;AACJ,CAAC;AAiCD,MAAM,UAAU,SAAS,CACvB,KAAmC;IAEnC,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"rich-result.js","sourceRoot":"","sources":["../../src/tools/rich-result.ts"],"names":[],"mappings":"AAeA,kFAAkF;AAClF,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AAE3D;;;GAGG;AACH,MAAM,OAAO,SAAS;IAGT,KAAK;IAFhB;IACE,+FAA+F;IACtF,KAAmC;qBAAnC,KAAK;QAEd,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,gFAAgF;IAChF,YAAY;QACV,OAAO,UAAU,CAAC;IACpB,CAAC;CACF;AACD,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAE1E,wEAAwE;AACxE,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACb,KAAsC,CAAC,YAAY,CAAC,KAAK,IAAI,CAC/D,CAAC;AACJ,CAAC;AAmFD,MAAM,UAAU,SAAS,CACvB,KAAmC;IAEnC,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC"}
@@ -9,10 +9,22 @@ export declare const toolAnnotations: z.ZodObject<{
9
9
  idempotentHint: z.ZodOptional<z.ZodBoolean>;
10
10
  openWorldHint: z.ZodOptional<z.ZodBoolean>;
11
11
  }, core.$loose>;
12
+ /** Registration error wrapping a schema-conversion or metadata-validation failure. */
12
13
  export declare class ToolSchemaError extends Error {
14
+ /** Exposed registration name whose schema or metadata failed. */
13
15
  readonly toolName: string;
16
+ /** Whether input conversion, output conversion, or metadata validation failed. */
14
17
  readonly schemaKind: "input" | "output" | "metadata";
15
- constructor(toolName: string, cause: unknown, schemaKind?: "input" | "output" | "metadata");
18
+ /**
19
+ * @param toolName - Exposed registration name whose description could not be built.
20
+ * @param cause - Original schema or metadata failure, retained as the error's cause.
21
+ * @param schemaKind - Failing part of the description; defaults to `input`.
22
+ */
23
+ constructor(
24
+ /** Exposed registration name whose schema or metadata failed. */
25
+ toolName: string, cause: unknown,
26
+ /** Whether input conversion, output conversion, or metadata validation failed. */
27
+ schemaKind?: "input" | "output" | "metadata");
16
28
  }
17
29
  export declare function describeTool(name: string, definition: Pick<ToolMap[string], "input" | "output" | "title" | "description" | "icons" | "annotations" | "_meta">): ProtocolTool;
18
30
  //# sourceMappingURL=schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/tools/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,IAAI,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AAMpC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,eAAO,MAAM,eAAe;;;;;;eAM1B,CAAC;AAUH,qBAAa,eAAgB,SAAQ,KAAK;aAEtB,QAAQ,EAAE,MAAM;aAEhB,UAAU,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU;IAH7D,YACkB,QAAQ,EAAE,MAAM,EAChC,KAAK,EAAE,OAAO,EACE,UAAU,GAAE,OAAO,GAAG,QAAQ,GAAG,UAAoB,EAMtE;CACF;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,IAAI,CACd,OAAO,CAAC,MAAM,CAAC,EACb,OAAO,GACP,QAAQ,GACR,OAAO,GACP,aAAa,GACb,OAAO,GACP,aAAa,GACb,OAAO,CACV,GACA,YAAY,CAkCd"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/tools/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,IAAI,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AAMpC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,eAAO,MAAM,eAAe;;;;;;eAM1B,CAAC;AAUH,sFAAsF;AACtF,qBAAa,eAAgB,SAAQ,KAAK;IAOtC,iEAAiE;aACjD,QAAQ,EAAE,MAAM;IAEhC,kFAAkF;aAClE,UAAU,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU;IAV7D;;;;OAIG;IACH;IACE,iEAAiE;IACjD,QAAQ,EAAE,MAAM,EAChC,KAAK,EAAE,OAAO;IACd,kFAAkF;IAClE,UAAU,GAAE,OAAO,GAAG,QAAQ,GAAG,UAAoB,EAMtE;CACF;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,IAAI,CACd,OAAO,CAAC,MAAM,CAAC,EACb,OAAO,GACP,QAAQ,GACR,OAAO,GACP,aAAa,GACb,OAAO,GACP,aAAa,GACb,OAAO,CACV,GACA,YAAY,CAkCd"}
@@ -19,10 +19,20 @@ const metadata = z.strictObject({
19
19
  annotations: toolAnnotations.optional(),
20
20
  _meta: object.optional(),
21
21
  });
22
+ /** Registration error wrapping a schema-conversion or metadata-validation failure. */
22
23
  export class ToolSchemaError extends Error {
23
24
  toolName;
24
25
  schemaKind;
25
- constructor(toolName, cause, schemaKind = "input") {
26
+ /**
27
+ * @param toolName - Exposed registration name whose description could not be built.
28
+ * @param cause - Original schema or metadata failure, retained as the error's cause.
29
+ * @param schemaKind - Failing part of the description; defaults to `input`.
30
+ */
31
+ constructor(
32
+ /** Exposed registration name whose schema or metadata failed. */
33
+ toolName, cause,
34
+ /** Whether input conversion, output conversion, or metadata validation failed. */
35
+ schemaKind = "input") {
26
36
  super(`Cannot expose ${schemaKind} schema for tool: ${toolName}`, {
27
37
  cause,
28
38
  });
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/tools/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/tools/schema.ts"],"names":[],"mappings":"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"}
@@ -2,22 +2,43 @@ import type { ProtocolResponse } from "@toolgrain/protocol";
2
2
  import type { Server } from "./server.js";
3
3
  /** Callbacks are synchronous; message processing runs independently. */
4
4
  export interface TransportCallbacks {
5
+ /** Deliver one JSON-decoded message without waiting for asynchronous protocol processing. */
5
6
  onMessage(message: unknown): void;
7
+ /** Report invalid JSON or framing so the server can send a protocol parse error. */
6
8
  onParseError(error: unknown): void;
9
+ /** Report a fatal transport failure; the server records it and closes the connection. */
7
10
  onError(error: unknown): void;
11
+ /** Notify the server of end-of-input or transport closure so active work can be aborted. */
8
12
  onClose(): void;
9
13
  }
10
14
  /** Single-use adapters own UTF-8 framing, JSON decoding, and stream cleanup. */
11
15
  export interface Transport {
16
+ /** Message-transport discriminator; may be omitted for custom message adapters. */
12
17
  readonly mode?: "message";
18
+ /**
19
+ * Start delivery once and resolve when ready. Call `Server.listen()` to establish ownership.
20
+ * @param callbacks - Synchronous message and lifecycle notifications supplied by the server.
21
+ */
13
22
  start(callbacks: TransportCallbacks): Promise<void>;
23
+ /**
24
+ * Send one protocol response, resolving after the adapter's write/backpressure handling.
25
+ * @param message - Response envelope already converted for the client's protocol revision.
26
+ */
14
27
  send(message: ProtocolResponse): Promise<void>;
28
+ /** Release adapter-owned resources; closing is terminal and must tolerate repeated calls. */
15
29
  close(): Promise<void>;
16
30
  }
17
31
  /** Single-use request transports own listeners and use per-request authorization. */
18
32
  export interface RequestTransport {
33
+ /** Identifies an independent-request transport, required by auth-configured servers. */
19
34
  readonly mode: "request";
35
+ /**
36
+ * Start the owned listener once and resolve when ready; invoked through `Server.listen()`.
37
+ * @param server - Server used for per-request authorization and protocol dispatch.
38
+ * @param callbacks - Fatal-error and closure notifications supplied by the server.
39
+ */
20
40
  start(server: Server, callbacks: Pick<TransportCallbacks, "onError" | "onClose">): Promise<void>;
41
+ /** Stop the owned listener and active connections; closing is terminal and idempotent. */
21
42
  close(): Promise<void>;
22
43
  }
23
44
  export declare function isRequestTransport(transport: Transport | RequestTransport): transport is RequestTransport;
@@ -1 +1 @@
1
- {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,wEAAwE;AACxE,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,gFAAgF;AAChF,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IAC1B,KAAK,CAAC,SAAS,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,IAAI,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,qFAAqF;AACrF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,KAAK,CACH,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,IAAI,CAAC,kBAAkB,EAAE,SAAS,GAAG,SAAS,CAAC,GACzD,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,SAAS,GAAG,gBAAgB,GACtC,SAAS,IAAI,gBAAgB,CAE/B"}
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,wEAAwE;AACxE,MAAM,WAAW,kBAAkB;IACjC,6FAA6F;IAC7F,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,oFAAoF;IACpF,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC,yFAAyF;IACzF,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B,4FAA4F;IAC5F,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,gFAAgF;AAChF,MAAM,WAAW,SAAS;IACxB,mFAAmF;IACnF,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IAC1B;;;OAGG;IACH,KAAK,CAAC,SAAS,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD;;;OAGG;IACH,IAAI,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,6FAA6F;IAC7F,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,qFAAqF;AACrF,MAAM,WAAW,gBAAgB;IAC/B,wFAAwF;IACxF,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB;;;;OAIG;IACH,KAAK,CACH,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,IAAI,CAAC,kBAAkB,EAAE,SAAS,GAAG,SAAS,CAAC,GACzD,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,0FAA0F;IAC1F,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,SAAS,GAAG,gBAAgB,GACtC,SAAS,IAAI,gBAAgB,CAE/B"}
@@ -1 +1 @@
1
- {"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AA6BA,MAAM,UAAU,kBAAkB,CAChC,SAAuC;IAEvC,OAAO,MAAM,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC;AAC7D,CAAC"}
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAkDA,MAAM,UAAU,kBAAkB,CAChC,SAAuC;IAEvC,OAAO,MAAM,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC;AAC7D,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toolgrain/mcp",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Define reusable, typed MCP tools and servers with Zod validation.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -8,7 +8,7 @@
8
8
  "url": "git+https://github.com/keshavkatwe/toolgrain.git",
9
9
  "directory": "packages/mcp"
10
10
  },
11
- "homepage": "https://github.com/keshavkatwe/toolgrain/tree/main/packages/mcp#readme",
11
+ "homepage": "https://toolgrain.mintlify.site/reference/mcp",
12
12
  "bugs": {
13
13
  "url": "https://github.com/keshavkatwe/toolgrain/issues"
14
14
  },
@@ -59,7 +59,7 @@
59
59
  "@toolgrain/repo-tools": "0.0.0"
60
60
  },
61
61
  "dependencies": {
62
- "@toolgrain/protocol": "0.1.1"
62
+ "@toolgrain/protocol": "0.1.3"
63
63
  },
64
64
  "engines": {
65
65
  "node": "^24.20.0",
@@ -1,6 +1,14 @@
1
1
  import { AuthError } from "./errors.js";
2
2
 
3
- /** Validate the audience of an already verified token without disclosing its claims. */
3
+ /**
4
+ * Require an already verified token's audience to contain the exact MCP resource URL.
5
+ * This checks only audience membership, not signatures, issuers, expiry, or revocation.
6
+ *
7
+ * @param audience - Verified `aud` claim: a string or array of strings.
8
+ * @param resource - Expected resource URL to match exactly.
9
+ * @throws `AuthError` with `invalid_token` for missing, malformed, or mismatched audiences.
10
+ * Missing and mismatched claims include public guidance without disclosing received claims.
11
+ */
4
12
  export function validateTokenAudience(
5
13
  audience: unknown,
6
14
  resource: string,