list_virtual_keys
List virtual keys in your Portkey org to retrieve slugs for prompts or auditing. Returns name, slug, status, usage limits, rate limits, reset state, and model config.
Instructions
List provider API keys stored as virtual keys in your Portkey org. Use this to find slugs before wiring prompts/configs or auditing limits. Returns total plus name, slug, status, usage limits, rate limits, reset state, and model config.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ok | Yes | Whether the tool call succeeded and returned structured data | |
| data | No | Structured success payload when ok is true | |
| error | No | Structured error payload when ok is false |
Implementation Reference
- src/tools/keys.tools.ts:217-261 (handler)MCP tool handler for 'list_virtual_keys'. Calls service.keys.listVirtualKeys() and formats the response to include total count and an array of virtual keys with name, slug, status, note, usage_limits, rate_limits, reset_usage, created_at, and model_config.
// List virtual keys tool server.tool( "list_virtual_keys", "List provider API keys stored as virtual keys in your Portkey org. Use this to find slugs before wiring prompts/configs or auditing limits. Returns total plus name, slug, status, usage limits, rate limits, reset state, and model config.", KEYS_TOOL_SCHEMAS.listVirtualKeys, async () => { const virtualKeys = await service.keys.listVirtualKeys(); return { content: [ { type: "text", text: JSON.stringify( { total: virtualKeys.total, virtual_keys: virtualKeys.data.map((key) => ({ name: key.name, slug: key.slug, status: key.status, note: key.note, usage_limits: key.usage_limits ? { credit_limit: key.usage_limits.credit_limit, alert_threshold: key.usage_limits.alert_threshold, periodic_reset: key.usage_limits.periodic_reset, } : null, rate_limits: key.rate_limits?.map((limit) => ({ type: limit.type, unit: limit.unit, value: limit.value, })) ?? null, reset_usage: key.reset_usage, created_at: key.created_at, model_config: key.model_config, })), }, null, 2, ), }, ], }; }, ); - src/tools/keys.tools.ts:6-7 (schema)Input schema for list_virtual_keys tool — empty object (no parameters required).
const KEYS_TOOL_SCHEMAS = { listVirtualKeys: {}, - Zod schema for the API response from GET /virtual-keys, validating the list response structure.
export const ListVirtualKeysResponseSchema = z.object({ object: z.literal("list"), total: z.number(), data: z.array(VirtualKeySchema), }); - src/services/keys.service.ts:151-153 (helper)Service method that makes the HTTP GET request to '/virtual-keys' to fetch virtual keys from the Portkey API.
async listVirtualKeys(): Promise<ListVirtualKeysResponse> { return this.get<ListVirtualKeysResponse>("/virtual-keys"); } - src/services/keys.service.ts:30-34 (helper)TypeScript interface for the list virtual keys API response.
export interface ListVirtualKeysResponse { object: "list"; total: number; data: VirtualKey[]; }