11diff --git a/dist/FastMCP.d.cts b/dist/FastMCP.d.cts
2- index 8eba099cc20f7ae5f70060bebb3871c387cfb2de..c3031da662933c366c7320171db47c246cd3191a 100644
2+ index 8eba099cc20f7ae5f70060bebb3871c387cfb2de..3bcd654a3f9f1a42d2f92d8a72daf0612fc58d52 100644
33--- a/dist/FastMCP.d.cts
44+++ b/dist/FastMCP.d.cts
5- @@ -605,6 +605,8 @@ type Tool<T extends FastMCPSessionAuth, Params extends ToolParameters = ToolPara
5+ @@ -240,10 +240,12 @@ type Resource<T extends FastMCPSessionAuth> = {
6+ uri: string;
7+ };
8+ type ResourceResult = {
9+ + _meta?: Record<string, unknown>;
10+ blob: string;
11+ mimeType?: string;
12+ uri?: string;
13+ } | {
14+ + _meta?: Record<string, unknown>;
15+ mimeType?: string;
16+ text: string;
17+ uri?: string;
18+ @@ -605,7 +607,10 @@ type Tool<T extends FastMCPSessionAuth, Params extends ToolParameters = ToolPara
619 streamingHint?: boolean;
720 } & ToolAnnotations;
821 canAccess?: (auth: T) => boolean;
922+ beforeValidate?: (args: unknown, auth: T) => ContentResult | Promise<ContentResult | undefined> | undefined;
1023+ canList?: (auth: T) => boolean;
1124 description?: string;
25+ + icons?: { src: string; mimeType?: string; sizes?: string[]; theme?: "light" | "dark" }[];
1226 execute: (args: StandardSchemaV1.InferOutput<Params>, context: Context<T>) => Promise<AudioContent | ContentResult | ImageContent | ResourceContent | ResourceLink | StandardSchemaV1.InferOutput<OutputParams> | string | TextContent | void>;
1327 name: string;
28+ outputSchema?: OutputParams;
1429diff --git a/dist/FastMCP.d.ts b/dist/FastMCP.d.ts
15- index 810df0c5b6511f34685a0651e6df83acd0239e7b..5c82680c32900c1ca39679e1be25e64c3408aee9 100644
30+ index 810df0c5b6511f34685a0651e6df83acd0239e7b..8f688f131ff0b99566a3179f882e95159d7ef9ab 100644
1631--- a/dist/FastMCP.d.ts
1732+++ b/dist/FastMCP.d.ts
18- @@ -605,6 +605,8 @@ type Tool<T extends FastMCPSessionAuth, Params extends ToolParameters = ToolPara
33+ @@ -240,10 +240,12 @@ type Resource<T extends FastMCPSessionAuth> = {
34+ uri: string;
35+ };
36+ type ResourceResult = {
37+ + _meta?: Record<string, unknown>;
38+ blob: string;
39+ mimeType?: string;
40+ uri?: string;
41+ } | {
42+ + _meta?: Record<string, unknown>;
43+ mimeType?: string;
44+ text: string;
45+ uri?: string;
46+ @@ -605,7 +607,10 @@ type Tool<T extends FastMCPSessionAuth, Params extends ToolParameters = ToolPara
1947 streamingHint?: boolean;
2048 } & ToolAnnotations;
2149 canAccess?: (auth: T) => boolean;
2250+ beforeValidate?: (args: unknown, auth: T) => ContentResult | Promise<ContentResult | undefined> | undefined;
2351+ canList?: (auth: T) => boolean;
2452 description?: string;
53+ + icons?: { src: string; mimeType?: string; sizes?: string[]; theme?: "light" | "dark" }[];
2554 execute: (args: StandardSchemaV1.InferOutput<Params>, context: Context<T>) => Promise<AudioContent | ContentResult | ImageContent | ResourceContent | ResourceLink | StandardSchemaV1.InferOutput<OutputParams> | string | TextContent | void>;
2655 name: string;
56+ outputSchema?: OutputParams;
2757diff --git a/dist/chunk-LWU5CQGW.js b/dist/chunk-LWU5CQGW.js
28- index 474670585c1fff7d9609d0f900d0743df14a7688..86d120ca21d74d6c335a8c3c9763e2f4ac835d10 100644
58+ index 474670585c1fff7d9609d0f900d0743df14a7688..74610d15a0a9392cf286e357995847f0ff1e6db7 100644
2959--- a/dist/chunk-LWU5CQGW.js
3060+++ b/dist/chunk-LWU5CQGW.js
3161@@ -986,6 +986,9 @@ ${error instanceof Error ? error.stack : JSON.stringify(error)}`
@@ -38,7 +68,7 @@ index 474670585c1fff7d9609d0f900d0743df14a7688..86d120ca21d74d6c335a8c3c9763e2f4
3868 let cachedToolsList = null;
3969 this.#server.setRequestHandler(ListToolsRequestSchema, async () => {
4070 if (cachedToolsList) {
41- @@ -994,9 +997,12 @@ ${error instanceof Error ? error.stack : JSON.stringify(error)}`
71+ @@ -994,9 +997,13 @@ ${error instanceof Error ? error.stack : JSON.stringify(error)}`
4272 };
4373 }
4474 cachedToolsList = await Promise.all(
@@ -49,10 +79,11 @@ index 474670585c1fff7d9609d0f900d0743df14a7688..86d120ca21d74d6c335a8c3c9763e2f4
4979+ // Top-level Tool.title (MCP 2025-06-18). Clients such as Codex index this
5080+ // for tool search and do not read annotations.title.
5181+ ...tool.annotations?.title && { title: tool.annotations.title },
82+ + ...tool.icons && { icons: tool.icons },
5283 description: tool.description,
5384 inputSchema: tool.parameters ? strictJsonSchema(await toJsonSchema(tool.parameters)) : {
5485 additionalProperties: false,
55- @@ -1026,6 +1032 ,15 @@ ${error instanceof Error ? error.stack : JSON.stringify(error)}`
86+ @@ -1026,6 +1033 ,15 @@ ${error instanceof Error ? error.stack : JSON.stringify(error)}`
5687 `Unknown tool: ${request.params.name}`
5788 );
5889 }
@@ -69,7 +100,7 @@ index 474670585c1fff7d9609d0f900d0743df14a7688..86d120ca21d74d6c335a8c3c9763e2f4
69100 if (tool.parameters) {
70101 const parsed = await tool.parameters["~standard"].validate(
71102diff --git a/dist/chunk-UYG7NPM6.cjs b/dist/chunk-UYG7NPM6.cjs
72- index 3b695bf493c4f54fd970e145cf14fdd8effc9c6d..3e17b1d1f71f3bf41eb5e589fa272e670f27c150 100644
103+ index 3b695bf493c4f54fd970e145cf14fdd8effc9c6d..1b7ce74a69d3104f23da4e4a5b3218fcd84d71d5 100644
73104--- a/dist/chunk-UYG7NPM6.cjs
74105+++ b/dist/chunk-UYG7NPM6.cjs
75106@@ -986,6 +986,9 @@ ${error instanceof Error ? error.stack : JSON.stringify(error)}`
@@ -82,7 +113,7 @@ index 3b695bf493c4f54fd970e145cf14fdd8effc9c6d..3e17b1d1f71f3bf41eb5e589fa272e67
82113 let cachedToolsList = null;
83114 this.#server.setRequestHandler(_typesjs.ListToolsRequestSchema, async () => {
84115 if (cachedToolsList) {
85- @@ -994,9 +997,12 @@ ${error instanceof Error ? error.stack : JSON.stringify(error)}`
116+ @@ -994,9 +997,13 @@ ${error instanceof Error ? error.stack : JSON.stringify(error)}`
86117 };
87118 }
88119 cachedToolsList = await Promise.all(
@@ -93,10 +124,11 @@ index 3b695bf493c4f54fd970e145cf14fdd8effc9c6d..3e17b1d1f71f3bf41eb5e589fa272e67
93124+ // Top-level Tool.title (MCP 2025-06-18). Clients such as Codex index this
94125+ // for tool search and do not read annotations.title.
95126+ ...tool.annotations?.title && { title: tool.annotations.title },
127+ + ...tool.icons && { icons: tool.icons },
96128 description: tool.description,
97129 inputSchema: tool.parameters ? _xsschema.strictJsonSchema.call(void 0, await _xsschema.toJsonSchema.call(void 0, tool.parameters)) : {
98130 additionalProperties: false,
99- @@ -1026,6 +1032 ,15 @@ ${error instanceof Error ? error.stack : JSON.stringify(error)}`
131+ @@ -1026,6 +1033 ,15 @@ ${error instanceof Error ? error.stack : JSON.stringify(error)}`
100132 `Unknown tool: ${request.params.name}`
101133 );
102134 }
0 commit comments