Read AI-gateway analytics, configs, virtual keys, workspaces and users; log request feedback.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
WRITES a feedback record into the Portkey account, attached to a request/trace by trace_id. Use for logging a quality score (typically -10..10) with an optional weight (0..1) and metadata. Portkey: POST /feedback.
Feedback score, typically -10..10.
The request/trace id to attach feedback to.
Relative weight of this feedback, 0..1.
Arbitrary metadata key/values.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
WRITES a feedback record into the Portkey account, attached to a request/trace by trace_id. Use for logging a quality score (typically -10..10) with an optional weight (0..1) and metadata. Portkey: POST /feedback.
| Argument | Type | Description |
|---|---|---|
| value* | number | Feedback score, typically -10..10. |
| weight | number | Relative weight of this feedback, 0..1. |
| metadata | object | Arbitrary metadata key/values. |
| trace_id* | string | The request/trace id to attach feedback to. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"trace_id",
"value"
],
"properties": {
"value": {
"type": "number",
"description": "Feedback score, typically -10..10."
},
"weight": {
"type": "number",
"description": "Relative weight of this feedback, 0..1."
},
"metadata": {
"type": "object",
"description": "Arbitrary metadata key/values.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"trace_id": {
"type": "string",
"description": "The request/trace id to attach feedback to."
}
}
}Get a time-series analytics graph for a single metric (cost, requests, tokens, latency, error-rate, cache-hit-rate, …) over a time window. Optionally scope by virtual keys, configs, or metadata. Portkey: GET /analytics/graphs/{metric}.
| Argument | Type | Description |
|---|---|---|
| metric* | string | Which metric graph to return. |
| configs | string | Comma-separated config slugs to scope the graph. |
| metadata | string | JSON string of metadata key/values to scope the graph. |
| total_units | string | Bucket size for the series, e.g. "day" or "hour". |
| virtual_keys | string | Comma-separated virtual key slugs to scope the graph. |
| time_of_generation_max* | string | End of the window (ISO8601, format YYYY-MM-DDTHH:MM:SS±HH:MM). |
| time_of_generation_min* | string | Start of the window (ISO8601, format YYYY-MM-DDTHH:MM:SS±HH:MM). |
Get grouped analytics (aggregated by models, users, or metadata) over a time window. Portkey: GET /analytics/groups/{group}.
| Argument | Type | Description |
|---|---|---|
| group* | string | Dimension to group the analytics by. |
| page_size | integer | Number of records per page. Default 50. |
| current_page | integer | Page number (0-based) for pagination. Default 0. |
| time_of_generation_max* | string | End of the window (ISO8601, format YYYY-MM-DDTHH:MM:SS±HH:MM). |
| time_of_generation_min* | string | Start of the window (ISO8601, format YYYY-MM-DDTHH:MM:SS±HH:MM). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"group",
"time_of_generation_min",
"time_of_generation_max"
],
"properties": {
"group": {
"enum": [
"models",
"users",
"metadata"
],
"type": "string",
"description": "Dimension to group the analytics by."
},
"page_size": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Number of records per page. Default 50."
},
"current_page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Page number (0-based) for pagination. Default 0."
},
"time_of_generation_max": {
"type": "string",
"description": "End of the window (ISO8601, format YYYY-MM-DDTHH:MM:SS±HH:MM)."
},
"time_of_generation_min": {
"type": "string",
"description": "Start of the window (ISO8601, format YYYY-MM-DDTHH:MM:SS±HH:MM)."
}
}
}Get a single API key's metadata by id (the secret is never returned). Portkey: GET /api-keys/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The API key id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The API key id."
}
}
}Get a single gateway config by slug (or id), including its routing rules. Portkey: GET /configs/{slug}.
| Argument | Type | Description |
|---|---|---|
| slug* | string | The config slug or id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "The config slug or id."
}
}
}Get a single user by id. Portkey: GET /users/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The user id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The user id."
}
}
}Get a single virtual key by slug, including its provider + limits. Portkey: GET /virtual-keys/{slug}.
| Argument | Type | Description |
|---|---|---|
| slug* | string | The virtual key slug. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "The virtual key slug."
}
}
}Get a single workspace by slug/id. Portkey: GET /workspaces/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The workspace slug or id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The workspace slug or id."
}
}
}List API keys in the organization/workspace (metadata only — secrets are never returned). Portkey: GET /api-keys.
| Argument | Type | Description |
|---|---|---|
| page_size | integer | Number of records per page. Default 50. |
| current_page | integer | Page number (0-based) for pagination. Default 0. |
| workspace_id | string | Scope keys to a workspace id/slug. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page_size": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Number of records per page. Default 50."
},
"current_page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Page number (0-based) for pagination. Default 0."
},
"workspace_id": {
"type": "string",
"description": "Scope keys to a workspace id/slug."
}
}
}List audit log entries (admin actions across the organization). Portkey: GET /audit-logs.
| Argument | Type | Description |
|---|---|---|
| page_size | integer | Number of records per page. Default 50. |
| current_page | integer | Page number (0-based) for pagination. Default 0. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page_size": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Number of records per page. Default 50."
},
"current_page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Page number (0-based) for pagination. Default 0."
}
}
}List gateway configs (routing/fallback/retry/cache rulesets applied to requests). Portkey: GET /configs.
| Argument | Type | Description |
|---|---|---|
| workspace_id | string | Scope configs to a workspace id/slug. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"workspace_id": {
"type": "string",
"description": "Scope configs to a workspace id/slug."
}
}
}List pending user invitations to the organization. Portkey: GET /user-invites.
| Argument | Type | Description |
|---|---|---|
| page_size | integer | Number of records per page. Default 50. |
| current_page | integer | Page number (0-based) for pagination. Default 0. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page_size": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Number of records per page. Default 50."
},
"current_page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Page number (0-based) for pagination. Default 0."
}
}
}List users in the organization. Filter by role or email. Portkey: GET /users.
| Argument | Type | Description |
|---|---|---|
| role | string | Filter users by role (e.g. admin, member). |
| string | Filter users by email address. | |
| page_size | integer | Number of records per page. Default 50. |
| current_page | integer | Page number (0-based) for pagination. Default 0. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"role": {
"type": "string",
"description": "Filter users by role (e.g. admin, member)."
},
"email": {
"type": "string",
"description": "Filter users by email address."
},
"page_size": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Number of records per page. Default 50."
},
"current_page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Page number (0-based) for pagination. Default 0."
}
}
}List virtual keys (the aliases that map to provider credentials + budget/rate limits used in requests). Portkey: GET /virtual-keys.
| Argument | Type | Description |
|---|---|---|
| page_size | integer | Number of records per page. Default 50. |
| current_page | integer | Page number (0-based) for pagination. Default 0. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page_size": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Number of records per page. Default 50."
},
"current_page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Page number (0-based) for pagination. Default 0."
}
}
}List members of a workspace (users + their roles). Portkey: GET /workspaces/{id}/members.
| Argument | Type | Description |
|---|---|---|
| id* | string | The workspace slug or id. |
| page_size | integer | Number of records per page. Default 50. |
| current_page | integer | Page number (0-based) for pagination. Default 0. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The workspace slug or id."
},
"page_size": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Number of records per page. Default 50."
},
"current_page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Page number (0-based) for pagination. Default 0."
}
}
}List workspaces in the organization. Portkey: GET /workspaces.
| Argument | Type | Description |
|---|---|---|
| page_size | integer | Number of records per page. Default 50. |
| current_page | integer | Page number (0-based) for pagination. Default 0. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page_size": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Number of records per page. Default 50."
},
"current_page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Page number (0-based) for pagination. Default 0."
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"metric",
"time_of_generation_min",
"time_of_generation_max"
],
"properties": {
"metric": {
"enum": [
"cost",
"requests",
"tokens",
"latency",
"error-rate",
"errors",
"status-codes",
"requests-per-user",
"rescued-requests",
"cache-hit-rate",
"cache-hit-latency",
"users",
"weighted-feedback"
],
"type": "string",
"description": "Which metric graph to return."
},
"configs": {
"type": "string",
"description": "Comma-separated config slugs to scope the graph."
},
"metadata": {
"type": "string",
"description": "JSON string of metadata key/values to scope the graph."
},
"total_units": {
"type": "string",
"description": "Bucket size for the series, e.g. \"day\" or \"hour\"."
},
"virtual_keys": {
"type": "string",
"description": "Comma-separated virtual key slugs to scope the graph."
},
"time_of_generation_max": {
"type": "string",
"description": "End of the window (ISO8601, format YYYY-MM-DDTHH:MM:SS±HH:MM)."
},
"time_of_generation_min": {
"type": "string",
"description": "Start of the window (ISO8601, format YYYY-MM-DDTHH:MM:SS±HH:MM)."
}
}
}