From 77138c939e2bc442ed24c012fbe47946968a6bbc Mon Sep 17 00:00:00 2001 From: Jiri Spilka Date: Tue, 11 Nov 2025 10:52:03 +0100 Subject: [PATCH 1/3] feat: Add tool annotations (title, readOnlyHint, openWorldHint) Add annotations to all internal and Actor tools: - title: Short display name (sentence case, Actor/Apify capitalized) - readOnlyHint: true for read-only tools - openWorldHint: true only for tools accessing open world (external web/Actors), not Apify platform Examples: call-actor and get-html-skeleton are openWorld; search-actors and fetch-apify-docs are not --- src/mcp/server.ts | 4 ++-- src/tools/actor.ts | 8 ++++++++ src/tools/build.ts | 4 ++++ src/tools/dataset.ts | 12 ++++++++++++ src/tools/dataset_collection.ts | 4 ++++ src/tools/fetch-actor-details.ts | 4 ++++ src/tools/fetch-apify-docs.ts | 4 ++++ src/tools/get-actor-output.ts | 4 ++++ src/tools/get-html-skeleton.ts | 5 +++++ src/tools/helpers.ts | 3 +++ src/tools/key_value_store.ts | 12 ++++++++++++ src/tools/key_value_store_collection.ts | 4 ++++ src/tools/run.ts | 11 +++++++++++ src/tools/run_collection.ts | 4 ++++ src/tools/search-apify-docs.ts | 6 +++++- src/tools/store_collection.ts | 4 ++++ src/utils/tools.ts | 1 + 17 files changed, 91 insertions(+), 3 deletions(-) diff --git a/src/mcp/server.ts b/src/mcp/server.ts index 6ff0a27f..4b6ab02a 100644 --- a/src/mcp/server.ts +++ b/src/mcp/server.ts @@ -297,8 +297,8 @@ export class ActorsMcpServer { } } else { // No skyfire mode - store tools as-is - for (const wrap of tools) { - this.tools.set(wrap.name, wrap); + for (const tool of tools) { + this.tools.set(tool.name, tool); } } if (shouldNotifyToolsChangedHandler) this.notifyToolsChangedHandler(); diff --git a/src/tools/actor.ts b/src/tools/actor.ts index b0439d13..47983abf 100644 --- a/src/tools/actor.ts +++ b/src/tools/actor.ts @@ -198,6 +198,10 @@ Actor description: ${actorDefinitionPruned.description}`; inputSchema: inputSchema as ToolInputSchema, ajvValidate, memoryMbytes, + annotations: { + title: actorDefinitionPruned.actorFullName, + openWorldHint: true, + }, }); } return tools; @@ -361,6 +365,10 @@ EXAMPLES: // Additional props true to allow skyfire-pay-id additionalProperties: true, }), + annotations: { + title: 'Call Actor', + openWorldHint: true, + }, call: async (toolArgs: InternalToolArgs) => { const { args, apifyToken, progressTracker, extra, apifyMcpServer } = toolArgs; const { actor: actorName, step, input, callOptions } = callActorArgs.parse(args); diff --git a/src/tools/build.ts b/src/tools/build.ts index 8b3b132c..61d49cfb 100644 --- a/src/tools/build.ts +++ b/src/tools/build.ts @@ -116,6 +116,10 @@ export const actorDefinitionTool: ToolEntry = { + `Limit the length of the README if needed.`, inputSchema: zodToJsonSchema(getActorDefinitionArgsSchema) as ToolInputSchema, ajvValidate: ajv.compile(zodToJsonSchema(getActorDefinitionArgsSchema)), + annotations: { + title: 'Get Actor definition', + readOnlyHint: true, + }, call: async (toolArgs: InternalToolArgs) => { const { args, apifyToken } = toolArgs; diff --git a/src/tools/dataset.ts b/src/tools/dataset.ts index 6927b631..e6352945 100644 --- a/src/tools/dataset.ts +++ b/src/tools/dataset.ts @@ -57,6 +57,10 @@ USAGE EXAMPLES: - user_input: What fields does username~my-dataset have?`, inputSchema: zodToJsonSchema(getDatasetArgs) as ToolInputSchema, ajvValidate: ajv.compile(zodToJsonSchema(getDatasetArgs)), + annotations: { + title: 'Get dataset', + readOnlyHint: true, + }, call: async (toolArgs: InternalToolArgs) => { const { args, apifyToken } = toolArgs; const parsed = getDatasetArgs.parse(args); @@ -89,6 +93,10 @@ USAGE EXAMPLES: - user_input: Get only metadata.url and title from dataset username~my-dataset (flatten metadata)`, inputSchema: zodToJsonSchema(getDatasetItemsArgs) as ToolInputSchema, ajvValidate: ajv.compile(zodToJsonSchema(getDatasetItemsArgs)), + annotations: { + title: 'Get dataset items', + readOnlyHint: true, + }, call: async (toolArgs: InternalToolArgs) => { const { args, apifyToken } = toolArgs; const parsed = getDatasetItemsArgs.parse(args); @@ -148,6 +156,10 @@ USAGE EXAMPLES: - user_input: Show schema of username~my-dataset (clean items only)`, inputSchema: zodToJsonSchema(getDatasetSchemaArgs) as ToolInputSchema, ajvValidate: ajv.compile(zodToJsonSchema(getDatasetSchemaArgs)), + annotations: { + title: 'Get dataset schema', + readOnlyHint: true, + }, call: async (toolArgs: InternalToolArgs) => { const { args, apifyToken } = toolArgs; const parsed = getDatasetSchemaArgs.parse(args); diff --git a/src/tools/dataset_collection.ts b/src/tools/dataset_collection.ts index 9c8cfe13..23f5ee3d 100644 --- a/src/tools/dataset_collection.ts +++ b/src/tools/dataset_collection.ts @@ -42,6 +42,10 @@ USAGE EXAMPLES: - user_input: List unnamed datasets`, inputSchema: zodToJsonSchema(getUserDatasetsListArgs) as ToolInputSchema, ajvValidate: ajv.compile(zodToJsonSchema(getUserDatasetsListArgs)), + annotations: { + title: 'Get user datasets list', + readOnlyHint: true, + }, call: async (toolArgs: InternalToolArgs) => { const { args, apifyToken } = toolArgs; const parsed = getUserDatasetsListArgs.parse(args); diff --git a/src/tools/fetch-actor-details.ts b/src/tools/fetch-actor-details.ts index 1d3e85d9..2f8b6de1 100644 --- a/src/tools/fetch-actor-details.ts +++ b/src/tools/fetch-actor-details.ts @@ -29,6 +29,10 @@ USAGE EXAMPLES: - user_input: What is the pricing for apify/instagram-scraper?`, inputSchema: zodToJsonSchema(fetchActorDetailsToolArgsSchema) as ToolInputSchema, ajvValidate: ajv.compile(zodToJsonSchema(fetchActorDetailsToolArgsSchema)), + annotations: { + title: 'Fetch Actor details', + readOnlyHint: true, + }, call: async (toolArgs: InternalToolArgs) => { const { args, apifyToken } = toolArgs; const parsed = fetchActorDetailsToolArgsSchema.parse(args); diff --git a/src/tools/fetch-apify-docs.ts b/src/tools/fetch-apify-docs.ts index 80d9132e..802c6daa 100644 --- a/src/tools/fetch-apify-docs.ts +++ b/src/tools/fetch-apify-docs.ts @@ -29,6 +29,10 @@ USAGE EXAMPLES: - user_input: Fetch https://docs.apify.com/academy`, inputSchema: zodToJsonSchema(fetchApifyDocsToolArgsSchema) as ToolInputSchema, ajvValidate: ajv.compile(zodToJsonSchema(fetchApifyDocsToolArgsSchema)), + annotations: { + title: 'Fetch Apify docs', + readOnlyHint: true, + }, call: async (toolArgs: InternalToolArgs) => { const { args } = toolArgs; diff --git a/src/tools/get-actor-output.ts b/src/tools/get-actor-output.ts index d2b93c45..a7f1d54d 100644 --- a/src/tools/get-actor-output.ts +++ b/src/tools/get-actor-output.ts @@ -88,6 +88,10 @@ Note: This tool is automatically included if the Apify MCP Server is configured * Allow additional properties for Skyfire mode to pass `skyfire-pay-id`. */ ajvValidate: ajv.compile({ ...zodToJsonSchema(getActorOutputArgs), additionalProperties: true }), + annotations: { + title: 'Get Actor output', + readOnlyHint: true, + }, call: async (toolArgs: InternalToolArgs) => { const { args, apifyToken, apifyMcpServer } = toolArgs; diff --git a/src/tools/get-html-skeleton.ts b/src/tools/get-html-skeleton.ts index af5829b2..541bd039 100644 --- a/src/tools/get-html-skeleton.ts +++ b/src/tools/get-html-skeleton.ts @@ -52,6 +52,11 @@ USAGE EXAMPLES: - user_input: Get next chunk of HTML skeleton for https://example.com (chunk=2)`, inputSchema: zodToJsonSchema(getHtmlSkeletonArgs) as ToolInputSchema, ajvValidate: ajv.compile(zodToJsonSchema(getHtmlSkeletonArgs)), + annotations: { + title: 'Get HTML skeleton', + readOnlyHint: true, + openWorldHint: true, + }, call: async (toolArgs: InternalToolArgs) => { const { args, apifyToken } = toolArgs; const parsed = getHtmlSkeletonArgs.parse(args); diff --git a/src/tools/helpers.ts b/src/tools/helpers.ts index d0246e5f..d428f413 100644 --- a/src/tools/helpers.ts +++ b/src/tools/helpers.ts @@ -27,6 +27,9 @@ USAGE EXAMPLES: - user_input: Add apify/instagram-scraper as a tool`, inputSchema: zodToJsonSchema(addToolArgsSchema) as ToolInputSchema, ajvValidate: ajv.compile(zodToJsonSchema(addToolArgsSchema)), + annotations: { + title: 'Add tool', + }, // TODO: I don't like that we are passing apifyMcpServer and mcpServer to the tool call: async (toolArgs: InternalToolArgs) => { const { apifyMcpServer, apifyToken, args, extra: { sendNotification } } = toolArgs; diff --git a/src/tools/key_value_store.ts b/src/tools/key_value_store.ts index 87f7b23b..222677b9 100644 --- a/src/tools/key_value_store.ts +++ b/src/tools/key_value_store.ts @@ -29,6 +29,10 @@ USAGE EXAMPLES: - user_input: Get details for store adb123`, inputSchema: zodToJsonSchema(getKeyValueStoreArgs) as ToolInputSchema, ajvValidate: ajv.compile(zodToJsonSchema(getKeyValueStoreArgs)), + annotations: { + title: 'Get key-value store', + readOnlyHint: true, + }, call: async (toolArgs: InternalToolArgs) => { const { args, apifyToken } = toolArgs; const parsed = getKeyValueStoreArgs.parse(args); @@ -69,6 +73,10 @@ USAGE EXAMPLES: - user_input: Continue listing keys in store a123 from key data.json`, inputSchema: zodToJsonSchema(getKeyValueStoreKeysArgs) as ToolInputSchema, ajvValidate: ajv.compile(zodToJsonSchema(getKeyValueStoreKeysArgs)), + annotations: { + title: 'Get key-value store keys', + readOnlyHint: true, + }, call: async (toolArgs: InternalToolArgs) => { const { args, apifyToken } = toolArgs; const parsed = getKeyValueStoreKeysArgs.parse(args); @@ -107,6 +115,10 @@ USAGE EXAMPLES: - user_input: Get record data.json from store username~my-store`, inputSchema: zodToJsonSchema(getKeyValueStoreRecordArgs) as ToolInputSchema, ajvValidate: ajv.compile(zodToJsonSchema(getKeyValueStoreRecordArgs)), + annotations: { + title: 'Get key-value store record', + readOnlyHint: true, + }, call: async (toolArgs: InternalToolArgs) => { const { args, apifyToken } = toolArgs; const parsed = getKeyValueStoreRecordArgs.parse(args); diff --git a/src/tools/key_value_store_collection.ts b/src/tools/key_value_store_collection.ts index b4dae65f..b443d8d1 100644 --- a/src/tools/key_value_store_collection.ts +++ b/src/tools/key_value_store_collection.ts @@ -42,6 +42,10 @@ USAGE EXAMPLES: - user_input: List unnamed key-value stores`, inputSchema: zodToJsonSchema(getUserKeyValueStoresListArgs) as ToolInputSchema, ajvValidate: ajv.compile(zodToJsonSchema(getUserKeyValueStoresListArgs)), + annotations: { + title: 'Get user key-value stores list', + readOnlyHint: true, + }, call: async (toolArgs: InternalToolArgs) => { const { args, apifyToken } = toolArgs; const parsed = getUserKeyValueStoresListArgs.parse(args); diff --git a/src/tools/run.ts b/src/tools/run.ts index 7857f3d0..70d692ca 100644 --- a/src/tools/run.ts +++ b/src/tools/run.ts @@ -36,6 +36,10 @@ USAGE EXAMPLES: - user_input: What is the datasetId for run y2h7sK3Wc?`, inputSchema: zodToJsonSchema(getActorRunArgs) as ToolInputSchema, ajvValidate: ajv.compile(zodToJsonSchema(getActorRunArgs)), + annotations: { + title: 'Get Actor run', + readOnlyHint: true, + }, call: async (toolArgs: InternalToolArgs) => { const { args, apifyToken } = toolArgs; const parsed = getActorRunArgs.parse(args); @@ -74,6 +78,10 @@ USAGE EXAMPLES: - user_input: Get logs for run y2h7sK3Wc`, inputSchema: zodToJsonSchema(GetRunLogArgs) as ToolInputSchema, ajvValidate: ajv.compile(zodToJsonSchema(GetRunLogArgs)), + annotations: { + title: 'Get Actor run log', + readOnlyHint: true, + }, call: async (toolArgs: InternalToolArgs) => { const { args, apifyToken } = toolArgs; const parsed = GetRunLogArgs.parse(args); @@ -103,6 +111,9 @@ USAGE EXAMPLES: - user_input: Gracefully abort run y2h7sK3Wc`, inputSchema: zodToJsonSchema(abortRunArgs) as ToolInputSchema, ajvValidate: ajv.compile(zodToJsonSchema(abortRunArgs)), + annotations: { + title: 'Abort Actor run', + }, call: async (toolArgs: InternalToolArgs) => { const { args, apifyToken } = toolArgs; const parsed = abortRunArgs.parse(args); diff --git a/src/tools/run_collection.ts b/src/tools/run_collection.ts index 3e07336c..ddf1dc4b 100644 --- a/src/tools/run_collection.ts +++ b/src/tools/run_collection.ts @@ -40,6 +40,10 @@ USAGE EXAMPLES: - user_input: Show only SUCCEEDED runs`, inputSchema: zodToJsonSchema(getUserRunsListArgs) as ToolInputSchema, ajvValidate: ajv.compile(zodToJsonSchema(getUserRunsListArgs)), + annotations: { + title: 'Get user runs list', + readOnlyHint: true, + }, call: async (toolArgs: InternalToolArgs) => { const { args, apifyToken } = toolArgs; const parsed = getUserRunsListArgs.parse(args); diff --git a/src/tools/search-apify-docs.ts b/src/tools/search-apify-docs.ts index b82bd64f..ee6569cf 100644 --- a/src/tools/search-apify-docs.ts +++ b/src/tools/search-apify-docs.ts @@ -34,7 +34,7 @@ export const searchApifyDocsTool: ToolEntry = { Apify documentation has information about Apify console, Actors (development (actor.json, input schema, dataset schema, dockerfile), deployment, builds, runs), schedules, storages (datasets, key-value store), Proxy, Integrations, - Apify Academy (crawling and webscraping with Crawlee), + Apify Academy (crawling and webscraping with Crawlee). The results will include the URL of the documentation page, a fragment identifier (if available), and a limited piece of content that matches the search query. @@ -50,6 +50,10 @@ export const searchApifyDocsTool: ToolEntry = { - query: How scrape with Crawlee?`, inputSchema: zodToJsonSchema(searchApifyDocsToolArgsSchema) as ToolInputSchema, ajvValidate: ajv.compile(zodToJsonSchema(searchApifyDocsToolArgsSchema)), + annotations: { + title: 'Search Apify docs', + readOnlyHint: true, + }, call: async (toolArgs: InternalToolArgs) => { const { args } = toolArgs; diff --git a/src/tools/store_collection.ts b/src/tools/store_collection.ts index 485ed169..385ac0fe 100644 --- a/src/tools/store_collection.ts +++ b/src/tools/store_collection.ts @@ -112,6 +112,10 @@ Returns list of Actor cards with the following info: `, inputSchema: zodToJsonSchema(searchActorsArgsSchema) as ToolInputSchema, ajvValidate: ajv.compile(zodToJsonSchema(searchActorsArgsSchema)), + annotations: { + title: 'Search Actors', + readOnlyHint: true, + }, call: async (toolArgs: InternalToolArgs) => { const { args, apifyToken, userRentedActorIds, apifyMcpServer } = toolArgs; const parsed = searchActorsArgsSchema.parse(args); diff --git a/src/utils/tools.ts b/src/utils/tools.ts index f4a71de2..261abcf4 100644 --- a/src/utils/tools.ts +++ b/src/utils/tools.ts @@ -10,6 +10,7 @@ export function getToolPublicFieldOnly(tool: ToolBase) { name: tool.name, description: tool.description, inputSchema: tool.inputSchema, + annotations: tool.annotations, }; } From 4e8c35a14caaddf2f7c30cbfe356cabb5e57ef86 Mon Sep 17 00:00:00 2001 From: Jiri Spilka Date: Tue, 11 Nov 2025 10:55:29 +0100 Subject: [PATCH 2/3] fix: Update README.md --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 18d99f25..ba7c05e6 100644 --- a/README.md +++ b/README.md @@ -178,6 +178,14 @@ Here is an overview list of all the tools provided by the Apify MCP Server. > The `get-actor-output` tool is automatically included with any Actor-related tool, such as `call-actor`, `add-actor`, or any specific Actor tool like `apify-slash-rag-web-browser`. When you call an Actor - either through the `call-actor` tool or directly via an Actor tool (e.g., `apify-slash-rag-web-browser`) - you receive a preview of the output. The preview depends on the Actor's output format and length; for some Actors and runs, it may include the entire output, while for others, only a limited version is returned to avoid overwhelming the LLM. To retrieve the full output of an Actor run, use the `get-actor-output` tool (supports limit, offset, and field filtering) with the `datasetId` provided by the Actor call. +### Tool annotations + +All tools include metadata annotations to help MCP clients and LLMs understand tool behavior: + +- **`title`**: Short display name for the tool (e.g., "Search Actors", "Call Actor", "apify/rag-web-browser") +- **`readOnlyHint`**: `true` for tools that only read data without modifying state (e.g., `get-dataset`, `fetch-actor-details`) +- **`openWorldHint`**: `true` for tools that access external resources outside the Apify platform (e.g., `call-actor` executes external Actors, `get-html-skeleton` scrapes external websites). Tools that interact only with the Apify platform (like `search-actors` or `fetch-apify-docs`) do not have this hint. + ### Tools configuration The `tools` configuration parameter is used to specify loaded tools - either categories or specific tools directly, and Apify Actors. For example, `tools=storage,runs` loads two categories; `tools=add-actor` loads just one tool. From 365b8c581be503417def45e13b7234fb9391858d Mon Sep 17 00:00:00 2001 From: Jiri Spilka Date: Fri, 14 Nov 2025 15:16:10 +0100 Subject: [PATCH 3/3] fix: add openWorldHint=false explicitly to relevant tools --- src/tools/build.ts | 1 + src/tools/dataset.ts | 3 +++ src/tools/dataset_collection.ts | 1 + src/tools/fetch-actor-details.ts | 1 + src/tools/fetch-apify-docs.ts | 1 + src/tools/get-actor-output.ts | 1 + src/tools/helpers.ts | 1 + src/tools/key_value_store.ts | 3 +++ src/tools/key_value_store_collection.ts | 1 + src/tools/run.ts | 3 +++ src/tools/run_collection.ts | 1 + src/tools/search-apify-docs.ts | 1 + src/tools/store_collection.ts | 1 + 13 files changed, 19 insertions(+) diff --git a/src/tools/build.ts b/src/tools/build.ts index 61d49cfb..3d3d90d4 100644 --- a/src/tools/build.ts +++ b/src/tools/build.ts @@ -119,6 +119,7 @@ export const actorDefinitionTool: ToolEntry = { annotations: { title: 'Get Actor definition', readOnlyHint: true, + openWorldHint: false, }, call: async (toolArgs: InternalToolArgs) => { const { args, apifyToken } = toolArgs; diff --git a/src/tools/dataset.ts b/src/tools/dataset.ts index e6352945..d5d4b95a 100644 --- a/src/tools/dataset.ts +++ b/src/tools/dataset.ts @@ -60,6 +60,7 @@ USAGE EXAMPLES: annotations: { title: 'Get dataset', readOnlyHint: true, + openWorldHint: false, }, call: async (toolArgs: InternalToolArgs) => { const { args, apifyToken } = toolArgs; @@ -96,6 +97,7 @@ USAGE EXAMPLES: annotations: { title: 'Get dataset items', readOnlyHint: true, + openWorldHint: false, }, call: async (toolArgs: InternalToolArgs) => { const { args, apifyToken } = toolArgs; @@ -159,6 +161,7 @@ USAGE EXAMPLES: annotations: { title: 'Get dataset schema', readOnlyHint: true, + openWorldHint: false, }, call: async (toolArgs: InternalToolArgs) => { const { args, apifyToken } = toolArgs; diff --git a/src/tools/dataset_collection.ts b/src/tools/dataset_collection.ts index 23f5ee3d..84ceb5fc 100644 --- a/src/tools/dataset_collection.ts +++ b/src/tools/dataset_collection.ts @@ -45,6 +45,7 @@ USAGE EXAMPLES: annotations: { title: 'Get user datasets list', readOnlyHint: true, + openWorldHint: false, }, call: async (toolArgs: InternalToolArgs) => { const { args, apifyToken } = toolArgs; diff --git a/src/tools/fetch-actor-details.ts b/src/tools/fetch-actor-details.ts index 2f8b6de1..e081b1bc 100644 --- a/src/tools/fetch-actor-details.ts +++ b/src/tools/fetch-actor-details.ts @@ -32,6 +32,7 @@ USAGE EXAMPLES: annotations: { title: 'Fetch Actor details', readOnlyHint: true, + openWorldHint: false, }, call: async (toolArgs: InternalToolArgs) => { const { args, apifyToken } = toolArgs; diff --git a/src/tools/fetch-apify-docs.ts b/src/tools/fetch-apify-docs.ts index 802c6daa..7f337f45 100644 --- a/src/tools/fetch-apify-docs.ts +++ b/src/tools/fetch-apify-docs.ts @@ -32,6 +32,7 @@ USAGE EXAMPLES: annotations: { title: 'Fetch Apify docs', readOnlyHint: true, + openWorldHint: false, }, call: async (toolArgs: InternalToolArgs) => { const { args } = toolArgs; diff --git a/src/tools/get-actor-output.ts b/src/tools/get-actor-output.ts index a7f1d54d..e10b50c9 100644 --- a/src/tools/get-actor-output.ts +++ b/src/tools/get-actor-output.ts @@ -91,6 +91,7 @@ Note: This tool is automatically included if the Apify MCP Server is configured annotations: { title: 'Get Actor output', readOnlyHint: true, + openWorldHint: false, }, call: async (toolArgs: InternalToolArgs) => { const { args, apifyToken, apifyMcpServer } = toolArgs; diff --git a/src/tools/helpers.ts b/src/tools/helpers.ts index d428f413..a9d345f2 100644 --- a/src/tools/helpers.ts +++ b/src/tools/helpers.ts @@ -29,6 +29,7 @@ USAGE EXAMPLES: ajvValidate: ajv.compile(zodToJsonSchema(addToolArgsSchema)), annotations: { title: 'Add tool', + openWorldHint: true, }, // TODO: I don't like that we are passing apifyMcpServer and mcpServer to the tool call: async (toolArgs: InternalToolArgs) => { diff --git a/src/tools/key_value_store.ts b/src/tools/key_value_store.ts index 222677b9..260f6734 100644 --- a/src/tools/key_value_store.ts +++ b/src/tools/key_value_store.ts @@ -32,6 +32,7 @@ USAGE EXAMPLES: annotations: { title: 'Get key-value store', readOnlyHint: true, + openWorldHint: false, }, call: async (toolArgs: InternalToolArgs) => { const { args, apifyToken } = toolArgs; @@ -76,6 +77,7 @@ USAGE EXAMPLES: annotations: { title: 'Get key-value store keys', readOnlyHint: true, + openWorldHint: false, }, call: async (toolArgs: InternalToolArgs) => { const { args, apifyToken } = toolArgs; @@ -118,6 +120,7 @@ USAGE EXAMPLES: annotations: { title: 'Get key-value store record', readOnlyHint: true, + openWorldHint: false, }, call: async (toolArgs: InternalToolArgs) => { const { args, apifyToken } = toolArgs; diff --git a/src/tools/key_value_store_collection.ts b/src/tools/key_value_store_collection.ts index b443d8d1..edf14ac6 100644 --- a/src/tools/key_value_store_collection.ts +++ b/src/tools/key_value_store_collection.ts @@ -45,6 +45,7 @@ USAGE EXAMPLES: annotations: { title: 'Get user key-value stores list', readOnlyHint: true, + openWorldHint: false, }, call: async (toolArgs: InternalToolArgs) => { const { args, apifyToken } = toolArgs; diff --git a/src/tools/run.ts b/src/tools/run.ts index 70d692ca..ab4dbd8a 100644 --- a/src/tools/run.ts +++ b/src/tools/run.ts @@ -39,6 +39,7 @@ USAGE EXAMPLES: annotations: { title: 'Get Actor run', readOnlyHint: true, + openWorldHint: false, }, call: async (toolArgs: InternalToolArgs) => { const { args, apifyToken } = toolArgs; @@ -81,6 +82,7 @@ USAGE EXAMPLES: annotations: { title: 'Get Actor run log', readOnlyHint: true, + openWorldHint: false, }, call: async (toolArgs: InternalToolArgs) => { const { args, apifyToken } = toolArgs; @@ -113,6 +115,7 @@ USAGE EXAMPLES: ajvValidate: ajv.compile(zodToJsonSchema(abortRunArgs)), annotations: { title: 'Abort Actor run', + openWorldHint: false, }, call: async (toolArgs: InternalToolArgs) => { const { args, apifyToken } = toolArgs; diff --git a/src/tools/run_collection.ts b/src/tools/run_collection.ts index ddf1dc4b..8f3d05d5 100644 --- a/src/tools/run_collection.ts +++ b/src/tools/run_collection.ts @@ -43,6 +43,7 @@ USAGE EXAMPLES: annotations: { title: 'Get user runs list', readOnlyHint: true, + openWorldHint: false, }, call: async (toolArgs: InternalToolArgs) => { const { args, apifyToken } = toolArgs; diff --git a/src/tools/search-apify-docs.ts b/src/tools/search-apify-docs.ts index ee6569cf..d5762a5e 100644 --- a/src/tools/search-apify-docs.ts +++ b/src/tools/search-apify-docs.ts @@ -53,6 +53,7 @@ export const searchApifyDocsTool: ToolEntry = { annotations: { title: 'Search Apify docs', readOnlyHint: true, + openWorldHint: false, }, call: async (toolArgs: InternalToolArgs) => { const { args } = toolArgs; diff --git a/src/tools/store_collection.ts b/src/tools/store_collection.ts index 385ac0fe..fa1bd165 100644 --- a/src/tools/store_collection.ts +++ b/src/tools/store_collection.ts @@ -115,6 +115,7 @@ Returns list of Actor cards with the following info: annotations: { title: 'Search Actors', readOnlyHint: true, + openWorldHint: false, }, call: async (toolArgs: InternalToolArgs) => { const { args, apifyToken, userRentedActorIds, apifyMcpServer } = toolArgs;