{
  "service": "openrouter",
  "displayName": "OpenRouter",
  "categories": [
    "AI",
    "Developer Tools"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "sk-or-v1-...",
      "description": "OpenRouter API key used with the Authorization Bearer header. Get it from https://openrouter.ai/settings/keys.",
      "extraFields": []
    }
  ],
  "homepageUrl": "https://openrouter.ai",
  "actions": [
    {
      "id": "openrouter.create_chat_completion",
      "service": "openrouter",
      "name": "create_chat_completion",
      "description": "Create an OpenRouter chat completion through the OpenAI-compatible `/chat/completions` endpoint.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "model": {
            "type": "string",
            "minLength": 1,
            "description": "The model ID to use."
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A JSON object returned by OpenRouter."
            },
            "description": "An ordered list of conversation messages.",
            "minItems": 1
          },
          "n": {
            "type": "integer",
            "minimum": 1,
            "description": "The number of choices to generate."
          },
          "stop": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "description": "A single stop sequence."
              },
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "minLength": 1,
                  "description": "A stop sequence."
                },
                "description": "Multiple stop sequences.",
                "minItems": 1
              }
            ],
            "description": "Stop sequences for generation."
          },
          "user": {
            "type": "string",
            "description": "The end user's unique identifier."
          },
          "top_p": {
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "description": "Nucleus sampling parameter."
          },
          "stream": {
            "type": "boolean",
            "description": "Whether to request a streaming response. Connector actions only support false or omitted."
          },
          "functions": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A JSON object returned by OpenRouter."
            },
            "description": "A list of JSON objects returned by OpenRouter."
          },
          "function_call": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "none",
                  "auto"
                ]
              },
              {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "A JSON object returned by OpenRouter."
              }
            ],
            "description": "Legacy function calling strategy converted to tool_choice at execution time."
          },
          "logit_bias": {
            "type": "object",
            "additionalProperties": {
              "type": "number",
              "description": "The bias value for this token."
            },
            "description": "Token bias map."
          },
          "max_tokens": {
            "type": "integer",
            "minimum": 1,
            "description": "The maximum number of output tokens."
          },
          "max_completion_tokens": {
            "type": "integer",
            "minimum": 1,
            "description": "New max output token field, taking precedence over max_tokens."
          },
          "temperature": {
            "type": "number",
            "minimum": 0,
            "maximum": 2,
            "description": "Sampling temperature."
          },
          "presence_penalty": {
            "type": "number",
            "minimum": -2,
            "maximum": 2,
            "description": "Presence penalty."
          },
          "frequency_penalty": {
            "type": "number",
            "minimum": -2,
            "maximum": 2,
            "description": "Frequency penalty."
          },
          "logprobs": {
            "type": "boolean",
            "description": "Whether to return token-level probabilities."
          },
          "top_logprobs": {
            "type": "integer",
            "minimum": 0,
            "maximum": 20,
            "description": "The number of top logprobs to return."
          },
          "tools": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A JSON object returned by OpenRouter."
            },
            "description": "A list of JSON objects returned by OpenRouter."
          },
          "tool_choice": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "none",
                  "auto",
                  "required"
                ]
              },
              {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "A JSON object returned by OpenRouter."
              }
            ],
            "description": "Tool selection strategy."
          },
          "response_format": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A JSON object returned by OpenRouter."
          },
          "modalities": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "description": "List of output modalities to request."
          },
          "models": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "description": "Candidate fallback model IDs."
          },
          "metadata": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A JSON object returned by OpenRouter."
          },
          "provider": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A JSON object returned by OpenRouter."
          },
          "plugins": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A JSON object returned by OpenRouter."
            },
            "description": "A list of JSON objects returned by OpenRouter."
          },
          "service_tier": {
            "type": "string",
            "description": "Requested service tier."
          },
          "session_id": {
            "type": "string",
            "description": "Session ID used to associate requests."
          },
          "parallel_tool_calls": {
            "type": "boolean",
            "description": "Whether to allow parallel tool calls."
          },
          "stream_options": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A JSON object returned by OpenRouter."
          },
          "reasoning": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A JSON object returned by OpenRouter."
          },
          "httpReferer": {
            "type": "string",
            "description": "The application URL sent in the HTTP-Referer header for OpenRouter attribution and analytics."
          },
          "xTitle": {
            "type": "string",
            "description": "The application display name sent in the X-Title header for OpenRouter console display."
          }
        },
        "additionalProperties": true,
        "required": [
          "model",
          "messages"
        ],
        "description": "Input parameters when creating an OpenRouter chat completion."
      },
      "outputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": true,
        "description": "A JSON object returned by OpenRouter."
      }
    },
    {
      "id": "openrouter.create_coinbase_charge",
      "service": "openrouter",
      "name": "create_coinbase_charge",
      "description": "Call OpenRouter's deprecated Coinbase charge endpoint for credits purchases. The upstream endpoint is currently deprecated and may return 410 Gone.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "number",
            "exclusiveMinimum": 0,
            "description": "The USD amount to top up."
          },
          "sender": {
            "type": "string",
            "minLength": 1,
            "description": "The wallet address that initiated the payment."
          },
          "chain_id": {
            "oneOf": [
              {
                "const": 1,
                "type": "number",
                "description": "Ethereum mainnet."
              },
              {
                "const": 137,
                "type": "number",
                "description": "Polygon."
              },
              {
                "const": 8453,
                "type": "number",
                "description": "Base."
              }
            ],
            "description": "The chain ID used to initiate the payment."
          },
          "httpReferer": {
            "type": "string",
            "description": "The application URL sent in the HTTP-Referer header for OpenRouter attribution and analytics."
          },
          "xTitle": {
            "type": "string",
            "description": "The application display name sent in the X-Title header for OpenRouter console display."
          }
        },
        "additionalProperties": false,
        "required": [
          "amount",
          "sender",
          "chain_id"
        ],
        "description": "Input parameters when creating a Coinbase deposit order."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A JSON object returned by OpenRouter."
          }
        },
        "additionalProperties": false,
        "description": "Returns the standard response for Coinbase charge results."
      }
    },
    {
      "id": "openrouter.create_message",
      "service": "openrouter",
      "name": "create_message",
      "description": "Create an OpenRouter Anthropic-format message through the `/messages` endpoint.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "model": {
            "type": "string",
            "minLength": 1,
            "description": "The model ID to use."
          },
          "max_tokens": {
            "type": "integer",
            "minimum": 1,
            "description": "The maximum number of output tokens."
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A JSON object returned by OpenRouter."
            },
            "description": "An ordered list of Anthropic-format messages.",
            "minItems": 1
          },
          "user": {
            "type": "string",
            "description": "The end user's unique identifier."
          },
          "tools": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A JSON object returned by OpenRouter."
            },
            "description": "A list of JSON objects returned by OpenRouter."
          },
          "top_k": {
            "type": "integer",
            "minimum": 0,
            "description": "Top-k sampling parameter."
          },
          "top_p": {
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "description": "Nucleus sampling parameter."
          },
          "models": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "description": "Candidate fallback model IDs."
          },
          "stream": {
            "type": "boolean",
            "description": "Whether to request a streaming response. Connector actions only support false or omitted."
          },
          "system": {
            "anyOf": [
              {
                "type": "string",
                "description": "System prompt text."
              },
              {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "A JSON object returned by OpenRouter."
                },
                "description": "Structured system prompt content blocks.",
                "minItems": 1
              }
            ],
            "description": "System prompt content."
          },
          "plugins": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A JSON object returned by OpenRouter."
            },
            "description": "A list of JSON objects returned by OpenRouter."
          },
          "metadata": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A JSON object returned by OpenRouter."
          },
          "output_config": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A JSON object returned by OpenRouter."
          },
          "provider": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A JSON object returned by OpenRouter."
          },
          "service_tier": {
            "type": "string",
            "description": "Requested service tier."
          },
          "session_id": {
            "type": "string",
            "description": "Session ID used to associate requests."
          },
          "stop_sequences": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "description": "Stop sequences for generation."
          },
          "temperature": {
            "type": "number",
            "minimum": 0,
            "maximum": 2,
            "description": "Sampling temperature."
          },
          "thinking": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A JSON object returned by OpenRouter."
          },
          "tool_choice": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "auto",
                  "any",
                  "none"
                ]
              },
              {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "A JSON object returned by OpenRouter."
              }
            ],
            "description": "Tool selection strategy."
          },
          "httpReferer": {
            "type": "string",
            "description": "The application URL sent in the HTTP-Referer header for OpenRouter attribution and analytics."
          },
          "xTitle": {
            "type": "string",
            "description": "The application display name sent in the X-Title header for OpenRouter console display."
          }
        },
        "additionalProperties": true,
        "required": [
          "model",
          "max_tokens",
          "messages"
        ],
        "description": "Input parameters when creating an OpenRouter Anthropic Messages request."
      },
      "outputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": true,
        "description": "A JSON object returned by OpenRouter."
      }
    },
    {
      "id": "openrouter.get_credits",
      "service": "openrouter",
      "name": "get_credits",
      "description": "Get the authenticated OpenRouter credit balance summary.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "This action requires no additional input parameters."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "total_credits": {
                "type": "number",
                "description": "Cumulative purchased credits."
              },
              "total_usage": {
                "type": "number",
                "description": "Cumulative credits used."
              }
            },
            "additionalProperties": true,
            "description": "Credit overview information."
          }
        },
        "additionalProperties": false,
        "description": "Returns the standard response for an OpenRouter credit overview."
      }
    },
    {
      "id": "openrouter.get_current_key",
      "service": "openrouter",
      "name": "get_current_key",
      "description": "Get metadata for the currently authenticated OpenRouter API key.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "httpReferer": {
            "type": "string",
            "description": "The application URL sent in the HTTP-Referer header for OpenRouter attribution and analytics."
          },
          "xTitle": {
            "type": "string",
            "description": "The application display name sent in the X-Title header for OpenRouter console display."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters when querying the current API key information."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A JSON object returned by OpenRouter."
          }
        },
        "additionalProperties": false,
        "description": "Returns metadata for the current OpenRouter API key."
      }
    },
    {
      "id": "openrouter.get_generation",
      "service": "openrouter",
      "name": "get_generation",
      "description": "Get request and usage metadata for a specific OpenRouter generation.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The generation ID to query."
          }
        },
        "additionalProperties": false,
        "required": [
          "id"
        ],
        "description": "Input parameters when querying generation metadata."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A JSON object returned by OpenRouter."
          }
        },
        "additionalProperties": false,
        "description": "Returns the standard response with generation metadata."
      }
    },
    {
      "id": "openrouter.get_models_count",
      "service": "openrouter",
      "name": "get_models_count",
      "description": "Get the total number of OpenRouter models, optionally filtered by output modalities.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "outputModalities": {
            "type": "string",
            "minLength": 1,
            "description": "Filter statistics by output modality, such as text, image, audio, embeddings, or all."
          },
          "httpReferer": {
            "type": "string",
            "description": "The application URL sent in the HTTP-Referer header for OpenRouter attribution and analytics."
          },
          "xTitle": {
            "type": "string",
            "description": "The application display name sent in the X-Title header for OpenRouter console display."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters when getting the number of models."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "count": {
                "type": "integer",
                "description": "The current number of eligible models."
              }
            },
            "additionalProperties": false,
            "description": "Model count result."
          }
        },
        "additionalProperties": false,
        "description": "Returns the standard response for the number of models."
      }
    },
    {
      "id": "openrouter.list_available_models",
      "service": "openrouter",
      "name": "list_available_models",
      "description": "List the available OpenRouter models, or return the RSS feed when requested.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "category": {
            "type": "string",
            "minLength": 1,
            "description": "Filter the model list by use case classification."
          },
          "supportedParameters": {
            "type": "string",
            "minLength": 1,
            "description": "Filter the model list by supported parameter names. Multiple parameters can be separated by commas."
          },
          "outputModalities": {
            "type": "string",
            "minLength": 1,
            "description": "Filter the list of models by output modality, such as text, image, audio, embeddings, or all."
          },
          "useRss": {
            "type": "boolean",
            "description": "Whether to return RSS XML instead of JSON."
          },
          "useRssChatLinks": {
            "type": "boolean",
            "description": "Whether to use the chat page link instead of the model details page link when returning RSS."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters when listing available models for OpenRouter."
      },
      "outputSchema": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "data": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "A JSON object returned by OpenRouter."
                },
                "description": "A list of JSON objects returned by OpenRouter."
              }
            },
            "additionalProperties": false,
            "description": "Standard OpenRouter response that returns a list of models."
          },
          {
            "type": "object",
            "properties": {
              "rss": {
                "type": "string",
                "description": "RSS XML string returned when useRss=true."
              }
            },
            "additionalProperties": false,
            "description": "RSS output format."
          }
        ],
        "description": "Response when listing available OpenRouter models."
      }
    },
    {
      "id": "openrouter.list_embedding_models",
      "service": "openrouter",
      "name": "list_embedding_models",
      "description": "List the embedding models available through OpenRouter.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "httpReferer": {
            "type": "string",
            "description": "The application URL sent in the HTTP-Referer header for OpenRouter attribution and analytics."
          },
          "xTitle": {
            "type": "string",
            "description": "The application display name sent in the X-Title header for OpenRouter console display."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters when listing embedding models."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A JSON object returned by OpenRouter."
            },
            "description": "A list of JSON objects returned by OpenRouter."
          }
        },
        "additionalProperties": false,
        "description": "Standard OpenRouter response that returns a list of models."
      }
    },
    {
      "id": "openrouter.list_model_endpoints",
      "service": "openrouter",
      "name": "list_model_endpoints",
      "description": "List the currently available endpoints for a specific OpenRouter model.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "author": {
            "type": "string",
            "minLength": 1,
            "description": "Model author or organization name."
          },
          "slug": {
            "type": "string",
            "minLength": 1,
            "description": "Model slug."
          }
        },
        "additionalProperties": false,
        "required": [
          "author",
          "slug"
        ],
        "description": "Input parameters when listing endpoints for a specific model."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A JSON object returned by OpenRouter."
          }
        },
        "additionalProperties": false,
        "description": "Returns the standard response for the specified model endpoints."
      }
    },
    {
      "id": "openrouter.list_providers",
      "service": "openrouter",
      "name": "list_providers",
      "description": "List the model providers currently available through OpenRouter.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "This action requires no additional input parameters."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A JSON object returned by OpenRouter."
            },
            "description": "A list of JSON objects returned by OpenRouter."
          }
        },
        "additionalProperties": false,
        "description": "Returns a standard response with a list of providers."
      }
    },
    {
      "id": "openrouter.list_user_models",
      "service": "openrouter",
      "name": "list_user_models",
      "description": "List models filtered by the current user's OpenRouter routing preferences, privacy settings, and guardrails.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "httpReferer": {
            "type": "string",
            "description": "The application URL sent in the HTTP-Referer header for OpenRouter attribution and analytics."
          },
          "xTitle": {
            "type": "string",
            "description": "The application display name sent in the X-Title header for OpenRouter console display."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters when listing models visible to the current user."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A JSON object returned by OpenRouter."
            },
            "description": "A list of JSON objects returned by OpenRouter."
          }
        },
        "additionalProperties": false,
        "description": "Standard OpenRouter response that returns a list of models."
      }
    },
    {
      "id": "openrouter.list_zdr_endpoints",
      "service": "openrouter",
      "name": "list_zdr_endpoints",
      "description": "Preview the OpenRouter endpoints that remain available under Zero Data Retention.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "httpReferer": {
            "type": "string",
            "description": "The application URL sent in the HTTP-Referer header for OpenRouter attribution and analytics."
          },
          "xTitle": {
            "type": "string",
            "description": "The application display name sent in the X-Title header for OpenRouter console display."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters when listing ZDR endpoints."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A JSON object returned by OpenRouter."
            },
            "description": "A list of JSON objects returned by OpenRouter."
          }
        },
        "additionalProperties": false,
        "description": "Returns the standard response for ZDR endpoints."
      }
    }
  ]
}
