About Composio SDK Rust
Composio SDK Rust is an MCP server in the Commerce category.
Install
git clone https://github.com/DotViegas/composio-sdk-rustThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Ask AI
Ask AI about Composio SDK Rust
Powered by Claude · Grounded in docs
Security checks
- ✓README presentThe repository ships documentation.
5 checks have not been run yet.
README
Composio Rust SDK
Type-safe, async Rust SDK for Composio’s Tool Router and API v3.
Overview
Composio helps AI apps and agents connect to external services through a unified API.
This SDK gives Rust developers a strongly-typed client for sessions, tools, auth flows, MCP servers, files, and trigger-related APIs.
What's New in v0.3.0
This release significantly expands API parity and lifecycle coverage:
- Added full MCP server management support (create/get/update/delete/list/generate/custom).
- Added project configuration endpoints (
get_project_config,update_project_config). - Added CLI session endpoints (
create_cli_session,get_cli_session). - Added migration helper endpoint (
get_migration_nanoid). - Added tools enum endpoint (
retrieve_tool_enum). - Added trigger types enum endpoint (
retrieve_trigger_type_enum). - Added toolkit retrieve version support via
get_toolkit_with_params. - Added connected account lifecycle endpoints (refresh/status/delete).
- Added auth config lifecycle endpoints (get/update/delete/status update).
- Added direct link endpoint parity (
create_connected_account_link). - Added files API parity improvements (
list_files,create_file_upload_request) and aligned file models.
Features
- Tool execution: list/retrieve/execute/proxy tools and generate tool inputs.
- Tool Router sessions: create per-user sessions and execute tools in session context.
- MCP servers: create, list, retrieve, update, delete, and generate MCP server URLs.
- Connected accounts: list/retrieve/link/refresh/update-status/delete connected accounts.
- Auth configs: list/create/retrieve/update/delete auth configs and update status.
- Files: list files, request upload URLs, and use upload/download helper abstractions.
- CLI sessions: create and retrieve CLI authentication sessions.
- Migration helper: convert legacy UUIDs to NanoIDs.
- Project config: retrieve and update project-level configuration.
- Triggers: list/retrieve trigger types, retrieve trigger enums, and work with trigger instances.
Installation
cargo add composio-sdk
Or add manually:
[dependencies]
composio-sdk = "0.3"
tokio = { version = "1", features = ["full"] }
serde_json = "1"
Quick Start
Minimal end-to-end flow:
use composio_sdk::client::ComposioClient;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = ComposioClient::builder()
.api_key(std::env::var("COMPOSIO_API_KEY")?)
.build()?;
// 1) Create a user-scoped Tool Router session
let session = client
.create_session("user_123")
.toolkits(vec!["github"])
.send()
.await?;
// 2) Execute a tool via that session
let result = session
.execute_tool(
"GITHUB_CREATE_ISSUE",
serde_json::json!({
"owner": "acme",
"repo": "demo",
"title": "Issue from Rust SDK"
}),
)
.await?;
println!("success: {}", result.successful);
Ok(())
}
Authentication
Use your Composio API key (sent as x-api-key):
let client = composio_sdk::client::ComposioClient::builder()
.api_key(std::env::var("COMPOSIO_API_KEY")?)
.build()?;
Core Concepts
Tools
Use list_tools, get_tool, execute_tool, generate_tool_inputs, proxy_tool, and retrieve_tool_enum.
Tool Router
Create sessions with create_session(...).send(), then execute tools and meta tools per user context.
MCP Servers
Use create_mcp_server, list_mcp_servers, get_mcp_server, update_mcp_server, delete_mcp_server, generate_mcp_server, and related methods.
Connected Accounts
Use list_connected_accounts, get_connected_account, create_connected_account_link, refresh_connected_account, update_connected_account_status, and delete_connected_account.
Auth Configs
Use list_auth_configs, create_auth_config, get_auth_config, update_auth_config, delete_auth_config, and update_auth_config_status.
Files
Use endpoint wrappers (list_files, create_file_upload_request) or helper abstractions (FileUploadable, FileDownloadable, FileHelper).
CLI Sessions
Use create_cli_session and get_cli_session for CLI auth workflows.
Migration
Use get_migration_nanoid for UUID → NanoID migration lookups.
Project Config
Use get_project_config and update_project_config for project-level settings.
Examples
Execute a tool (client-level)
use composio_sdk::models::tools::ToolExecuteParams;
use std::collections::HashMap;
let mut arguments = HashMap::new();
arguments.insert("owner".to_string(), serde_json::json!("acme"));
arguments.insert("repo".to_string(), serde_json::json!("demo"));
arguments.insert("title".to_string(), serde_json::json!("Issue from SDK"));
let response = client
.execute_tool(ToolExecuteParams {
slug: "GITHUB_CREATE_ISSUE".to_string(),
arguments,
user_id: Some("user_123".to_string()),
..Default::default()
})
.await?;
Create an MCP server
use composio_sdk::models::mcp::MCPCreateParams;
let mcp = client
.create_mcp_server(MCPCreateParams {
name: "my-mcp".to_string(),
auth_config_ids: vec!["ac_123".to_string()],
allowed_tools: None,
no_auth_apps: None,
toolkits: None,
custom_tools: None,
managed_auth_via_composio: Some(false),
})
.await?;
List connected accounts
use composio_sdk::models::connected_accounts::ConnectedAccountListParams;
let accounts = client
.list_connected_accounts(ConnectedAccountListParams {
user_ids: Some(vec!["user_123".to_string()]),
..Default::default()
})
.await?;
Upload a file (helper flow)
use composio_sdk::models::files::FileUploadable;
use std::path::Path;
let uploaded = FileUploadable::from_path(
&client,
Path::new("./invoice.pdf"),
"GMAIL_SEND_EMAIL",
"gmail",
)
.await?;
println!("s3 key: {}", uploaded.s3key);
Create a CLI session
let cli = client.create_cli_session().await?;
println!("session code: {}", cli.code);
Architecture
src/client.rs: API methods and HTTP orchestration.src/models/: typed request/response models by domain.src/session.rs: Tool Router session abstraction.src/meta_tools/: Rust-native meta tool helpers.
Error Handling
Most APIs return Result<T, ComposioError>.
match client.create_cli_session().await {
Ok(session) => println!("code={}", session.code),
Err(err) => eprintln!("request failed: {err}"),
}
Contributing
- Keep changes focused by domain.
- Add/adjust serialization + deserialization tests for model changes.
- Run:
cargo fmt --allcargo testcargo check
- Keep parity work aligned with
COMPOSIO_CLIENT_AUDIT_REPORT.md.
Roadmap
Major parity gaps have been closed (MCP, CLI, migration, project config, connected-account lifecycle, auth-config lifecycle, direct link endpoint, files list/upload-request, tool/trigger enums, toolkit retrieve version params).
Remaining work is mainly contract-shape refinement in partially covered domains tracked in COMPOSIO_CLIENT_AUDIT_REPORT.md.
License
Licensed under either:
- MIT
- Apache-2.0
at your option.
README copy captured when this server was indexed; it may lag the repository. The original is authoritative.