Skip to main content
Glama

actors-mcp-server

Official
by apify
MIT License
7,198
465
  • Apple
key_value_store.ts4.91 kB
import { z } from 'zod'; import zodToJsonSchema from 'zod-to-json-schema'; import { ApifyClient } from '../apify-client.js'; import { HelperTools } from '../const.js'; import type { InternalTool, ToolEntry } from '../types.js'; import { ajv } from '../utils/ajv.js'; const getKeyValueStoreArgs = z.object({ storeId: z.string() .min(1) .describe('Key-value store ID or username~store-name'), }); /** * https://docs.apify.com/api/v2/key-value-store-get */ export const getKeyValueStore: ToolEntry = { type: 'internal', tool: { name: HelperTools.KEY_VALUE_STORE_GET, actorFullName: HelperTools.KEY_VALUE_STORE_GET, description: `Get details about a key-value store by ID or username~store-name. The results will include store metadata (ID, name, owner, access settings) and usage statistics. USAGE: - Use when you need to inspect a store to locate records or understand its properties. USAGE EXAMPLES: - user_input: Show info for key-value store username~my-store - user_input: Get details for store adb123`, inputSchema: zodToJsonSchema(getKeyValueStoreArgs), ajvValidate: ajv.compile(zodToJsonSchema(getKeyValueStoreArgs)), call: async (toolArgs) => { const { args, apifyToken } = toolArgs; const parsed = getKeyValueStoreArgs.parse(args); const client = new ApifyClient({ token: apifyToken }); const store = await client.keyValueStore(parsed.storeId).get(); return { content: [{ type: 'text', text: JSON.stringify(store) }] }; }, } as InternalTool, }; const getKeyValueStoreKeysArgs = z.object({ storeId: z.string() .min(1) .describe('Key-value store ID or username~store-name'), exclusiveStartKey: z.string() .optional() .describe('All keys up to this one (including) are skipped from the result.'), limit: z.number() .max(10) .optional() .describe('Number of keys to be returned. Maximum value is 1000.'), }); /** * https://docs.apify.com/api/v2/key-value-store-keys-get */ export const getKeyValueStoreKeys: ToolEntry = { type: 'internal', tool: { name: HelperTools.KEY_VALUE_STORE_KEYS_GET, actorFullName: HelperTools.KEY_VALUE_STORE_KEYS_GET, description: `List keys in a key-value store with optional pagination. The results will include keys and basic info about stored values (e.g., size). Use exclusiveStartKey and limit to paginate. USAGE: - Use when you need to discover what records exist in a store. USAGE EXAMPLES: - user_input: List first 100 keys in store username~my-store - user_input: Continue listing keys in store a123 from key data.json`, inputSchema: zodToJsonSchema(getKeyValueStoreKeysArgs), ajvValidate: ajv.compile(zodToJsonSchema(getKeyValueStoreKeysArgs)), call: async (toolArgs) => { const { args, apifyToken } = toolArgs; const parsed = getKeyValueStoreKeysArgs.parse(args); const client = new ApifyClient({ token: apifyToken }); const keys = await client.keyValueStore(parsed.storeId).listKeys({ exclusiveStartKey: parsed.exclusiveStartKey, limit: parsed.limit, }); return { content: [{ type: 'text', text: JSON.stringify(keys) }] }; }, } as InternalTool, }; const getKeyValueStoreRecordArgs = z.object({ storeId: z.string() .min(1) .describe('Key-value store ID or username~store-name'), recordKey: z.string() .min(1) .describe('Key of the record to retrieve.'), }); /** * https://docs.apify.com/api/v2/key-value-store-record-get */ export const getKeyValueStoreRecord: ToolEntry = { type: 'internal', tool: { name: HelperTools.KEY_VALUE_STORE_RECORD_GET, actorFullName: HelperTools.KEY_VALUE_STORE_RECORD_GET, description: `Get a value stored in a key-value store under a specific key. The response preserves the original Content-Encoding; most clients handle decompression automatically. USAGE: - Use when you need to retrieve a specific record (JSON, text, or binary) from a store. USAGE EXAMPLES: - user_input: Get record INPUT from store abc123 - user_input: Get record data.json from store username~my-store`, inputSchema: zodToJsonSchema(getKeyValueStoreRecordArgs), ajvValidate: ajv.compile(zodToJsonSchema(getKeyValueStoreRecordArgs)), call: async (toolArgs) => { const { args, apifyToken } = toolArgs; const parsed = getKeyValueStoreRecordArgs.parse(args); const client = new ApifyClient({ token: apifyToken }); const record = await client.keyValueStore(parsed.storeId).getRecord(parsed.recordKey); return { content: [{ type: 'text', text: JSON.stringify(record) }] }; }, } as InternalTool, };

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/apify/actors-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server