Conversation
|
|
Caution Review failedThe pull request is closed. 📝 Walkthrough""" WalkthroughNew documentation pages were added under the "AI Code Gen" section, introducing integration guides for Cursor, Windsurf, and Unkey MCP with Unkey's APIs. The documentation navigation JSON was updated to include a new "AI Code Gen" group, restructure migration pages, and add icons to various navigation groups. Changes
Suggested reviewers
📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (1)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
|
Thank you for following the naming conventions for pull request titles! 🙏 |
|
The latest updates on your projects. Learn more about Vercel for Git ↗︎ 2 Skipped Deployments
|
There was a problem hiding this comment.
Actionable comments posted: 3
📜 Review details
Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro
📒 Files selected for processing (5)
apps/docs/ai-code-gen/cursor.mdx(1 hunks)apps/docs/ai-code-gen/overview.mdx(1 hunks)apps/docs/ai-code-gen/unkey-mcp.mdx(1 hunks)apps/docs/ai-code-gen/windsurf.mdx(1 hunks)apps/docs/docs.json(8 hunks)
🧰 Additional context used
🧠 Learnings (5)
apps/docs/ai-code-gen/cursor.mdx (2)
Learnt from: ogzhanolguncu
PR: unkeyed/unkey#2872
File: apps/dashboard/lib/trpc/routers/ratelimit/createNamespace.ts:36-39
Timestamp: 2025-04-08T09:34:24.576Z
Learning: In the Unkey dashboard, when making database queries involving workspaces, use `ctx.workspace.id` directly instead of fetching the workspace separately for better performance and security.
Learnt from: ogzhanolguncu
PR: unkeyed/unkey#3321
File: apps/dashboard/lib/trpc/routers/authorization/roles/keys/schema-with-helpers.ts:5-8
Timestamp: 2025-06-18T12:28:10.449Z
Learning: In the unkey dashboard application, API validation for pagination limits is controlled at the UI level rather than requiring additional server-side validation, as the APIs are internal and protected by UI logic.
apps/docs/ai-code-gen/overview.mdx (2)
Learnt from: CR
PR: unkeyed/unkey#0
File: go/deploy/CLAUDE.md:0-0
Timestamp: 2025-07-09T08:42:29.316Z
Learning: Applies to go/deploy/**/*.{go,js,ts,tsx,py,sh,md,txt,json,yaml,yml,ini,rb,java,c,cpp,h,cs,rs,php,html,css,scss,xml} : Use `AIDEV-NOTE:`, `AIDEV-TODO:`, `AIDEV-BUSINESS_RULE:`, or `AIDEV-QUESTION:` (all-caps prefix) as anchor comments aimed at AI and developers.
Learnt from: Flo4604
PR: unkeyed/unkey#3421
File: go/apps/api/openapi/openapi.yaml:196-200
Timestamp: 2025-07-03T05:58:10.699Z
Learning: In the Unkey codebase, OpenAPI 3.1 is used, which allows sibling keys (such as `description`) alongside `$ref` in schema objects. Do not flag this as an error in future reviews.
apps/docs/docs.json (1)
Learnt from: CR
PR: unkeyed/unkey#0
File: go/deploy/CLAUDE.md:0-0
Timestamp: 2025-07-09T08:42:29.316Z
Learning: Applies to go/deploy/**/*.{go,js,ts,tsx,py,sh,md,txt,json,yaml,yml,ini,rb,java,c,cpp,h,cs,rs,php,html,css,scss,xml} : Update relevant anchors when modifying associated code.
apps/docs/ai-code-gen/windsurf.mdx (4)
Learnt from: CR
PR: unkeyed/unkey#0
File: go/deploy/CLAUDE.md:0-0
Timestamp: 2025-07-09T08:42:29.316Z
Learning: Applies to go/deploy/**/*.{go,js,ts,tsx,py,sh,md,txt,json,yaml,yml,ini,rb,java,c,cpp,h,cs,rs,php,html,css,scss,xml} : Use `AIDEV-NOTE:`, `AIDEV-TODO:`, `AIDEV-BUSINESS_RULE:`, or `AIDEV-QUESTION:` (all-caps prefix) as anchor comments aimed at AI and developers.
Learnt from: CR
PR: unkeyed/unkey#0
File: go/deploy/CLAUDE.md:0-0
Timestamp: 2025-07-09T08:42:29.316Z
Learning: Applies to go/deploy/**/*.{go,js,ts,tsx,py,sh,md,txt,json,yaml,yml,ini,rb,java,c,cpp,h,cs,rs,php,html,css,scss,xml} : Make sure to add relevant anchor comments whenever a file or piece of code is too complex, very important, confusing, or could have a bug.
Learnt from: MichaelUnkey
PR: unkeyed/unkey#3439
File: apps/engineering/content/design/components/dialogs/dialog-container.mdx:103-111
Timestamp: 2025-07-08T12:47:17.841Z
Learning: In component documentation files (e.g., `.mdx` files in `apps/engineering/content/design/components/`), the Accessibility section is included in the standard template and should not be removed from component documentation.
Learnt from: Devansh-Baghel
PR: unkeyed/unkey#2452
File: oss.gg/7_create_a_template.md:42-42
Timestamp: 2024-10-15T19:57:16.520Z
Learning: In Hono & Cloudflare Workers templates, the 'Setup and Installation' section in the README serves as the quickstart guide.
apps/docs/ai-code-gen/unkey-mcp.mdx (2)
Learnt from: CR
PR: unkeyed/unkey#0
File: go/deploy/CLAUDE.md:0-0
Timestamp: 2025-07-09T08:42:29.316Z
Learning: Applies to go/deploy/**/*.{go,js,ts,tsx,py,sh,md,txt,json,yaml,yml,ini,rb,java,c,cpp,h,cs,rs,php,html,css,scss,xml} : Use `AIDEV-NOTE:`, `AIDEV-TODO:`, `AIDEV-BUSINESS_RULE:`, or `AIDEV-QUESTION:` (all-caps prefix) as anchor comments aimed at AI and developers.
Learnt from: ogzhanolguncu
PR: unkeyed/unkey#3321
File: apps/dashboard/lib/trpc/routers/authorization/roles/keys/schema-with-helpers.ts:5-8
Timestamp: 2025-06-18T12:28:10.449Z
Learning: In the unkey dashboard application, API validation for pagination limits is controlled at the UI level rather than requiring additional server-side validation, as the APIs are internal and protected by UI logic.
🪛 LanguageTool
apps/docs/ai-code-gen/cursor.mdx
[grammar] ~7-~7: Use correct spacing
Context: ...s mode: "wide" --- # Using Cursor with Unkey Cursor is an AI-powered code editor tha...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~9-~9: There might be a problem here.
Context: ...ations with API key management and rate limiting. ## Prerequisites ## Getting Started ### 1. Set Up Your Unk...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~13-~13: Use correct spacing
Context: ...limiting. ## Prerequisites ## Getting Started ### 1. Set Up Your Unkey Workspace First, ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~15-~15: Use correct spacing
Context: ...tting Started ### 1. Set Up Your Unkey Workspace First, create your Unkey workspace and ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~17-~17: Use correct spacing
Context: ...e your Unkey workspace and get your API keys: Navigate to the Unkey Dashboard and create a new API for your project. Go to Settings > Root Keys and create a new root key with the necessary permissions. Copy your API ID from the dashboard - you'll need this for generating API keys. ### 2. Set Up Unkey MCP Server (Optional) ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~33-~33: Use correct spacing
Context: .../Steps> ### 2. Set Up Unkey MCP Server (Optional) Cursor supports the Model Context Proto...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~35-~35: Use correct spacing
Context: ...ur Unkey workspace for more intelligent suggestions. #### Install Unkey MCP Server 1. **Configur...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~37-~37: Use correct spacing
Context: ...nt suggestions. #### Install Unkey MCP Server 1. Configure the MCP Server Create o...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~39-~39: Use correct spacing
Context: ...nkey MCP Server 1. Configure the MCP Server Create or update your Cursor configurat...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~41-~41: Use correct spacing
Context: ...r configuration file with the Unkey MCP server: json { "mcpServers": { "Unkey": { "command": "npx", "args": [ "mcp-remote", "https://mcp.unkey.com/mcp/v1", "--header", "MCP-UNKEY-BEARER-AUTH:${UNKEY_ROOT_KEY}" ] } } } For rate limiting specific operations, ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~59-~59: Use correct spacing
Context: ...iting specific operations, you can also add: json { "mcpServers": { "UnkeyRateLimiting": { "command": "npx", "args": [ "mcp-remote", "https://mcp.unkey.com/mcp/ratelimits/", "--header", "MCP-UNKEY-V2-ROOT-KEY:${UNKEY_ROOT_KEY}" ] } } } 2. Set Environment Variable ```bash ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~77-~77: Use correct spacing
Context: ... } } 2. **Set Environment Variable** bash export UNKEY_ROOT_KEY="your_root_key_here" ``` 3. Restart Cursor Restart Cursor to ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~83-~83: Use correct spacing
Context: ...our_root_key_here" ``` 3. Restart Cursor Restart Cursor to load the MCP server c...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~85-~85: Use correct spacing
Context: ... Restart Cursor to load the MCP server configuration. ## Tips and Tricks for Cursor with Unkey ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~87-~87: Use correct spacing
Context: ...on. ## Tips and Tricks for Cursor with Unkey ### 1. Keep Your Requests Small When worki...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~89-~89: Use correct spacing
Context: ...r with Unkey ### 1. Keep Your Requests Small When working with Cursor, break down co...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~91-~91: There might be a problem here.
Context: ...own complex tasks into smaller, focused requests: Good: Create a function to verify an API key with Unkey that returns a boolean Better: Create a TypeScript function that: - Takes an API key string as input - Uses @unkey/api to verify the key - Returns a boolean indicating if the key is valid - Includes proper error handling ### 2. Update and Reference Your README.md ...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~107-~107: Use correct spacing
Context: ...g ``` ### 2. Update and Reference Your README.md Keep your project's README.md updated w...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~109-~109: Use correct spacing
Context: ...sor uses this context to provide better suggestions: markdown # My Project This project uses Unkey for API authentication and rate limiting. ## Environment Variables - `UNKEY_ROOT_KEY`: Your Unkey root key - `UNKEY_API_ID`: Your API ID from the Unkey dashboard ## API Routes - `/api/protected` - Requires valid API key - `/api/keys` - Manage API keys (admin only) ## Rate Limiting - Free tier: 100 requests/hour - Pro tier: 1000 requests/hour ## Add Unkey Documentation Context Adding...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~129-~129: Use correct spacing
Context: ...ts/hour ``` ## Add Unkey Documentation Context Adding Unkey docs can let you specifica...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~131-~131: Use correct spacing
Context: ...er to Unkey features when building your app. From Cursor Settings > Features > Docs ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~133-~133: Use comma(s) to set off direct address
Context: ...app. From Cursor Settings > Features > Docs add new doc, use the URL "https://unkey...
(QB_NEW_EN_OTHER_ERROR_IDS_18)
[grammar] ~133-~133: There might be a problem here.
Context: ...m Cursor Settings > Features > Docs add new doc, use the URL "https://unkey.com/docs"
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~133-~133: There might be a mistake here.
Context: ...eatures > Docs add new doc, use the URL "https://unkey.com/docs"
(QB_NEW_EN_OTHER)
apps/docs/ai-code-gen/overview.mdx
[grammar] ~7-~7: Use correct spacing
Context: ...es mode: "wide" --- # AI Code Gen with Unkey Unkey provides powerful integrations wi...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~9-~9: There might be a problem here.
Context: ...ly. Whether you're using Cursor, GitHub Copilot, Windsurf,you can leverage AI to generate code tha...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~9-~9: Use correct spacing
Context: ...that integrates seamlessly with Unkey's APIs. ## Available AI Tools <CardGroup cols={2}...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~11-~11: Use correct spacing
Context: ...sly with Unkey's APIs. ## Available AI Tools Use Cursor's AI capabilities with Unkey's API documentation and examples Build Unkey applications with Windsurf's AI-powered development environment Connect your favorite AI code generation tool to Unkey's APIs using Model Context Protocol
(QB_NEW_EN_OTHER_ERROR_IDS_5)
apps/docs/ai-code-gen/windsurf.mdx
[grammar] ~7-~7: Use correct spacing
Context: ...mode: "wide" --- # Using Windsurf with Unkey Windsurf is an AI-powered development e...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~9-~9: Use correct spacing
Context: ... generation and real-time collaboration features. ## Getting Started ### 1. Set Up Your Unk...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~11-~11: Use correct spacing
Context: ...ime collaboration features. ## Getting Started ### 1. Set Up Your Unkey Environment Befor...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~13-~13: Use correct spacing
Context: ...tting Started ### 1. Set Up Your Unkey Environment Before working with Windsurf, ensure yo...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~15-~15: Use correct spacing
Context: ... ensure you have your Unkey credentials ready: Navigate to the Unkey Dashboard and create a new API for your project. Go to Settings > Root Keys and create a new root key with appropriate permissions. Note down your API ID and root key - you'll need these for your application. ### 2. Set Up Unkey MCP Server (Optional) ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~31-~31: Use correct spacing
Context: .../Steps> ### 2. Set Up Unkey MCP Server (Optional) Windsurf supports the Model Context Pro...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~33-~33: Use correct spacing
Context: ...ur Unkey workspace for more intelligent suggestions. #### Install Unkey MCP Server To get starte...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~35-~35: Use correct spacing
Context: ...nt suggestions. #### Install Unkey MCP Server To get started with Windsurf, open "Win...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~37-~37: There might be a mistake here.
Context: ...e > Model Context Protocol (MCP) Servers", click on "Add Server", click "Add custo...
(QB_NEW_EN_OTHER)
[grammar] ~37-~37: There might be a mistake here.
Context: ...col (MCP) Servers", click on "Add Server", click "Add custom server", and add the ...
(QB_NEW_EN_OTHER)
[grammar] ~37-~37: There might be a mistake here.
Context: ...n "Add Server", click "Add custom server", and add the following configuration for...
(QB_NEW_EN_OTHER)
[grammar] ~37-~37: Use correct spacing
Context: ...and add the following configuration for Convex. 1. Configure the MCP Server ```json ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~39-~39: Use correct spacing
Context: ...ion for Convex. 1. Configure the MCP Server json { "mcpServers": { "Unkey": { "command": "npx", "args": [ "mcp-remote", "https://mcp.unkey.com/mcp/v1", "--header", "MCP-UNKEY-BEARER-AUTH:${UNKEY_ROOT_KEY}" ] } } } For rate limiting specific operations, ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~57-~57: Use correct spacing
Context: ...iting specific operations, you can also add: json { "mcpServers": { "UnkeyRateLimiting": { "command": "npx", "args": [ "mcp-remote", "https://mcp.unkey.com/mcp/ratelimits/", "--header", "MCP-UNKEY-V2-ROOT-KEY:${UNKEY_ROOT_KEY}" ] } } } 2. Set Environment Variable ```bash ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~75-~75: Use correct spacing
Context: ... } } 2. **Set Environment Variable** bash export UNKEY_ROOT_KEY="your_root_key_here" ``` 3. Restart Windsurf Restart Windsurf...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~81-~81: There might be a mistake here.
Context: ...our_root_key_here" ``` 3. Restart Windsurf Restart Windsurf to load the MCP server...
(QB_NEW_EN_OTHER)
apps/docs/ai-code-gen/unkey-mcp.mdx
[grammar] ~7-~7: Use correct spacing
Context: ... "wide" --- # Unkey MCP (Model Context Protocol) The Unkey Model Context Protocol (MCP) ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[uncategorized] ~9-~9: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...enabling AI-powered API key management, rate limiting configuration, and analytics queries. ...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
[grammar] ~9-~9: Use correct spacing
Context: ...e limiting configuration, and analytics queries. ## What is MCP? Model Context Protocol (M...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~11-~11: Use correct spacing
Context: ...ion, and analytics queries. ## What is MCP? Model Context Protocol (MCP) is an open...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~13-~13: Use correct spacing
Context: ...stance with API key management and rate limiting. ## Available MCP Servers Unkey provides t...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~15-~15: Use correct spacing
Context: ...nt and rate limiting. ## Available MCP Servers Unkey provides two MCP servers: <CardG...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~17-~17: There might be a problem here.
Context: ...ble MCP Servers Unkey provides two MCP servers: Full access to Unkey's API management capabilities Specialized server for rate limiting operations ## Prerequisites - [Unkey account](https://app.unkey.com/au...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~40-~40: There might be a problem here.
Context: ...ermissions - Node.js installed (for npx command) ## Installation Below is an example of using Unkey MCP ...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~44-~44: Correctly pair commas and coordinating conjunctions
Context: ...w is an example of using Unkey MCP with Claude but it can also be used with other AI a...
(QB_NEW_EN_OTHER_ERROR_IDS_14)
[grammar] ~44-~44: Use correct spacing
Context: ...e but it can also be used with other AI applications. ### Unkey API MCP The main Unkey MCP serve...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~46-~46: Use correct spacing
Context: ...h other AI applications. ### Unkey API MCP The main Unkey MCP server provides acce...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~48-~48: Use correct spacing
Context: ...r provides access to the complete Unkey API: 1. Open Claude Desktop Configuration ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~50-~50: There might be a mistake here.
Context: ...te Unkey API: 1. Open Claude Desktop Configuration Navigate to your Claude Desktop configu...
(QB_NEW_EN_OTHER)
[grammar] ~54-~54: Use correct spacing
Context: ...aude/claude_desktop_config.json - **Windows**:%APPDATA%\Claude\claude_desktop_config.json` 2. Add the MCP Server Configuration ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~56-~56: There might be a mistake here.
Context: ...p_config.json` 2. Add the MCP Server Configuration Add the following configuration to your...
(QB_NEW_EN_OTHER)
[grammar] ~58-~58: Use correct spacing
Context: ...Add the following configuration to your claude_desktop_config.json: json { "mcpServers": { "Unkey": { "command": "npx", "args": [ "mcp-remote", "https://mcp.unkey.com/mcp/v1", "--header", "MCP-UNKEY-BEARER-AUTH:${UNKEY_ROOT_KEY}" ] } } } 3. Set Environment Variable Set your...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~76-~76: Use correct spacing
Context: ... } } ``` 3. Set Environment Variable Set your Unkey root key as an environme...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~78-~78: Use correct spacing
Context: ...t your Unkey root key as an environment variable: bash # macOS/Linux export UNKEY_ROOT_KEY="unkey_xxx" # Windows set UNKEY_ROOT_KEY=unkey_xxx 4. Restart Claude Desktop Close and ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~88-~88: There might be a mistake here.
Context: ...Y=unkey_xxx ``` 4. Restart Claude Desktop Close and restart Claude Desktop to loa...
(QB_NEW_EN_OTHER)
[grammar] ~90-~90: There might be a problem here.
Context: ... restart Claude Desktop to load the MCP server. ### Unkey Rate Limiting MCP For specialized rate...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~92-~92: Use correct spacing
Context: ...he MCP server. ### Unkey Rate Limiting MCP For specialized rate limiting operation...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~94-~94: Use hyphens correctly
Context: ...nkey Rate Limiting MCP For specialized rate limiting operations, use the dedicated r...
(QB_NEW_EN_OTHER_ERROR_IDS_29)
[grammar] ~94-~94: Use hyphens correctly
Context: ... limiting operations, use the dedicated rate limiting MCP server: 1. **Add Rate Limi...
(QB_NEW_EN_OTHER_ERROR_IDS_29)
[grammar] ~94-~94: Use correct spacing
Context: ...ns, use the dedicated rate limiting MCP server: 1. Add Rate Limiting MCP Configuration ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~96-~96: Use correct spacing
Context: ...MCP server: 1. Add Rate Limiting MCP Configuration Add this configuration to your `claude_...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~98-~98: Use correct spacing
Context: ...on** Add this configuration to your claude_desktop_config.json: json { "mcpServers": { "UnkeyRateLimiting": { "command": "npx", "args": [ "mcp-remote", "https://mcp.unkey.com/mcp/ratelimits/", "--header", "MCP-UNKEY-V2-ROOT-KEY:${UNKEY_ROOT_KEY}" ] } } } 2. Use Both Servers You can configur...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~116-~116: Use correct spacing
Context: ... } } } ``` 2. Use Both Servers You can configure both MCP servers simu...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~118-~118: Use correct spacing
Context: ... You can configure both MCP servers simultaneously: json { "mcpServers": { "Unkey": { "command": "npx", "args": [ "mcp-remote", "https://mcp.unkey.com/mcp/v1", "--header", "MCP-UNKEY-BEARER-AUTH:${UNKEY_ROOT_KEY}" ] }, "UnkeyRateLimiting": { "command": "npx", "args": [ "mcp-remote", "https://mcp.unkey.com/mcp/ratelimits/", "--header", "MCP-UNKEY-V2-ROOT-KEY:${UNKEY_ROOT_KEY}" ] } } } ## Getting Your Root Key To use the MCP s...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~145-~145: Use correct spacing
Context: ... } } ``` ## Getting Your Root Key To use the MCP servers, you need a Unke...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~147-~147: Use correct spacing
Context: ... need a Unkey root key with appropriate permissions: Go to Settings > Root Keys in your Unkey dashboard. Click "Create New Root Key" and select the permissions you need: - API Key Management: For creating, updating, and deleting API keys - Rate Limiting: For configuring rate limits - Analytics: For querying usage data Copy your root key and store it securely. You'll use this as your environment variable. ## Using MCP with Claude Desktop Once con...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~166-~166: Use correct spacing
Context: ...tep> ## Using MCP with Claude Desktop Once configured, you can interact with ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~168-~168: Use correct spacing
Context: ...Unkey workspace directly through Claude Desktop: ### API Key Management Ask Claude to help ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~170-~170: Use correct spacing
Context: ...ly through Claude Desktop: ### API Key Management Ask Claude to help with API key operati...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~172-~172: Use correct spacing
Context: ...gement Ask Claude to help with API key operations: Can you create a new API key for my mobile app with the following settings: - Name: "Mobile App Production" - Rate limit: 1000 requests per hour - Expiration: 90 days from now - Metadata: {"app": "mobile", "version": "1.0", "environment": "production"} ### Rate Limiting Configuration Configure ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[uncategorized] ~182-~182: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ..., "environment": "production"} ``` ### Rate Limiting Configuration Configure rate limits th...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
[grammar] ~182-~182: Use correct spacing
Context: ...": "production"} ``` ### Rate Limiting Configuration Configure rate limits through natural l...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~184-~184: Use correct spacing
Context: ... Configure rate limits through natural language: I need to set up rate limiting for my API with these tiers: - Free tier: 100 requests per hour - Pro tier: 1000 requests per hour - Enterprise tier: 10000 requests per hour Can you help me configure these limits? ### Analytics and Monitoring Query your AP...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~195-~195: Use correct spacing
Context: ...re these limits? ### Analytics and Monitoring Query your API usage data: Show me...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~197-~197: There might be a problem here.
Context: ...cs and Monitoring Query your API usage data: Show me the API usage statistics for the last 7 days, including: - Total requests - Top 5 API keys by usage - Error rates - Geographic distribution of requests ### Troubleshooting Get help with common issues: ``` I'm s...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~209-~209: Use correct spacing
Context: ...# Troubleshooting Get help with common issues: I'm seeing 401 errors for API key verification. Can you help me debug this? The API key is: uk_xxx The API ID is: api_xxx ## Available Commands ### API Key Operati...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~217-~217: Use correct spacing
Context: ...he API ID is: api_xxx ``` ## Available Commands ### API Key Operations - *Create API Key...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~219-~219: Use correct spacing
Context: ...``` ## Available Commands ### API Key Operations - Create API Key: Generate new API keys...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~221-~221: There might be a mistake here.
Context: ...ey**: Generate new API keys with custom settings - List API Keys: View all API keys ...
(QB_NEW_EN_OTHER)
[grammar] ~222-~222: There might be a mistake here.
Context: ...t API Keys**: View all API keys in your workspace - Update API Key: Modify existing A...
(QB_NEW_EN_OTHER)
[grammar] ~223-~223: There might be a mistake here.
Context: ...date API Key**: Modify existing API key properties - Delete API Key: Remove API keys f...
(QB_NEW_EN_OTHER)
[grammar] ~224-~224: There might be a mistake here.
Context: ...te API Key**: Remove API keys from your workspace - Verify API Key: Check if an API k...
(QB_NEW_EN_OTHER)
[grammar] ~225-~225: There might be a mistake here.
Context: ...Key**: Check if an API key is valid and active ### Rate Limiting Operations - **Configure...
(QB_NEW_EN_OTHER)
[grammar] ~227-~227: Use hyphens correctly
Context: ... if an API key is valid and active ### Rate Limiting Operations - **Configure Rate ...
(QB_NEW_EN_OTHER_ERROR_IDS_29)
[grammar] ~227-~227: Use correct spacing
Context: ... is valid and active ### Rate Limiting Operations - Configure Rate Limits: Set up rate li...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[uncategorized] ~229-~229: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...ns - Configure Rate Limits: Set up rate limiting rules - Check Rate Limit Status: Mo...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
[grammar] ~229-~229: There might be a mistake here.
Context: ...ure Rate Limits**: Set up rate limiting rules - Check Rate Limit Status: Monitor ...
(QB_NEW_EN_OTHER)
[grammar] ~230-~230: There might be a mistake here.
Context: ...it Status**: Monitor current rate limit usage - Update Rate Limits: Modify existi...
(QB_NEW_EN_OTHER)
[grammar] ~231-~231: There might be a mistake here.
Context: ...te Limits**: Modify existing rate limit configurations - Delete Rate Limits: Remove rate l...
(QB_NEW_EN_OTHER)
[uncategorized] ~232-~232: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...ations - Delete Rate Limits: Remove rate limiting rules ### Analytics and Monitoring - ...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
[grammar] ~232-~232: There might be a mistake here.
Context: ...ete Rate Limits**: Remove rate limiting rules ### Analytics and Monitoring - **Usage Ana...
(QB_NEW_EN_OTHER)
[grammar] ~234-~234: Use correct spacing
Context: ... rate limiting rules ### Analytics and Monitoring - Usage Analytics: Query API usage stat...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~239-~239: Use correct spacing
Context: ...Usage Reports*: Generate custom usage reports ## Example Conversations ### Creating an ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~241-~241: Use correct spacing
Context: ...nerate custom usage reports ## Example Conversations ### Creating an API Key You: "Create a...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~243-~243: Use correct spacing
Context: ...mple Conversations ### Creating an API Key You: "Create a new API key for my dev...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~245-~245: Use correct spacing
Context: ...sts per hour and set it to expire in 30 days." Claude: "I'll create a new API key fo...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~247-~247: Use correct spacing
Context: ...500 requests/hour rate limit and 30-day expiration." ### Analyzing API Usage You: "What are...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~249-~249: Use correct spacing
Context: ... 30-day expiration." ### Analyzing API Usage You: "What are my top 3 API keys by u...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~251-~251: Use correct spacing
Context: ...hat are my top 3 API keys by usage this month?" Claude: "Let me query your Unkey anal...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~253-~253: Use correct spacing
Context: ...sage data and provide you with detailed statistics." ### Debugging Issues You: "I'm getting...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~255-~255: Use correct spacing
Context: ...th detailed statistics." ### Debugging Issues You: "I'm getting rate limit errors b...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~257-~257: Correctly pair commas and coordinating conjunctions
Context: ...ssues You: "I'm getting rate limit errors but I thought my limit was higher. Can ...
(QB_NEW_EN_OTHER_ERROR_IDS_14)
[grammar] ~257-~257: Use correct spacing
Context: ...er. Can you check my current rate limit configuration?" Claude: "I'll check your current rate...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~259-~259: Use hyphens correctly
Context: ...sing the Unkey MCP. Let me examine your rate limiting settings and current usage to h...
(QB_NEW_EN_OTHER_ERROR_IDS_29)
[grammar] ~259-~259: Use correct spacing
Context: ... and current usage to help diagnose the issue." ## Security Best Practices ### Environmen...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~261-~261: Use correct spacing
Context: ... diagnose the issue." ## Security Best Practices ### Environment Variables - Store your roo...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~263-~263: Use correct spacing
Context: ...ecurity Best Practices ### Environment Variables - Store your root key in environment vari...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~265-~265: There might be a mistake here.
Context: ...nment variables, never in configuration files - Use different root keys for different...
(QB_NEW_EN_OTHER)
[grammar] ~266-~266: There might be a mistake here.
Context: ...ent environments (development, staging, production) - Regularly rotate your root keys ### ...
(QB_NEW_EN_OTHER)
[grammar] ~267-~267: There might be a problem here.
Context: ...roduction) - Regularly rotate your root keys ### Permissions - Grant only the minimum required permiss...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~271-~271: There might be a mistake here.
Context: ...nimum required permissions to your root keys - Use separate root keys for different ...
(QB_NEW_EN_OTHER)
[grammar] ~272-~272: There might be a mistake here.
Context: ...root keys for different operations when possible - Monitor root key usage through audit ...
(QB_NEW_EN_OTHER)
[grammar] ~273-~273: There might be a mistake here.
Context: ... - Monitor root key usage through audit logs ### Access Control - Limit access to your ...
(QB_NEW_EN_OTHER)
[grammar] ~275-~275: Use correct spacing
Context: ...ey usage through audit logs ### Access Control - Limit access to your Claude Desktop con...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~277-~277: There might be a mistake here.
Context: ... - Limit access to your Claude Desktop configuration - Use secure storage for your root keys...
(QB_NEW_EN_OTHER)
[grammar] ~278-~278: There might be a mistake here.
Context: ...tion - Use secure storage for your root keys - Implement proper backup and recovery ...
(QB_NEW_EN_OTHER)
[grammar] ~279-~279: There might be a problem here.
Context: ... - Implement proper backup and recovery procedures ## Troubleshooting ### Common Issues 1. **MCP Server Not Load...
(QB_NEW_EN_MERGED_MATCH)
[grammar] ~283-~283: Use correct spacing
Context: ...cedures ## Troubleshooting ### Common Issues 1. MCP Server Not Loading - Check tha...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~286-~286: There might be a mistake here.
Context: ... - Check that Node.js is installed and accessible - Verify your configuration file syn...
(QB_NEW_EN_OTHER)
[grammar] ~287-~287: There might be a mistake here.
Context: ...ble - Verify your configuration file syntax - Ensure environment variables are s...
(QB_NEW_EN_OTHER)
[grammar] ~288-~288: There might be a mistake here.
Context: ... - Ensure environment variables are set correctly 2. Authentication Errors - Verify you...
(QB_NEW_EN_OTHER)
[grammar] ~291-~291: There might be a mistake here.
Context: ...your root key is correct and has proper permissions - Check that the environment variabl...
(QB_NEW_EN_OTHER)
[grammar] ~292-~292: There might be a mistake here.
Context: ... Check that the environment variable is set - Confirm your root key hasn't expir...
(QB_NEW_EN_OTHER)
[grammar] ~293-~293: There might be a mistake here.
Context: ...s set - Confirm your root key hasn't expired 3. Connection Issues - Ensure you hav...
(QB_NEW_EN_OTHER)
[grammar] ~296-~296: There might be a mistake here.
Context: ... Issues** - Ensure you have internet connectivity - Check if your firewall is blocking...
(QB_NEW_EN_OTHER)
[grammar] ~297-~297: There might be a mistake here.
Context: ... - Check if your firewall is blocking connections - Verify the MCP server URLs are cor...
(QB_NEW_EN_OTHER)
[grammar] ~298-~298: There might be a mistake here.
Context: ...ons - Verify the MCP server URLs are correct ### Getting Help If you encounter issues: ...
(QB_NEW_EN_OTHER)
[grammar] ~300-~300: Use correct spacing
Context: ...CP server URLs are correct ### Getting Help If you encounter issues: 1. Check the ...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~302-~302: Use correct spacing
Context: ...ect ### Getting Help If you encounter issues: 1. Check the Claude Desktop logs for error...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~304-~304: There might be a mistake here.
Context: ...Check the Claude Desktop logs for error messages 2. Verify your configuration matches th...
(QB_NEW_EN_OTHER)
[grammar] ~305-~305: There might be a mistake here.
Context: ...your configuration matches the examples exactly 3. Test your root key directly with the...
(QB_NEW_EN_OTHER)
[grammar] ~306-~306: There might be a mistake here.
Context: ...t your root key directly with the Unkey API 4. Join the [Unkey Discord](https://go....
(QB_NEW_EN_OTHER)
[grammar] ~307-~307: There might be a mistake here.
Context: ...s://go.unkey.com/discord) for community support ## Advanced Configuration ### Custom Envi...
(QB_NEW_EN_OTHER)
[grammar] ~309-~309: Use correct spacing
Context: ...ord) for community support ## Advanced Configuration ### Custom Environment Variables You can u...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~311-~311: Use correct spacing
Context: ...d Configuration ### Custom Environment Variables You can use custom environment variable...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~313-~313: Use correct spacing
Context: ...You can use custom environment variable names: json { "mcpServers": { "Unkey": { "command": "npx", "args": [ "mcp-remote", "https://mcp.unkey.com/mcp/v1", "--header", "MCP-UNKEY-BEARER-AUTH:${MY_CUSTOM_UNKEY_KEY}" ] } } } ### Multiple Workspaces Configure multiple...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~331-~331: Use correct spacing
Context: ..." ] } } } ``` ### Multiple Workspaces Configure multiple Unkey workspaces: `...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~333-~333: Use correct spacing
Context: ...le Workspaces Configure multiple Unkey workspaces: json { "mcpServers": { "UnkeyProduction": { "command": "npx", "args": [ "mcp-remote", "https://mcp.unkey.com/mcp/v1", "--header", "MCP-UNKEY-BEARER-AUTH:${UNKEY_PROD_KEY}" ] }, "UnkeyStaging": { "command": "npx", "args": [ "mcp-remote", "https://mcp.unkey.com/mcp/v1", "--header", "MCP-UNKEY-BEARER-AUTH:${UNKEY_STAGING_KEY}" ] } } } ## Next Steps - Explore [Cursor with Unke...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~360-~360: Use correct spacing
Context: ..._KEY}" ] } } } ``` ## Next Steps - Explore [Cursor with Unkey](/ai-code-ge...
(QB_NEW_EN_OTHER_ERROR_IDS_5)
[grammar] ~362-~362: There might be a mistake here.
Context: ...](/ai-code-gen/cursor) for IDE-based AI assistance - Check out [Windsurf with Unkey](/ai-c...
(QB_NEW_EN_OTHER)
[grammar] ~363-~363: There might be a problem here.
Context: ...ai-code-gen/windsurf) for collaborative development ## Resources - [Unkey API Reference](/api-reference/aut...
(QB_NEW_EN_MERGED_MATCH)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (15)
- GitHub Check: Test Packages / Test ./packages/api
- GitHub Check: Test Packages / Test ./apps/dashboard
- GitHub Check: Test Packages / Test ./packages/nextjs
- GitHub Check: Test Packages / Test ./packages/hono
- GitHub Check: Test Packages / Test ./packages/rbac
- GitHub Check: Test Packages / Test ./packages/cache
- GitHub Check: Test Packages / Test ./internal/encryption
- GitHub Check: Test Packages / Test ./internal/keys
- GitHub Check: Test Packages / Test ./internal/clickhouse
- GitHub Check: Test Packages / Test ./internal/id
- GitHub Check: Test Packages / Test ./internal/hash
- GitHub Check: Test Packages / Test ./internal/resend
- GitHub Check: Test Packages / Test ./internal/billing
- GitHub Check: autofix
- GitHub Check: Analyze (javascript-typescript)
🔇 Additional comments (4)
apps/docs/docs.json (1)
70-80: Confirm internal links for the new “AI Code Gen” pagesThe four new slugs (
ai-code-gen/overview,cursor,windsurf,unkey-mcp) are now referenced in the nav. Double-check that the corresponding.mdxfiles live at
apps/docs/ai-code-gen/<page>.mdxand export the expectedtitlefront-matter; otherwise the build will break on missing routes.apps/docs/ai-code-gen/cursor.mdx (2)
39-41: Typo: hydration sentence references “Convex” instead of Unkey- …and add the following configuration for Convex. + …and add the following configuration for Unkey.Likely an incorrect or invalid review comment.
33-35: “Prerequisites” section is emptyA heading without content can confuse readers and may be stripped by the docs renderer. Either remove the heading or add a short bullet list (e.g. “Unkey account, root key, Node.js, Cursor ≥ vX.Y”).
⛔ Skipped due to learnings
Learnt from: chronark PR: unkeyed/unkey#2174 File: oss.gg/7_create_a_template.md:29-29 Timestamp: 2024-10-04T11:30:54.025Z Learning: Even if a repository's README.md does not have a 'Quickstart' heading, as long as it includes all the steps to run the project, it meets the requirement for including quickstart information in the README.md.Learnt from: chronark PR: unkeyed/unkey#2174 File: oss.gg/7_create_a_template.md:29-29 Timestamp: 2024-10-08T15:33:04.290Z Learning: Even if a repository's README.md does not have a 'Quickstart' heading, as long as it includes all the steps to run the project, it meets the requirement for including quickstart information in the README.md.Learnt from: MichaelUnkey PR: unkeyed/unkey#3439 File: apps/engineering/content/design/components/dialogs/dialog-container.mdx:103-111 Timestamp: 2025-07-08T12:47:17.841Z Learning: In component documentation files (e.g., `.mdx` files in `apps/engineering/content/design/components/`), the Accessibility section is included in the standard template and should not be removed from component documentation.apps/docs/ai-code-gen/unkey-mcp.mdx (1)
145-165: Steps component: ensure a blank line before<Steps>Some MDX parsers require a blank line before a JSX block; otherwise it is treated as inline HTML and can break rendering. Add an empty line after the paragraph that introduces the Steps list.
⛔ Skipped due to learnings
Learnt from: MichaelUnkey PR: unkeyed/unkey#3439 File: apps/engineering/content/design/components/dialogs/dialog-container.mdx:103-111 Timestamp: 2025-07-08T12:47:17.841Z Learning: In component documentation files (e.g., `.mdx` files in `apps/engineering/content/design/components/`), the Accessibility section is included in the standard template and should not be removed from component documentation.
There was a problem hiding this comment.
Actionable comments posted: 1
📜 Review details
Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro
📒 Files selected for processing (1)
apps/docs/docs.json(6 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Test Packages / Test ./internal/clickhouse
🔇 Additional comments (2)
apps/docs/docs.json (2)
24-34: Verify icon names against Mintlify / Heroicons listSeveral new
iconvalues were introduced (rocket,shield,robot,key,bolt,scroll,chart-bar,plane).
Mintlify forwards these to Heroicons; any name that does not map to a valid Heroicon will silently render a blank square in the sidebar.
robot,scroll, andplaneare not part of Heroicons v2 as of today. Please double-check the full list (https://heroicons.com/) or replace them with supported alternatives such ascog-6-tooth,document-text,paper-airplane, etc.
No functional impact, but it degrades UX if left unresolved.Also applies to: 60-63, 72-80, 96-100, 132-135, 142-145, 148-150, 158-161
72-80: All AI Code Gen pages verified presentConfirmed that the following files exist in
apps/docs/docs.jsonnavigation group:
- ai-code-gen/overview.mdx
- ai-code-gen/cursor.mdx
- ai-code-gen/windsurf.mdx
- ai-code-gen/unkey-mcp.mdx
No missing pages—ready to merge.
What does this PR do?
Unkey MCP is here. So these docs just add some flavor about using it.
Type of change
How should this be tested?
No testing.
Checklist
Required
pnpm buildpnpm fmtconsole.logsgit pull origin mainAppreciated
Summary by CodeRabbit
New Features
Documentation