Connected Account Initiate Now Filters by ACTIVE Status
Version Information
TypeScript/JavaScript
- Package:
@composio/core - Version:
0.5.4+
Python
- Package:
composio - Version:
0.10.9+
The initiate() method now only considers ACTIVE connected accounts when checking for duplicates. Previously, expired or inactive accounts would incorrectly trigger the multiple accounts error.
What Changed
When calling connectedAccounts.initiate(), the SDK now filters by statuses: ["ACTIVE"] when checking for existing accounts. This prevents expired or inactive accounts from blocking new connection creation.
Before (Bug)
After (Fixed)
Affected SDKs
- TypeScript:
@composio/core - Python:
composio
Backward Compatibility
This is a bug fix with no breaking changes. The behavior now matches the expected intent of the multiple accounts check.
[Critical] File Upload/Download Fixes for latest tool with anyOf, oneOf, and allOf Schemas
Version Information
TypeScript/JavaScript
- Package:
@composio/coreand provider packages - Version:
0.5.3+
Python
- Package:
composioand provider packages - Version:
0.10.8+
The file handling modifiers now properly handle file_uploadable and file_downloadable properties nested within anyOf, oneOf, and allOf JSON Schema declarations. Previously, only direct child properties (and partial allOf support) were detected for file upload/download transformations.
We recommend updating to version 0.5.3 (TypeScript) or 0.10.8 (Python) or later to ensure file uploads and downloads work correctly with tools that use union or intersection types in their schemas.
What Changed
Before (Bug)
File properties inside anyOf, oneOf, or allOf were not detected:
After (Fixed)
File properties are now correctly detected and processed at any nesting level:
Affected Scenarios
How to Update
TypeScript/JavaScript
Python
Backward Compatibility
This release is fully backward compatible:
- All existing code continues to work without modifications
- No migration required
- File upload/download for direct properties continues to work as before
- The fix only adds support for previously unsupported schema patterns
Impact Summary
File handling in tool execution now uses presigned URLs
Summary
Files involved in tool execution are now shared via presigned URLs with a default TTL (time-to-live) of 1 hour. You can customize the file TTL through your project configuration.
What changed
When tools return files (images, documents, exports, etc.), these files are now delivered as presigned URLs with a configurable TTL instead of non-expiring URLs. This provides:
- Automatic cleanup - Files expire after the configured TTL
- Configurable retention - Adjust file availability based on your application’s needs
Default behavior
All files returned from tool execution now have a 1 hour TTL by default. After this period, the presigned URLs expire and files are no longer accessible.
Configuring file TTL
You can adjust the file TTL to match your application’s needs.
Via Dashboard
- Navigate to Project Settings in your Composio dashboard
- Find the File TTL configuration option
- Set your desired TTL value
Via API
Use the Update Project Config API to programmatically configure the file TTL:
Impact
Migration
No code changes are required. Your existing integrations will continue to receive file URLs as before, but these URLs will now expire after the configured TTL.
If your application stores or caches file URLs for later use, ensure you handle URL expiration appropriately by either:
- Downloading files before the TTL expires
- Re-executing the tool to obtain fresh URLs when needed
- Increasing the TTL via project settings to match your retention requirements
True PATCH Semantics for Auth Config Updates
Version Information
TypeScript/JavaScript
- Package:
@composio/coreand provider packages - Version:
0.5.1+
Python
- Package:
composio-coreand provider packages - Version:
0.10.7+
The PATCH /api/v3/auth_configs/{id} endpoint now implements proper partial update semantics. Previously, omitting fields would clear them (behaving like PUT). Now, omitted fields are preserved—only explicitly provided fields are modified.
Breaking Change: If you relied on omitting fields to clear them, you must now explicitly send null or []. See Migration Guide below.
What Changed
Merge Behavior: The credentials object is merged—send only the fields you want to change, and existing fields are preserved.
New Capabilities
Rotate a Single Credential Field
Update just client_secret without resending client_id or other fields:
Update Tool Restrictions Without Touching Credentials
Previously, this would fail because credentials was required. Now it works:
Migration Guide
Am I Affected?
Yes, if your code relied on omitting fields to clear them.
No, if you always send complete payloads or only use PATCH to update specific fields.
How to Clear Fields Explicitly
Raw HTTP API
For users calling the API directly:
Tool Router Improvements and New Features
Version Information
TypeScript/JavaScript
- Package:
@composio/coreand provider packages - Version:
0.3.4to0.4.0
Python
- Package:
composio-coreand provider packages - Version:
0.10.4to0.10.5
New Features
1. Wait for Connections Property
Added waitForConnections (TypeScript) / wait_for_connections (Python) property to manage connections configuration. This allows tool router sessions to wait for users to complete authentication before proceeding to the next step.
TypeScript:
Python:
2. Session-Specific Modifier Types
Introduced new modifier types for better session-based tool execution: SessionExecuteMetaModifiers and SessionMetaToolOptions.
TypeScript:
Python:
3. Dedicated Method for Tool Router Meta Tools
Added getRawToolRouterMetaTools (TypeScript) / get_raw_tool_router_meta_tools (Python) method in the Tools class for fetching meta tools directly from a tool router session.
TypeScript:
Python:
Internal Improvements
1. Performance Optimization
Eliminated unnecessary tool fetching during tool router execution, resulting in faster tool execution with fewer API calls.
2. Improved Architecture
Tool router sessions now fetch tools directly from the session API endpoint instead of using tool slugs, providing better consistency and reliability.
3. Simplified Implementation
Removed redundant tool schema fetching in execution paths, using a hardcoded ‘composio’ toolkit slug for meta tools.
Backward Compatibility
This release is fully backward compatible:
- All existing code continues to work without modifications
- New properties are optional with sensible defaults
- New modifier types can be adopted incrementally
- Internal changes have no impact on public APIs
- No migration required
Impact Summary
All changes follow semantic versioning principles and maintain full backward compatibility.
Tool Enum Name Shortening
Shortened tool enum names across 181 actions to ensure compatibility with all AI agent frameworks.
Why This Change?
Some agent frameworks have a 64-character limit on tool/function names. Several tool enums exceeded this limit, causing compatibility issues.
No Action Required
This change will not break your integration if you are using latest toolkit versions or fetching tools dynamically. The SDK automatically resolves the correct tool names.
View All Enum Changes (181 tools)
Migration
If you’re referencing any affected tool enums by their old names, update to the new shortened names.
Optional API Key Enforcement for MCP Servers
We’ve introduced a new project-level security setting that allows you to require API key authentication for all MCP server requests. This opt-in feature gives you fine-grained control over who can access your MCP endpoints.
Opt-in today, default soon: This feature is currently opt-in. Starting March 1, 2026, it will be enabled by default for new organizations. We recommend enabling it now to prepare your integrations.
What’s New
A new “Require API Key for MCP” toggle is now available in your Project Settings. When enabled, all requests to your MCP servers must include a valid Composio API key in the request headers.
How It Works
When the setting is disabled (default):
- MCP servers work without API key authentication
- Existing integrations continue to function unchanged
When the setting is enabled:
- All MCP requests must include the
x-api-keyheader with a valid Composio API key - Requests without a valid API key receive
401 Unauthorized - Only API keys belonging to the same project are accepted
Request Examples
Without API key (when enforcement is enabled):
With API key:
Enabling the Setting
Via Dashboard
- Navigate to Project Settings
- Go to the Project Configuration tab
- Find the “Require API Key for MCP” toggle
- Enable the toggle

Via API
Update your project configuration using the API:
Response:
Via Code
When to Use This
Enable API key enforcement when you need to:
- Prevent unauthorized access to your MCP servers
- Control which applications can interact with your MCP endpoints
- Add an extra security layer for production deployments
- Audit and track MCP server usage through API key attribution
API Reference
Get Current Setting
Update Setting
Consistent Error Response Structure
Tool execution errors now return a standardized response format across all failure types. Previously, the data field was empty on errors—now it always includes status_code and message, matching the structure of successful responses.
What Changed
All error responses from tool execution now include:
data.status_code: HTTP status code (ornullfor non-HTTP errors)data.message: Detailed error messageerror: Same detailed message at the top level
Before vs After
Previous error response:
New error response:
Why This Matters
- Easier parsing: Agents and code can reliably access error details from
data.messagewithout special-casing emptydataobjects - Better debugging: Detailed error messages replace generic HTTP error strings
- Consistent schema: Same response shape whether the tool succeeds or fails
Union Types Preserved in Tool Schemas
Tool schemas now use standard JSON Schema anyOf for union types, providing accurate type information for LLMs and code generators.
What Changed
Two changes affect how types appear in request/response schemas:
Toolkits with multi-type union fields (157 total)
CRM & Sales
active_campaign, apollo, attio, autobound, capsule_crm, firmao, forcemanager, gong, hubspot, instantly, intercom, kommo, leadfeeder, lever, magnetic, pipedrive, pipeline_crm, salesforce, salesforce_service_cloud, zoominfo
Marketing & Email
active_trail, beamer, delighted, dripcel, enginemailer, mailerlite, moosend, mopinion, sendspark, toneden
Communication & Collaboration
chmeetings, discord, helpdesk, helpwise, missive, slack, textit
Productivity & Project Management
basecamp, clicksend, clientary, dart, fibery, monday, notion, onedesk, productboard, rocketlane, todoist
Developer Tools & APIs
algolia, anonyflow, api_ninjas, api_sports, apify, appdrag, backendless, browserless, bubble, cloudconvert, cloudinary, cloudlayer, convertapi, databricks, datadog, datarobot, deepseek, deployhq, digital_ocean, docmosis, docugenerate, encodian, gitea, gitlab, globalping, groqcloud, hookdeck, hyperbrowser, imgbb, imgix, kibana, neutrino, npm, openai, openrouter, parsera, parseur, phantombuster, pinecone, prismic, procfu, replicate, scrape_do, serpapi, shotstack, snowflake, supabase, tavily, v0, vercel, writer, zenrows
E-commerce & Payments
brex, btcpay_server, coupa, flutterwave, gift_up, lemon_squeezy, quaderno, ramp, shopify, stripe, zoho_invoice
HR & Recruiting
ashby, bamboohr, recruitee
Data & Analytics
amplitude, census_bureau, college_football_data, currencyscoop, diffbot, ip2location, mixpanel, nasa, rosette_text_analytics, securitytrails, textrazor, twelve_data
Documents & Files
carbone, doc_certs, documenso, dropbox, excel, files_com, grist, pdf_co, share_point
Design & Media
canva, canvas, claid_ai, deepimage, heygen, metatextai
Customer Support
freshdesk, retently, servicem8, sevdesk, storeganise
Calendar & Scheduling
calendly, deadline_funnel, etermin, googlecalendar
Social Media
facebook, instagram, reddit
Location & Maps
addresszen, geoapify, google_maps, mapbox
Email Verification & Validation
clearout, icypeas, neverbounce, zerobounce
Other Integrations
bitwarden, canny, cardly, castingwords, confluence, formdesk, getform, habitica, headout, highergov, jira, keen_io, landbot, moonclerk, one_drive, outlook, googlesheets, resend, ritekit, sms_alert, tapfiliate, thanks_io, uptimerobot
Before vs After
For example, the GOOGLECALENDAR_GET_CURRENT_DATE_TIME request schema changes:
Previous (only a single type):
Now (Union types preserved):
Similarly, nullable fields like page_token in GOOGLECALENDAR_LIST_CALENDARS:
Previous:
Now:
Why This Matters
- Accurate schemas: LLMs and code generators see the full set of allowed types
- Better validation: Input validation can now correctly accept all valid types, not just the first one
Deprecating BEARER_TOKEN auth scheme for 19 toolkits
We’ve deprecated the BEARER_TOKEN auth scheme for the following 19 toolkits:
AirtableDiscordDiscordbotGmailGoogle ClassroomGoogle Search ConsoleGoogle CalendarGoogle DocsGoogle DriveGoogle SlidesGoogle SuperInstagramNtfySapling AISlackSlackbotTawk ToTikTokTwitter
Recommendation
For these toolkits, we recommend using alternative auth schemes (for example, OAUTH2, API_KEY, or other toolkit-supported schemes) instead of BEARER_TOKEN.
Backward compatibility (explicit)
This change is fully backward compatible:
- Existing auth configs and connected accounts created with
BEARER_TOKENwill continue to function. - Creating new auth configs and connected accounts with
BEARER_TOKENwill continue to work (e.g., via API/SDK). - To discourage new usage,
BEARER_TOKENauth configs / connected accounts will not be displayed in the UI for these toolkits.
Binary Data Support for Proxy Execute
The /api/v3/tools/execute/proxy endpoint now supports binary data for both file uploads and downloads.
File Uploads (binary_body)
To upload a file via the proxy, use the binary_body field in your request payload. This supports two approaches: specifying either a URL pointing to the file or providing the base64-encoded content directly.
Upload File via URL
Upload File via Base64 Content
Supported up to 4MB file size.
File Downloads (binary_data)
When the proxied request returns a binary response (for example, a PDF or image), the proxy automatically uploads the file to temporary storage, and you receive a signed URL in the binary_data field. This enables you to download large files securely.
File Download Request
File Download Response
Summary
We’d love your feedback on the new proxy execute capabilities. If anything feels unclear or you have suggestions for improvement, please reach out.