- DATE:
- AUTHOR:
- The Kinde team
Bring your own APIs to AI agents
Introducing Kinde Secure MCP
Ship an MCP server for your customers (beta)
Your users are asking to reach your product from Claude, Cursor, and other AI agents. Now you can give them that without building or hosting an MCP server. Upload your OpenAPI spec and Kinde turns every operation into a tool, hosts the connection on its own URL, and handles the sign-in for you: your customers authenticate with a user API key or an OAuth flow, and the scopes on their credential decide exactly which tools their agent can see. Every call is proxied through Kinde to your API and written to an audit log, so you can tell any customer precisely what an agent did on their behalf. Auth, scoping, and visibility come with it, so a request that used to be a roadmap item ships this week. Available in beta, reach out if you'd like it enabled for your account.
Your API stays as it is
Nothing about your upstream service has to change to support this. Choose how Kinde authenticates to it: pass through the user's API key, send a static bearer token or X-Api-Key, or add your own custom headers. Header values support templates like {{kinde.user.id}} and {{kinde.user.email}} that Kinde fills in per request, so your API always knows which of your users is on the other end and your existing authorization logic keeps working. (OAuth 2.0 client credentials support is coming soon.)
Hand customers a config they can paste
Every connection ships with ready-to-paste setup for Remote MCP (HTTP) clients like Cursor and VS Code, plus OAuth for Claude Desktop. Send your customers the Quick start page, they drop in an API key, and their agent is talking to your product. No support ticket, no integration guide for you to write.
Authentication experience settings now in the Management API
The seven Authentication experience toggles on applications (like asking for name, marketing consent, sign-in with SSO, and gravatar fallback) can now be read and updated directly through the Management API on the applications endpoint, not just the admin UI. Gating rules for which app types support these settings are now enforced server-side too, so unsupported toggles (like faceless auth for device apps, or any of these settings on M2M apps) can't be persisted through crafted requests - keeping behavior consistent whether you're using the UI or the API.
OAuth sign-in for MCP connections
MCP servers now support a proper OAuth SSO flow in addition to API-key auth, so AI agents like Cursor, Claude, and ChatGPT can sign users in through the browser rather than relying solely on Bearer tokens. Each connection gets its own path-scoped OAuth routes, dynamic client registration, and protected-resource metadata, so multiple connections on the same custom domain stay safely isolated from each other. Client recognition for agents using client ID metadata documents (CIMD) has also been generalized to check against a trusted-host allowlist rather than vendor-specific URL patterns, which is how ChatGPT's connector is now recognized alongside Claude's.
PKCE for Custom OAuth 2.0 connections
Custom OAuth 2.0 connections can now enable PKCE on the Kinde-to-identity-provider authorization request independently of the SPA-to-Kinde flow. This is useful for providers like Okta that require PKCE, and can be turned on per connection via a new toggle in the Admin UI, with support exposed through the Management API as well.
Clearer error when cookies are blocked
Some browsers and devices don't reliably store the trust cookie, which could leave users stuck on an "expired link" message. Kinde now retries once for fresh sessions, and if cookies still aren't available, shows a clear message explaining that cookies are required. SDK-based clients automatically start a fresh flow.
Fixed-price plans now show their real billing interval
Plans with a single fixed charge on a non-monthly interval now display at their actual billed price (for example, $1000/year instead of $83.33/month). This applies across the admin preview, account portal, choose-plan screen, payment details, and pricing tables. Plans that mix intervals still show a monthly average.
Faster performance at scale
Filtering organization users by role and loading org member counts on the Organizations list are both significantly faster on large tenants. API behavior and response shapes are unchanged.
Manage portal permissions for roles via the Management API
You can now manage self-serve portal access controls programmatically, without going through the admin UI. System permissions control what organization users can do in the self-serve portal, and three new Management API endpoints let you work with them directly: GET /api/v1/system_permissions lists the full system permission catalog (requiring the read:system_permissions scope), GET /api/v1/roles/{role_id}/system_permissions shows which system permissions a role holds (read:role_system_permissions), and PATCH /api/v1/roles/{role_id}/system_permissions adds or removes them in a single call (update:role_system_permissions). List endpoints support sorting and paginated results, and updates require an M2M token - matching the existing role permissions security model.
Minor fixes and improvements
Fixed the account-not-found page showing a full "Create account" form even when the "Show no account? Create one" toggle was disabled on the sign-in page, including a server-side check to block direct form submissions bypassing the UI.
Various Billing Feature Improvements and Bug Fixes.
Fixed an issue where users on a paid trial were asked for credit card details mid-trial.
SDKs
Here's some other changes to SDKs:
Node Express SDK: Updated runtime dependencies and CI tooling for improved stability
Android SDK: Major v2.0.0 release with modernized dependencies and toolchain, raised minSdk to 23, fixed hardcoded redirect and audience meta-data key issues
PHP SDK: Regenerated Management API client with new endpoints for API keys, directories, organization invites, passkeys, and permissions, plus dependency security updates
Python SDK: Updated dependencies (cryptography, requests, pytest) to address CVE-2025-71176 and improved Django 6 test compatibility
Ruby SDK: Added invitation code support, fixed OAuth2 token and connection header bugs, and upgraded to jwt 3.x (requires apps pinned to jwt 2.x to upgrade)
TypeScript SDK: Now requires Node.js 20+ (Node 18 no longer supported) with a URL bug fix and updated dependencies
Flutter SDK: Added reauthentication support and invitation code handling, upgraded dependencies, and fixed web authentication for WebAssembly compatibility
JWT Decoder SDK: Fixed missing TypeScript type declarations by restoring
.d.tsfile generationJWT Validator SDK: Fixed missing TypeScript type declarations that broke TypeScript consumers in 0.4.3-upgrade recommended.
JS Utils SDK: Removed ExpoSecureStore and the @kinde/js-utils/expo subpath—use @kinde/expo for Expo secure storage instead.
Expo SDK: Added web support with improved session storage and token handling, moved ExpoSecureStore into the package, and updated switchOrg to use handleLoginResponse