Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

@composio/vercel

Composio provider for the Vercel AI SDK (ai). It converts Composio tools into the AI SDK's tool format with built-in execution: each wrapped tool carries its own execute function, so the AI SDK runs tool calls for you without a manual agentic loop.

Installation

npm install @composio/core @composio/vercel ai @ai-sdk/anthropic

@ai-sdk/anthropic powers the example below; swap in any AI SDK model package.

Set two environment variables:

Quickstart

Create a session for your user, pass its tools to the AI SDK, and cap the run with stopWhen:

import { anthropic } from '@ai-sdk/anthropic';
import { Composio } from '@composio/core';
import { VercelProvider } from '@composio/vercel';
import { generateText, stepCountIs } from 'ai';

const composio = new Composio({ provider: new VercelProvider() });

// Each session is scoped to one of your users
const session = await composio.create('user_123');
const tools = await session.tools();

const { text } = await generateText({
  model: anthropic('claude-sonnet-4-6'),
  tools,
  prompt: 'Summarize my emails from today',
  stopWhen: stepCountIs(10),
});

console.log(text);

For multi-turn conversations, store session.sessionId and reuse it with composio.use(sessionId) instead of creating a new session each turn.

Strict mode

Some models reject tool schemas that contain optional parameters. Pass strict: true to normalize each tool's input schema for OpenAI structured outputs before it reaches the AI SDK: every object lists all of its properties in required and is closed, and optional properties stay available but accept null. A null is dropped before the tool runs unless the tool's own schema accepts null for that parameter, so nullable fields still receive an explicit null. Tools whose schema cannot be expressed in strict mode, such as objects that accept arbitrary keys, allOf, prefixItems, or unresolved $refs, keep their original schema and log a warning:

const composio = new Composio({ provider: new VercelProvider({ strict: true }) });

Links