# How to integrate Detrack MCP with Vercel AI SDK v6

```json
{
  "title": "How to integrate Detrack MCP with Vercel AI SDK v6",
  "toolkit": "Detrack",
  "toolkit_slug": "detrack",
  "framework": "Vercel AI SDK",
  "framework_slug": "ai-sdk",
  "url": "https://composio.dev/toolkits/detrack/framework/ai-sdk",
  "markdown_url": "https://composio.dev/toolkits/detrack/framework/ai-sdk.md",
  "updated_at": "2026-10-12T12:43:54.190Z"
}
```

## Introduction

This guide walks you through connecting Detrack to Vercel AI SDK v6 using the Composio tool router. By the end, you'll have a working Detrack agent that can list all deliveries scheduled for today, edit delivery details for a specific order, view all vehicles in your fleet through natural language commands.
This guide will help you understand how to give your Vercel AI SDK agent real control over a Detrack account through Composio's Detrack MCP server.
Before we dive in, let's take a quick look at the key ideas and tools involved.

## Also integrate Detrack with

- [Claude Code](https://composio.dev/toolkits/detrack/framework/claude-code)
- [Claude Cowork](https://composio.dev/toolkits/detrack/framework/claude-cowork)
- [OpenAI Agents SDK](https://composio.dev/toolkits/detrack/framework/open-ai-agents-sdk)
- [Claude Agent SDK](https://composio.dev/toolkits/detrack/framework/claude-agents-sdk)
- [Codex](https://composio.dev/toolkits/detrack/framework/codex)
- [OpenClaw](https://composio.dev/toolkits/detrack/framework/openclaw)
- [Hermes](https://composio.dev/toolkits/detrack/framework/hermes-agent)
- [Atomic Agent](https://composio.dev/toolkits/detrack/framework/atomic-agent)
- [Google ADK](https://composio.dev/toolkits/detrack/framework/google-adk)
- [LangChain](https://composio.dev/toolkits/detrack/framework/langchain)
- [Mastra AI](https://composio.dev/toolkits/detrack/framework/mastra-ai)
- [LlamaIndex](https://composio.dev/toolkits/detrack/framework/llama-index)
- [CrewAI](https://composio.dev/toolkits/detrack/framework/crew-ai)
- [Pydantic AI](https://composio.dev/toolkits/detrack/framework/pydantic-ai)
- [AutoGen](https://composio.dev/toolkits/detrack/framework/autogen)

## TL;DR

Here's what you'll learn:
- How to set up and configure a Vercel AI SDK agent with Detrack integration
- Using Composio's Tool Router to dynamically load and access Detrack tools
- Creating an MCP client connection using HTTP transport
- Building an interactive CLI chat interface with conversation history management
- Handling tool calls and results within the Vercel AI SDK framework

## What is Vercel AI SDK?

The Vercel AI SDK is a TypeScript library for building AI-powered applications. It provides tools for creating agents that can use external services and maintain conversation state.
Key features include:
- streamText: Core function for streaming responses with real-time tool support
- MCP Client: Built-in support for Model Context Protocol via @ai-sdk/mcp
- Step Counting: Control multi-step tool execution with stopWhen: stepCountIs()
- OpenAI Provider: Native integration with OpenAI models

## What is the Detrack MCP server, and what's possible with it?

The Detrack MCP server is an implementation of the Model Context Protocol that connects your AI agent and assistants like Claude, Cursor, etc directly to your Detrack account. It provides structured and secure access to your delivery management system, so your agent can perform actions like tracking deliveries, managing jobs, editing or deleting jobs, and viewing vehicles on your behalf.
- Real-time delivery and collection management: Instantly create, edit, or delete delivery and collection jobs, letting your agent keep your schedules and records up to date.
- Comprehensive job search and filtering: Ask your agent to search for deliveries, collections, or vehicles with flexible criteria—by date, status, country, and more.
- Bulk actions for efficient operations: Direct your agent to delete all deliveries or collections for a specific date, making large-scale updates a breeze.
- Fleet visibility and vehicle management: Retrieve a complete list of all your vehicles, so your agent can help with asset tracking and resource planning.
- Detailed job listing and reporting: Let your agent fetch and summarize all jobs or collections, providing daily overviews and insights for your logistics workflow.

## Supported Tools

| Tool slug | Name | Description |
|---|---|---|
| `DETRACK_ADD_COLLECTION` | Add Collection | Add a new collection job in Detrack. A collection is a pickup job where items are collected from a location. The Delivery Order (do) number must be unique per date. Include the country name in the address for better geocoding. |
| `DETRACK_CREATE_BULK_DEPOTS` | Bulk Create Depots | Tool to create multiple depot locations in one request. Use when you need to create several depots at once. Each depot requires at least a name and an address that can be geocoded. Include country name in addresses for accurate geocoding. |
| `DETRACK_CREATE_DEPOT` | Create Depot | Create a new depot in Detrack. A depot serves as a starting/ending point for delivery routes. Requires at least a name and an address that can be geocoded. The address should be complete and include the country name for accurate geocoding. |
| `DETRACK_DELETE_ALL_COLLECTIONS` | Delete All Collections | Tool to delete all collections in the account. Use when you need to purge every collection for a specific date after confirmation. |
| `DETRACK_DELETE_ALL_DELIVERIES` | Delete All Deliveries | Tool to delete all deliveries for a specific date. Use when you need to purge deliveries in bulk before scheduling new ones. |
| `DETRACK_DELETE_DELIVERY` | Delete Delivery | Tool to delete one or more deliveries by date and D.O. number. Use after confirming delivery entries to avoid accidental data loss (max 100 items per call). |
| `DETRACK_DELETE_DEPOTS_BULK` | Bulk Delete Depots | Tool to delete multiple depots in a single request. Use when you need to remove depots that are no longer needed. |
| `DETRACK_DELETE_JOB_BY_QUERY` | Delete Job by Query | Tool to delete a job by DO number using query parameters. Use when you need to delete a specific job by its DO number. Returns success status indicating whether the job was found and deleted. |
| `DETRACK_EDIT_DELIVERY` | Edit Delivery | Edit one or more existing deliveries by date and D.O. number. Use this tool to update delivery details such as address, recipient, phone, instructions, or vehicle assignment. The delivery must already exist in Detrack (identified by date + D.O. number combination). Limitations: - Maximum 100 deliveries per request - Date and D.O. must match an existing delivery |
| `DETRACK_GET_JOB_BY_DO_AND_DATE` | Get Job by DO and Date | Tool to retrieve a specific job by its DO (Delivery Order) number and date. Use when you need to fetch detailed information about a specific delivery or collection job. Returns comprehensive job details including status, tracking, items, and proof of delivery information. |
| `DETRACK_GET_JOB_BY_QUERY` | Get Job By Query | Tool to retrieve a single job by DO number using query parameters. Use when you need to fetch detailed information about a specific delivery or collection job. |
| `DETRACK_LIST_DEPOTS` | List Depots | Tool to list all depot locations with pagination. Use when you need to retrieve depot information including addresses and coordinates. Supports pagination to handle large numbers of depots. |
| `DETRACK_LIST_JOBS_V2` | List Jobs V2 | Tool to list jobs with pagination and filtering using Detrack API v2. Use when you need to retrieve jobs with filters by date, type, assign_to, status, DO number, or search query. Supports sorting and pagination for efficient data retrieval. |
| `DETRACK_SEARCH` | Search | Tool to search for deliveries, collections, or vehicles. Use after defining search criteria to retrieve matching jobs. |
| `DETRACK_SEARCH_JOBS` | Search Jobs | Search jobs with advanced filters including date range, DO number, statuses, groups, vehicles, zones, and more. Use this to find specific jobs across multiple criteria using the v2 search API. |
| `DETRACK_UPDATE_DEPOTS_BULK` | Update Depots Bulk | Update multiple depot locations in a single request. Use this to modify depot details such as address, contact information, or coordinates. Each depot is identified by its name or ID. This is more efficient than updating depots individually when you need to update multiple depots at once. |
| `DETRACK_VIEW_ALL_COLLECTIONS` | View All Collections | View all collection jobs scheduled for a specific date in Detrack. Returns collection details including delivery order number, pickup address, status, tracking link, and items. Use this to retrieve all collections for a particular day by providing a date in YYYY-MM-DD format. |
| `DETRACK_VIEW_ALL_DELIVERIES` | View All Deliveries | Tool to view all deliveries for a specific date. Use when you need to retrieve all delivery jobs on a given date. |
| `DETRACK_VIEW_ALL_VEHICLES` | View All Vehicles | Retrieve all vehicles registered in your Detrack account. Returns complete fleet information including real-time location, speed, connection status, and vehicle details. Use this to get an overview of your entire fleet or check which vehicles are currently active. |

## Supported Triggers

None listed.

## Creating MCP Server - Stand-alone vs Composio SDK

The Detrack MCP server is an implementation of the Model Context Protocol that connects your AI agent to Detrack. It provides structured and secure access so your agent can perform Detrack operations on your behalf through a secure, permission-based interface.
With Composio's managed implementation, you don't have to create your own developer app. For production, if you're building an end product, we recommend using your own credentials. The managed server helps you prototype fast and go from 0-1 faster.

## Step-by-step Guide

### 1. Prerequisites

Before you begin, make sure you have:
- Node.js and npm installed
- A Composio account with API key
- An OpenAI API key

### 1. Getting API Keys for OpenAI and Composio

OpenAI API Key
- Go to the [OpenAI dashboard](https://platform.openai.com/settings/organization/api-keys) and create an API key. You'll need credits to use the models, or you can connect to another model provider.
- Keep the API key safe.
Composio API Key
- Log in to the [Composio dashboard](https://dashboard.composio.dev?utm_source=toolkits&utm_medium=framework_docs).
- Navigate to your API settings and generate a new API key.
- Store this key securely as you'll need it for authentication.

### 2. Install required dependencies

First, install the necessary packages for your project.
What you're installing:
- @ai-sdk/openai: Vercel AI SDK's OpenAI provider
- @ai-sdk/mcp: MCP client for Vercel AI SDK
- @composio/core: Composio SDK for tool integration
- ai: Core Vercel AI SDK
- dotenv: Environment variable management
```bash
npm install @ai-sdk/openai @ai-sdk/mcp @composio/core ai dotenv
```

### 3. Set up environment variables

Create a .env file in your project root.
What's needed:
- OPENAI_API_KEY: Your OpenAI API key for GPT model access
- COMPOSIO_API_KEY: Your Composio API key for tool access
- COMPOSIO_USER_ID: A unique identifier for the user session
```bash
OPENAI_API_KEY=your_openai_api_key_here
COMPOSIO_API_KEY=your_composio_api_key_here
COMPOSIO_USER_ID=your_user_id_here
```

### 4. Import required modules and validate environment

What's happening:
- We're importing all necessary libraries including Vercel AI SDK's OpenAI provider and Composio
- The dotenv/config import automatically loads environment variables
- The MCP client import enables connection to Composio's tool server
```typescript
import "dotenv/config";
import { openai } from "@ai-sdk/openai";
import { Composio } from "@composio/core";
import * as readline from "readline";
import { streamText, type ModelMessage, stepCountIs } from "ai";
import { createMCPClient } from "@ai-sdk/mcp";

const composioAPIKey = process.env.COMPOSIO_API_KEY;
const composioUserID = process.env.COMPOSIO_USER_ID;

if (!process.env.OPENAI_API_KEY) throw new Error("OPENAI_API_KEY is not set");
if (!composioAPIKey) throw new Error("COMPOSIO_API_KEY is not set");
if (!composioUserID) throw new Error("COMPOSIO_USER_ID is not set");

const composio = new Composio({
  apiKey: composioAPIKey,
});
```

### 5. Create Tool Router session and initialize MCP client

What's happening:
- We're creating a Tool Router session that gives your agent access to Detrack tools
- The create method takes the user ID and specifies which toolkits should be available
- The returned mcp object contains the URL and authentication headers needed to connect to the MCP server
- This session provides access to all Detrack-related tools through the MCP protocol
```typescript
async function main() {
  // Create a tool router session for the user
  const session = await composio.create(composioUserID!, {
    toolkits: ["detrack"],
  });

  const mcpUrl = session.mcp.url;
```

### 6. Connect to MCP server and retrieve tools

What's happening:
- We're creating an MCP client that connects to our Composio Tool Router session via HTTP
- The mcp.url provides the endpoint, and mcp.headers contains authentication credentials
- The type: "http" is important - Composio requires HTTP transport
- tools() retrieves all available Detrack tools that the agent can use
```typescript
const mcpClient = await createMCPClient({
  transport: {
    type: "http",
    url: mcpUrl,
    headers: session.mcp.headers, // Authentication headers for the Composio MCP server
  },
});

const tools = await mcpClient.tools();
```

### 7. Initialize conversation and CLI interface

What's happening:
- We initialize an empty messages array to maintain conversation history
- A readline interface is created to accept user input from the command line
- Instructions are displayed to guide the user on how to interact with the agent
```typescript
let messages: ModelMessage[] = [];

console.log("Chat started! Type 'exit' or 'quit' to end the conversation.\n");
console.log(
  "Ask any questions related to detrack, like summarize my last 5 emails, send an email, etc... :)))\n",
);

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
  prompt: "> ",
});

rl.prompt();
```

### 8. Handle user input and stream responses with real-time tool feedback

What's happening:
- We use streamText instead of generateText to stream responses in real-time
- toolChoice: "auto" allows the model to decide when to use Detrack tools
- stopWhen: stepCountIs(10) allows up to 10 steps for complex multi-tool operations
- onStepFinish callback displays which tools are being used in real-time
- We iterate through the text stream to create a typewriter effect as the agent responds
- The complete response is added to conversation history to maintain context
- Errors are caught and displayed with helpful retry suggestions
```typescript
rl.on("line", async (userInput: string) => {
  const trimmedInput = userInput.trim();

  if (["exit", "quit", "bye"].includes(trimmedInput.toLowerCase())) {
    console.log("\nGoodbye!");
    rl.close();
    process.exit(0);
  }

  if (!trimmedInput) {
    rl.prompt();
    return;
  }

  messages.push({ role: "user", content: trimmedInput });
  console.log("\nAgent is thinking...\n");

  try {
    const stream = streamText({
      model: openai("gpt-5"),
      messages,
      tools,
      toolChoice: "auto",
      stopWhen: stepCountIs(10),
      onStepFinish: (step) => {
        for (const toolCall of step.toolCalls) {
          console.log(`[Using tool: ${toolCall.toolName}]`);
          }
          if (step.toolCalls.length > 0) {
            console.log(""); // Add space after tool calls
          }
        },
      });

      for await (const chunk of stream.textStream) {
        process.stdout.write(chunk);
      }

      console.log("\n\n---\n");

      // Get final result for message history
      const response = await stream.response;
      if (response?.messages?.length) {
        messages.push(...response.messages);
      }
    } catch (error) {
      console.error("\nAn error occurred while talking to the agent:");
      console.error(error);
      console.log(
        "\nYou can try again or restart the app if it keeps happening.\n",
      );
    } finally {
      rl.prompt();
    }
  });

  rl.on("close", async () => {
    await mcpClient.close();
    console.log("\n👋 Session ended.");
    process.exit(0);
  });
}

main().catch((err) => {
  console.error("Fatal error:", err);
  process.exit(1);
});
```

## Complete Code

```typescript
import "dotenv/config";
import { openai } from "@ai-sdk/openai";
import { Composio } from "@composio/core";
import * as readline from "readline";
import { streamText, type ModelMessage, stepCountIs } from "ai";
import { createMCPClient } from "@ai-sdk/mcp";

const composioAPIKey = process.env.COMPOSIO_API_KEY;
const composioUserID = process.env.COMPOSIO_USER_ID;

if (!process.env.OPENAI_API_KEY) throw new Error("OPENAI_API_KEY is not set");
if (!composioAPIKey) throw new Error("COMPOSIO_API_KEY is not set");
if (!composioUserID) throw new Error("COMPOSIO_USER_ID is not set");

const composio = new Composio({
  apiKey: composioAPIKey,
});

async function main() {
  // Create a tool router session for the user
  const session = await composio.create(composioUserID!, {
    toolkits: ["detrack"],
  });

  const mcpUrl = session.mcp.url;

  const mcpClient = await createMCPClient({
    transport: {
      type: "http",
      url: mcpUrl,
      headers: session.mcp.headers, // Authentication headers for the Composio MCP server
    },
  });

  const tools = await mcpClient.tools();

  let messages: ModelMessage[] = [];

  console.log("Chat started! Type 'exit' or 'quit' to end the conversation.\n");
  console.log(
    "Ask any questions related to detrack, like summarize my last 5 emails, send an email, etc... :)))\n",
  );

  const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
    prompt: "> ",
  });

  rl.prompt();

  rl.on("line", async (userInput: string) => {
    const trimmedInput = userInput.trim();

    if (["exit", "quit", "bye"].includes(trimmedInput.toLowerCase())) {
      console.log("\nGoodbye!");
      rl.close();
      process.exit(0);
    }

    if (!trimmedInput) {
      rl.prompt();
      return;
    }

    messages.push({ role: "user", content: trimmedInput });
    console.log("\nAgent is thinking...\n");

    try {
      const stream = streamText({
        model: openai("gpt-5"),
        messages,
        tools,
        toolChoice: "auto",
        stopWhen: stepCountIs(10),
        onStepFinish: (step) => {
          for (const toolCall of step.toolCalls) {
            console.log(`[Using tool: ${toolCall.toolName}]`);
          }
          if (step.toolCalls.length > 0) {
            console.log(""); // Add space after tool calls
          }
        },
      });

      for await (const chunk of stream.textStream) {
        process.stdout.write(chunk);
      }

      console.log("\n\n---\n");

      // Get final result for message history
      const response = await stream.response;
      if (response?.messages?.length) {
        messages.push(...response.messages);
      }
    } catch (error) {
      console.error("\nAn error occurred while talking to the agent:");
      console.error(error);
      console.log(
        "\nYou can try again or restart the app if it keeps happening.\n",
      );
    } finally {
      rl.prompt();
    }
  });

  rl.on("close", async () => {
    await mcpClient.close();
    console.log("\n👋 Session ended.");
    process.exit(0);
  });
}

main().catch((err) => {
  console.error("Fatal error:", err);
  process.exit(1);
});
```

## Conclusion

You've successfully built a Detrack agent using the Vercel AI SDK with streaming capabilities! This implementation provides a powerful foundation for building AI applications with natural language interfaces and real-time feedback.
Key features of this implementation:
- Real-time streaming responses for a better user experience with typewriter effect
- Live tool execution feedback showing which tools are being used as the agent works
- Dynamic tool loading through Composio's Tool Router with secure authentication
- Multi-step tool execution with configurable step limits (up to 10 steps)
- Comprehensive error handling for robust agent execution
- Conversation history maintenance for context-aware responses
You can extend this further by adding custom error handling, implementing specific business logic, or integrating additional Composio toolkits to create multi-app workflows.

## How to build Detrack MCP Agent with another framework

- [Claude Code](https://composio.dev/toolkits/detrack/framework/claude-code)
- [Claude Cowork](https://composio.dev/toolkits/detrack/framework/claude-cowork)
- [OpenAI Agents SDK](https://composio.dev/toolkits/detrack/framework/open-ai-agents-sdk)
- [Claude Agent SDK](https://composio.dev/toolkits/detrack/framework/claude-agents-sdk)
- [Codex](https://composio.dev/toolkits/detrack/framework/codex)
- [OpenClaw](https://composio.dev/toolkits/detrack/framework/openclaw)
- [Hermes](https://composio.dev/toolkits/detrack/framework/hermes-agent)
- [Atomic Agent](https://composio.dev/toolkits/detrack/framework/atomic-agent)
- [Google ADK](https://composio.dev/toolkits/detrack/framework/google-adk)
- [LangChain](https://composio.dev/toolkits/detrack/framework/langchain)
- [Mastra AI](https://composio.dev/toolkits/detrack/framework/mastra-ai)
- [LlamaIndex](https://composio.dev/toolkits/detrack/framework/llama-index)
- [CrewAI](https://composio.dev/toolkits/detrack/framework/crew-ai)
- [Pydantic AI](https://composio.dev/toolkits/detrack/framework/pydantic-ai)
- [AutoGen](https://composio.dev/toolkits/detrack/framework/autogen)

## Related Toolkits

- [0CodeKit](https://composio.dev/toolkits/0codekit) - 0CodeKit is a utility API platform for AI, document, image, and data workflows. Use it to convert, validate, generate, store, and automate data without custom backend code.
- [Airtop](https://composio.dev/toolkits/airtop) - Airtop is a cloud browser platform for AI-powered web automation. Use it to navigate sites, extract data, and run reusable browser workflows.
- [Apify MCP](https://composio.dev/toolkits/apify_mcp) - Apify MCP is the official MCP server for Apify's web scraping and browser automation platform. Use it to run actors, collect structured web data, and automate crawling workflows.
- [Apilio](https://composio.dev/toolkits/apilio) - Apilio is a home automation platform that lets you connect and control smart devices from different brands. It helps you build flexible automations with complex conditions, schedules, and integrations.
- [Basin](https://composio.dev/toolkits/basin) - Basin is a no-code form backend for quickly setting up reliable contact forms. It lets you collect and manage form submissions without writing any server-side code.
- [Bika.ai](https://composio.dev/toolkits/bika) - Bika.ai is an AI automation database platform for managing spaces, teams, records, automations, and outgoing webhooks. It helps teams organize structured data and automate database-driven workflows in one place.
- [Botster](https://composio.dev/toolkits/botster) - Botster is a web automation service for running configurable data collection bots. Use it to collect structured web data without building and maintaining scrapers yourself.
- [Bouncer](https://composio.dev/toolkits/bouncer) - Bouncer is an email validation platform that verifies the authenticity of email addresses in real-time and batch. It helps boost deliverability and reduce bounce rates for your communications.
- [BrowserAct](https://composio.dev/toolkits/browseract) - BrowserAct is a hosted browser-automation service for running web workflows. Use it to execute repeatable browser tasks with templates, proxies, and APIs.
- [Celigo](https://composio.dev/toolkits/celigo) - Celigo is an integration platform as a service for connecting apps, data, and business workflows. It helps teams automate cross-system processes without building every integration from scratch.
- [CheckFlow](https://composio.dev/toolkits/checkflow) - CheckFlow is a workflow and checklist platform for repeatable processes, tasks, templates, teams, data sets, and automation. Use it to standardize operations, track process execution, and keep teams aligned.
- [Conveyor](https://composio.dev/toolkits/conveyor) - Conveyor is a platform that automates security reviews with a Trust Center and AI-driven questionnaire automation. It streamlines compliance and vendor security processes for faster, hassle-free reviews.
- [CrewAI](https://composio.dev/toolkits/crew_ai) - CrewAI is a platform for running deployed automations and managing AMP control-plane resources. Use it to automate workflows and centrally control SaaS automation resources.
- [Cronfree Time Scheduler](https://composio.dev/toolkits/cronfree_time_scheduler) - Cronfree Time Scheduler is an API-based scheduler for recurring webhook calls. Use it to create and remove timezone-aware schedules without running cron.
- [Crowdin](https://composio.dev/toolkits/crowdin) - Crowdin is a localization management platform that streamlines translation workflows and collaboration. It helps teams centralize multilingual content, boost productivity, and automate translation processes.
- [Databox](https://composio.dev/toolkits/databox) - Databox is a business analytics platform that connects your data from any tool and device. It helps you track KPIs, build dashboards, and discover actionable insights.
- [Dify](https://composio.dev/toolkits/dify) - Dify is a platform for running and managing published workflow apps via a Service API. Use it to execute workflows and inspect configuration and run history quickly.
- [Digital Humani](https://composio.dev/toolkits/digital_humani) - Digital Humani is a reforestation API for browsing planting projects, submitting tree requests, and tracking planted trees. It helps teams connect climate action directly to products, campaigns, and customer experiences.
- [Dnsfilter](https://composio.dev/toolkits/dnsfilter) - Dnsfilter is a cloud-based DNS security and content filtering solution. It helps organizations block online threats and manage safe internet access with ease.
- [EnforcedFlow](https://composio.dev/toolkits/enforcedflow) - EnforcedFlow is a work routing platform for advanced round-robin groups, agent criteria, availability, and email assignments. It helps teams distribute work fairly and quickly using configurable assignment rules.

## Frequently Asked Questions

### What are the differences in Tool Router MCP and Detrack MCP?

With a standalone Detrack MCP server, the agents and LLMs can only access a fixed set of Detrack tools tied to that server. However, with the Composio Tool Router, agents can dynamically load tools from Detrack and many other apps based on the task at hand, all through a single MCP endpoint.

### Can I use Tool Router MCP with Vercel AI SDK v6?

Yes, you can. Vercel AI SDK v6 fully supports MCP integration. You get structured tool calling, message history handling, and model orchestration while Tool Router takes care of discovering and serving the right Detrack tools.

### Can I manage the permissions and scopes for Detrack while using Tool Router?

Yes, absolutely. You can configure which Detrack scopes and actions are allowed when connecting your account to Composio. You can also bring your own OAuth credentials or API configuration so you keep full control over what the agent can do.

### How safe is my data with Composio Tool Router?

All sensitive data such as tokens, keys, and configuration is fully encrypted at rest and in transit. Composio is SOC 2 Type 2 compliant and follows strict security practices so your Detrack data and credentials are handled as safely as possible.

---
[See all toolkits](https://composio.dev/toolkits) · [Composio docs](https://docs.composio.dev/llms.txt)
