mirror of
https://github.com/tiennm99/litellm.git
synced 2026-07-29 04:20:42 +00:00
* fix: guard prisma import in config_override_endpoints to fix proxy import without prisma
Top-level `from prisma.errors import RecordNotFoundError` was introduced in the
Hashicorp Vault feature PR and breaks `import litellm.proxy.proxy_server` when
prisma is not installed (e.g. plain `pip install litellm[proxy]` in CI).
Wraps the import in try/except ImportError so the module loads cleanly when
prisma is absent; the except branch aliases RecordNotFoundError to Exception,
which is safe because the code path that catches it only logs a debug message.
* fix: sync poetry.lock with pyproject.toml (litellm-proxy-extras 0.4.51 → 0.4.52)
poetry.lock was regenerated for 0.4.51 but pyproject.toml was subsequently
bumped to 0.4.52 without re-running poetry lock. This caused the
proxy_e2e_azure_batches_tests CI job to fail at the Install Dependencies step
('pyproject.toml changed significantly since poetry.lock was last generated'),
preventing all 3 tests in that job from running.
* Revert "fix: sync poetry.lock with pyproject.toml (litellm-proxy-extras 0.4.51 → 0.4.52)"
This reverts commit 249ec7c9c2.
* feat(ui): add OpenAPI MCP server support with popular API quick-picker
- New `openapi_registry.json` with 10 well-known APIs (GitHub, Atlassian, Figma, Google, Stripe, HubSpot, Notion, Slack, Shopify, Snowflake) — each with validated spec URLs and OAuth 2.0 endpoints
- Backend endpoint `GET /v1/mcp/registry.json` to serve the registry (reads fresh from disk)
- `OpenAPIQuickPicker` component: logo grid for popular APIs with letter fallback for broken images
- `OpenAPIFormSection` component: encapsulates picker + spec URL input as a clean unit
- When selecting a preset, spec URL and OAuth fields are pre-filled automatically
- Fixed `useTestMCPConnection`: for OpenAPI transport, tools load from the spec as soon as the URL is set — no auth type or OAuth token required
- Validated all spec URLs are reachable; removed Linear (GraphQL-only, no REST spec)
* feat(ui): add curated key tools preview for OpenAPI MCP servers
When selecting a popular API from the quick-picker, show the 8 most
useful MCP tools for that API in a collapsible preview card. First 4
are shown by default; clicking "expand" shows all 8 with descriptions
on hover.
- Added `key_tools` array (8 tools each) to all 10 APIs in openapi_registry.json
- New `KeyToolsPreview` component in OpenAPIFormSection with expand/collapse
- Extended `OpenAPIRegistryEntry` type with `key_tools?: OpenAPIKeyTool[]`
* fix(ui): move key tools preview inside Tool Configuration card
* fix(ui): pin suggested tools at top of tool list, fix TDZ crash, add per-section enable/disable
* fix: address greptile review - fix registry spec URLs, remove redundant dep, add error handling
* fix: restore enable/disable all buttons for non-preset MCP servers
* refactor: extract ToolRow component, move handlers to component body, fix key props
* fix: remove rewrites() from next.config.mjs (incompatible with output: export), fix OAuth field paths
* fix: enable/disable all operates on full tool set, not just filtered subset
* fix: cache openapi registry, make oauth optional, reset preset auto-select on new preset
* fix: use official Shopify API specs repo, move lru_cache error handling to caller
* fix: use Shopify 2023-10 REST spec, co-locate rest section header with tool rows
* fix: guard fuzzy-match against empty keywords, remove placeholder OAuth URLs for Shopify/Snowflake
* fix: lift useTestMCPConnection to parent to eliminate duplicate requests, clear keyTools on manual spec URL edit
* fix: clear stale OAuth fields when switching to non-OAuth preset, show expected tools on empty spec
* fix: gate registry fetch on modal visibility, use resetFields to clear OAuth fields
223 lines
13 KiB
JSON
223 lines
13 KiB
JSON
{
|
|
"apis": [
|
|
{
|
|
"name": "github",
|
|
"title": "GitHub",
|
|
"description": "Repos, issues, PRs, and workflow automation via the GitHub REST API",
|
|
"icon_url": "https://cdn.simpleicons.org/github",
|
|
"spec_url": "https://raw.githubusercontent.com/github/rest-api-description/main/descriptions/api.github.com/api.github.com.json",
|
|
"oauth": {
|
|
"authorization_url": "https://github.com/login/oauth/authorize",
|
|
"token_url": "https://github.com/login/oauth/access_token",
|
|
"pkce": false,
|
|
"docs_url": "https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/creating-an-oauth-app"
|
|
},
|
|
"key_tools": [
|
|
{ "name": "list_repos", "description": "List repositories for a user or organization" },
|
|
{ "name": "get_file_contents", "description": "Read a file or directory from a repository" },
|
|
{ "name": "list_issues", "description": "List issues in a repository with filters" },
|
|
{ "name": "create_issue", "description": "Open a new issue in a repository" },
|
|
{ "name": "list_pull_requests", "description": "List open and merged pull requests" },
|
|
{ "name": "create_pull_request", "description": "Open a pull request between branches" },
|
|
{ "name": "search_code", "description": "Search code across all GitHub repositories" },
|
|
{ "name": "list_commits", "description": "List commits with authors and messages" }
|
|
]
|
|
},
|
|
{
|
|
"name": "atlassian",
|
|
"title": "Atlassian",
|
|
"description": "Jira issues, Confluence pages, and project management",
|
|
"icon_url": "https://cdn.simpleicons.org/atlassian",
|
|
"spec_url": "https://dac-static.atlassian.com/cloud/jira/platform/swagger-v3.v3.json",
|
|
"oauth": {
|
|
"authorization_url": "https://auth.atlassian.com/authorize",
|
|
"token_url": "https://auth.atlassian.com/oauth/token",
|
|
"pkce": true,
|
|
"docs_url": "https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps/"
|
|
},
|
|
"key_tools": [
|
|
{ "name": "search_issues", "description": "Search Jira issues using JQL queries" },
|
|
{ "name": "get_issue", "description": "Get full details of a Jira issue by key" },
|
|
{ "name": "create_issue", "description": "Create a new Jira issue or bug report" },
|
|
{ "name": "update_issue", "description": "Update issue fields like status, assignee, priority" },
|
|
{ "name": "add_comment", "description": "Add a comment to an issue" },
|
|
{ "name": "transition_issue", "description": "Move an issue through the workflow (e.g. In Progress → Done)" },
|
|
{ "name": "list_projects", "description": "List all Jira projects in the workspace" },
|
|
{ "name": "get_project", "description": "Get project details, board, and sprint info" }
|
|
]
|
|
},
|
|
{
|
|
"name": "figma",
|
|
"title": "Figma",
|
|
"description": "Design files, components, prototypes, and comments",
|
|
"icon_url": "https://cdn.simpleicons.org/figma",
|
|
"spec_url": "https://raw.githubusercontent.com/figma/rest-api-spec/main/openapi/openapi.yaml",
|
|
"oauth": {
|
|
"authorization_url": "https://www.figma.com/oauth",
|
|
"token_url": "https://www.figma.com/api/oauth/token",
|
|
"pkce": false,
|
|
"docs_url": "https://www.figma.com/developers/api#oauth2"
|
|
},
|
|
"key_tools": [
|
|
{ "name": "get_file", "description": "Get the full node tree and structure of a Figma file" },
|
|
{ "name": "get_file_nodes", "description": "Get specific nodes by ID from a Figma file" },
|
|
{ "name": "get_image", "description": "Export nodes as PNG, SVG, or PDF" },
|
|
{ "name": "get_comments", "description": "List all comments on a Figma file" },
|
|
{ "name": "post_comment", "description": "Add a comment to a file or specific node" },
|
|
{ "name": "get_team_projects", "description": "List all projects belonging to a team" },
|
|
{ "name": "get_project_files", "description": "List all Figma files in a project" },
|
|
{ "name": "get_file_versions", "description": "Get the version history of a file" }
|
|
]
|
|
},
|
|
{
|
|
"name": "gmail",
|
|
"title": "Gmail",
|
|
"description": "Read, send, and manage Gmail messages and threads",
|
|
"icon_url": "https://cdn.simpleicons.org/gmail",
|
|
"spec_url": "https://raw.githubusercontent.com/APIs-guru/openapi-directory/main/APIs/googleapis.com/gmail/v1/openapi.yaml",
|
|
"oauth": {
|
|
"authorization_url": "https://accounts.google.com/o/oauth2/v2/auth",
|
|
"token_url": "https://oauth2.googleapis.com/token",
|
|
"pkce": true,
|
|
"docs_url": "https://developers.google.com/gmail/api/auth/about-auth"
|
|
},
|
|
"key_tools": [
|
|
{ "name": "list_messages", "description": "List Gmail messages with search filters" },
|
|
{ "name": "get_message", "description": "Get the full content of a specific message" },
|
|
{ "name": "send_message", "description": "Send an email via Gmail" },
|
|
{ "name": "create_draft", "description": "Create a draft email" },
|
|
{ "name": "list_labels", "description": "List all labels in the mailbox" },
|
|
{ "name": "modify_message", "description": "Add or remove labels from a message" },
|
|
{ "name": "list_threads", "description": "List email threads" },
|
|
{ "name": "trash_message", "description": "Move a message to trash" }
|
|
]
|
|
},
|
|
{
|
|
"name": "stripe",
|
|
"title": "Stripe",
|
|
"description": "Payments, customers, subscriptions, and billing",
|
|
"icon_url": "https://cdn.simpleicons.org/stripe",
|
|
"spec_url": "https://raw.githubusercontent.com/stripe/openapi/master/openapi/spec3.json",
|
|
"oauth": {
|
|
"authorization_url": "https://connect.stripe.com/oauth/authorize",
|
|
"token_url": "https://connect.stripe.com/oauth/token",
|
|
"pkce": false,
|
|
"docs_url": "https://stripe.com/docs/connect/oauth-reference"
|
|
},
|
|
"key_tools": [
|
|
{ "name": "list_customers", "description": "List and search Stripe customers" },
|
|
{ "name": "create_customer", "description": "Create a new Stripe customer record" },
|
|
{ "name": "create_payment_intent", "description": "Create a payment intent for a charge" },
|
|
{ "name": "list_subscriptions", "description": "List active and cancelled subscriptions" },
|
|
{ "name": "create_subscription", "description": "Subscribe a customer to a price plan" },
|
|
{ "name": "list_invoices", "description": "List invoices for a customer or subscription" },
|
|
{ "name": "create_refund", "description": "Refund a charge fully or partially" },
|
|
{ "name": "list_products", "description": "List products and their pricing plans" }
|
|
]
|
|
},
|
|
{
|
|
"name": "hubspot",
|
|
"title": "HubSpot",
|
|
"description": "CRM contacts and properties via the HubSpot Contacts API",
|
|
"icon_url": "https://cdn.simpleicons.org/hubspot",
|
|
"spec_url": "https://raw.githubusercontent.com/HubSpot/HubSpot-public-api-spec-collection/main/PublicApiSpecs/CRM/Contacts/Rollouts/424/v3/contacts.json",
|
|
"oauth": {
|
|
"authorization_url": "https://app.hubspot.com/oauth/authorize",
|
|
"token_url": "https://api.hubspot.com/oauth/v1/token",
|
|
"pkce": false,
|
|
"docs_url": "https://developers.hubspot.com/docs/api/oauth-quickstart-guide"
|
|
},
|
|
"key_tools": [
|
|
{ "name": "search_contacts", "description": "Search CRM contacts by email, name, or custom properties" },
|
|
{ "name": "create_contact", "description": "Create a new CRM contact with properties" },
|
|
{ "name": "update_contact", "description": "Update contact properties like lifecycle stage or owner" },
|
|
{ "name": "get_contact", "description": "Get full details of a specific contact" },
|
|
{ "name": "archive_contact", "description": "Archive (soft-delete) a contact record" },
|
|
{ "name": "merge_contacts", "description": "Merge two duplicate contact records" },
|
|
{ "name": "list_contacts", "description": "List all contacts with pagination" },
|
|
{ "name": "get_contact_properties", "description": "Get available contact property definitions" }
|
|
]
|
|
},
|
|
{
|
|
"name": "notion",
|
|
"title": "Notion",
|
|
"description": "Pages, databases, and workspace content in Notion",
|
|
"icon_url": "https://cdn.simpleicons.org/notion",
|
|
"spec_url": "https://raw.githubusercontent.com/APIs-guru/openapi-directory/main/APIs/notion.com/1.0.0/openapi.yaml",
|
|
"oauth": {
|
|
"authorization_url": "https://api.notion.com/v1/oauth/authorize",
|
|
"token_url": "https://api.notion.com/v1/oauth/token",
|
|
"pkce": false,
|
|
"docs_url": "https://developers.notion.com/docs/authorization"
|
|
},
|
|
"key_tools": [
|
|
{ "name": "search", "description": "Search pages and databases across the workspace" },
|
|
{ "name": "get_page", "description": "Get a page and its properties" },
|
|
{ "name": "create_page", "description": "Create a new page inside a database or as a subpage" },
|
|
{ "name": "update_page", "description": "Update page properties (title, status, dates, etc.)" },
|
|
{ "name": "query_database", "description": "Query a database with filters and sorts" },
|
|
{ "name": "create_database_item", "description": "Add a new row/item to a Notion database" },
|
|
{ "name": "append_block_children", "description": "Append content blocks (text, bullets, code) to a page" },
|
|
{ "name": "get_database", "description": "Get a database schema including all property types" }
|
|
]
|
|
},
|
|
{
|
|
"name": "slack",
|
|
"title": "Slack",
|
|
"description": "Channels, messages, users, and workspace management",
|
|
"icon_url": "https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/slack.svg",
|
|
"spec_url": "https://raw.githubusercontent.com/slackapi/slack-api-specs/master/web-api/slack_web_openapi_v2.json",
|
|
"oauth": {
|
|
"authorization_url": "https://slack.com/oauth/v2/authorize",
|
|
"token_url": "https://slack.com/api/oauth.v2.access",
|
|
"pkce": false,
|
|
"docs_url": "https://api.slack.com/authentication/oauth-v2"
|
|
},
|
|
"key_tools": [
|
|
{ "name": "chat_post_message", "description": "Send a message to a channel or DM" },
|
|
{ "name": "conversations_history", "description": "Get message history from a channel" },
|
|
{ "name": "conversations_list", "description": "List all public and private channels" },
|
|
{ "name": "conversations_replies", "description": "Get replies in a message thread" },
|
|
{ "name": "users_list", "description": "List all members of the Slack workspace" },
|
|
{ "name": "search_messages", "description": "Full-text search across all messages" },
|
|
{ "name": "files_upload", "description": "Upload a file and share it in a channel" },
|
|
{ "name": "reactions_add", "description": "Add an emoji reaction to a message" }
|
|
]
|
|
},
|
|
{
|
|
"name": "shopify",
|
|
"title": "Shopify",
|
|
"description": "Products, orders, customers, and store management via Shopify Admin REST API (requires your store subdomain)",
|
|
"icon_url": "https://cdn.simpleicons.org/shopify",
|
|
"spec_url": "https://raw.githubusercontent.com/Shopify/shopify-api-specs/main/admin/rest/2023-10/openapi.json",
|
|
"key_tools": [
|
|
{ "name": "list_products", "description": "List products with variants, pricing, and inventory" },
|
|
{ "name": "get_product", "description": "Get full product details including all variants" },
|
|
{ "name": "list_orders", "description": "List orders with status, customer, and line item filters" },
|
|
{ "name": "get_order", "description": "Get full order details including shipping and payment" },
|
|
{ "name": "list_customers", "description": "List customers with order history and tags" },
|
|
{ "name": "update_order", "description": "Update order notes, tags, or shipping address" },
|
|
{ "name": "create_fulfillment", "description": "Fulfill an order with tracking info" },
|
|
{ "name": "list_inventory_levels", "description": "Get stock levels across locations" }
|
|
]
|
|
},
|
|
{
|
|
"name": "snowflake",
|
|
"title": "Snowflake",
|
|
"description": "Data warehouse queries, database operations, and analytics via the Snowflake SQL API",
|
|
"icon_url": "https://cdn.simpleicons.org/snowflake",
|
|
"spec_url": "https://raw.githubusercontent.com/snowflakedb/snowflake-rest-api-specs/refs/heads/main/specifications/sqlapi.yaml",
|
|
"key_tools": [
|
|
{ "name": "execute_statement", "description": "Execute a SQL statement and get results" },
|
|
{ "name": "fetch_results", "description": "Fetch paginated results from a running query" },
|
|
{ "name": "cancel_statement", "description": "Cancel a running query by statement handle" },
|
|
{ "name": "list_databases", "description": "List all accessible databases in the account" },
|
|
{ "name": "list_schemas", "description": "List all schemas within a database" },
|
|
{ "name": "list_tables", "description": "List tables and views in a schema" },
|
|
{ "name": "describe_table", "description": "Get column definitions and data types for a table" },
|
|
{ "name": "list_warehouses", "description": "List virtual warehouses and their current status" }
|
|
]
|
|
}
|
|
]
|
|
}
|