@apify/actors-mcp-server 0.1.11 → 0.1.12

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.
package/dist/tools.js CHANGED
@@ -2,8 +2,8 @@ import { Ajv } from 'ajv';
2
2
  import { ApifyClient } from 'apify-client';
3
3
  import { z } from 'zod';
4
4
  import { zodToJsonSchema } from 'zod-to-json-schema';
5
- import { toolNameToActorName } from './actors.js';
6
- import { InternalTools } from './const.js';
5
+ import { actorNameToToolName } from './actors.js';
6
+ import { ACTOR_README_MAX_LENGTH, InternalTools } from './const.js';
7
7
  export const DiscoverActorsArgsSchema = z.object({
8
8
  limit: z.number()
9
9
  .int()
@@ -20,28 +20,30 @@ export const DiscoverActorsArgsSchema = z.object({
20
20
  .default('')
21
21
  .describe('String of key words to search by. '
22
22
  + 'Searches the title, name, description, username, and readme of an Actor.'
23
- + 'Only key word search is supported, no advanced search.'),
23
+ + 'Only key word search is supported, no advanced search.'
24
+ + 'Always prefer simple keywords over complex queries.'),
24
25
  category: z.string()
25
26
  .default('')
26
27
  .describe('Filters the results by the specified category.'),
27
28
  });
28
29
  export const RemoveActorToolArgsSchema = z.object({
29
30
  toolName: z.string()
30
- .describe('Full name of the Actor to remove. Actor full name is always composed from `username--name`'
31
- + 'Never use name or username only')
32
- .transform((val) => toolNameToActorName(val)),
31
+ .describe('Tool name to remove from available tools.')
32
+ .transform((val) => actorNameToToolName(val)),
33
33
  });
34
34
  export const AddActorToToolsArgsSchema = z.object({
35
- actorFullName: z.string()
36
- .describe('Full name of the Actor to add as tool. Tool name is always composed from `username--name`'
37
- + 'Never use name or username only')
38
- .transform((val) => toolNameToActorName(val)),
35
+ actorName: z.string()
36
+ .describe('Add an Actor to available tools by Actor ID or Actor full name.'
37
+ + 'Actor name is always composed from `username/name`'),
39
38
  });
40
39
  export const GetActorDefinition = z.object({
41
- actorFullName: z.string()
42
- .describe('Full name of the Actor to retrieve documentation. Actor full name is always composed from `username--name`.'
43
- + 'Never use name or username only')
44
- .transform((val) => toolNameToActorName(val)),
40
+ actorName: z.string()
41
+ .describe('Retrieve input, readme, and other details for Actor ID or Actor full name. '
42
+ + 'Actor name is always composed from `username/name`'),
43
+ limit: z.number()
44
+ .int()
45
+ .default(ACTOR_README_MAX_LENGTH)
46
+ .describe(`Truncate the README to this limit. Default value is ${ACTOR_README_MAX_LENGTH}.`),
45
47
  });
46
48
  export function getActorAutoLoadingTools() {
47
49
  const ajv = new Ajv({ coerceTypes: 'array', strict: false });
@@ -49,17 +51,18 @@ export function getActorAutoLoadingTools() {
49
51
  {
50
52
  name: InternalTools.ADD_ACTOR_TO_TOOLS,
51
53
  actorFullName: InternalTools.ADD_ACTOR_TO_TOOLS,
52
- description: 'Add an Actor tool by name to available tools. Do not execute the actor, only add it and list it in available tools. '
54
+ description: 'Add an Actor to available tools by Actor ID or Actor name. '
55
+ + 'Do not execute the Actor, only add it and list it in available tools. '
53
56
  + 'Never run the tool without user consent! '
54
- + 'For example, add a tool with username--name when user wants to scrape/extract data',
57
+ + 'For example, add a tool with username/name when user wants to scrape data from a website.',
55
58
  inputSchema: zodToJsonSchema(AddActorToToolsArgsSchema),
56
59
  ajvValidate: ajv.compile(zodToJsonSchema(AddActorToToolsArgsSchema)),
57
60
  },
58
61
  {
59
62
  name: InternalTools.REMOVE_ACTOR_FROM_TOOLS,
60
- actorFullName: InternalTools.ADD_ACTOR_TO_TOOLS,
61
- description: 'Remove an actor tool by name from available toos. '
62
- + 'For example, when user says, I do not need a tool username--name anymore',
63
+ actorFullName: InternalTools.REMOVE_ACTOR_FROM_TOOLS,
64
+ description: 'Remove tool by name from available tools. '
65
+ + 'For example, when user says, I do not need a tool username/name anymore',
63
66
  inputSchema: zodToJsonSchema(RemoveActorToolArgsSchema),
64
67
  ajvValidate: ajv.compile(zodToJsonSchema(RemoveActorToolArgsSchema)),
65
68
  },
@@ -83,9 +86,10 @@ export function getActorDiscoveryTools() {
83
86
  {
84
87
  name: InternalTools.GET_ACTOR_DETAILS,
85
88
  actorFullName: InternalTools.GET_ACTOR_DETAILS,
86
- description: 'Get documentation, readme, input schema and other details about Actor. '
89
+ description: 'Get documentation, readme, input schema and other details about an Actor. '
87
90
  + 'For example, when user says, I need to know more about web crawler Actor.'
88
- + 'Get details for Actors with username--name.',
91
+ + 'Get details for an Actor with with Actor ID or Actor full name, i.e. username/name.'
92
+ + `Limit the length of the README if needed.`,
89
93
  inputSchema: zodToJsonSchema(GetActorDefinition),
90
94
  ajvValidate: ajv.compile(zodToJsonSchema(GetActorDefinition)),
91
95
  },
@@ -95,6 +99,7 @@ function pruneActorStoreInfo(response) {
95
99
  const stats = response.stats || {};
96
100
  const pricingInfo = (response.currentPricingInfo || {});
97
101
  return {
102
+ id: response.id,
98
103
  name: response.name?.toString() || '',
99
104
  username: response.username?.toString() || '',
100
105
  actorFullName: `${response.username}/${response.name}`,
package/dist/tools.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}