Skip to main content
Glama

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
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • 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'); } }

Latest Blog Posts

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/r-huijts/portkey-admin-mcp-server'

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