list_virtual_keys
Retrieve all virtual keys in your Portkey organization to view usage limits, rate limits, and status information.
Instructions
Retrieve all virtual keys in your Portkey organization, including their usage limits, rate limits, and status
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/index.ts:230-268 (handler)MCP tool handler function for 'list_virtual_keys' that fetches data via portkeyService and returns formatted JSON text response.async () => { try { const virtualKeys = await portkeyService.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) }] }; } catch (error) { return { content: [{ type: "text", text: `Error fetching virtual keys: ${error instanceof Error ? error.message : 'Unknown error'}` }] }; } }
- src/index.ts:226-269 (registration)Registration of the 'list_virtual_keys' tool using server.tool, including name, description, empty input schema, and handler reference.server.tool( "list_virtual_keys", "Retrieve all virtual keys in your Portkey organization, including their usage limits, rate limits, and status", {}, async () => { try { const virtualKeys = await portkeyService.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) }] }; } catch (error) { return { content: [{ type: "text", text: `Error fetching virtual keys: ${error instanceof Error ? error.message : 'Unknown error'}` }] }; } } );
- TypeScript interface defining the structure of the listVirtualKeys API response.interface ListVirtualKeysResponse { object: 'list'; total: number; data: VirtualKey[]; }
- PortkeyService method that performs the HTTP GET request to retrieve virtual keys from the Portkey API.async listVirtualKeys(): Promise<ListVirtualKeysResponse> { try { const response = await fetch(`${this.baseUrl}/virtual-keys`, { method: 'GET', headers: { 'x-portkey-api-key': this.apiKey, 'Accept': 'application/json' } }); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } return await response.json() as ListVirtualKeysResponse; } catch (error) { console.error('PortkeyService Error:', error); throw new Error('Failed to fetch virtual keys from Portkey API'); } }