Back to Context7

Context7Agent

docs/agentic-tools/ai-sdk/agents/context7-agent.mdx

1.0.305.6 KB
Original Source

The Context7Agent class is a pre-configured AI agent that handles the complete documentation lookup workflow automatically. It combines both resolveLibraryId and queryDocs tools with an optimized system prompt.

Usage

typescript
import { Context7Agent } from "@upstash/context7-tools-ai-sdk";
import { anthropic } from "@ai-sdk/anthropic";

const agent = new Context7Agent({
  model: anthropic("claude-sonnet-4-20250514"),
});

const { text } = await agent.generate({
  prompt: "How do I use React Server Components?",
});

console.log(text);

Configuration

typescript
new Context7Agent(config?: Context7AgentConfig)

Parameters

<ParamField path="config" type="Context7AgentConfig" optional> Configuration options for the agent. <Expandable title="properties"> <ParamField path="model" type="LanguageModel" optional> Language model to use. Must be a LanguageModel instance from an AI SDK provider.
  Examples:
  - `anthropic('claude-sonnet-4-20250514')`
  - `openai('gpt-5.2')`
  - `google('gemini-1.5-pro')`
</ParamField>
<ParamField path="apiKey" type="string" optional>
  Context7 API key. If not provided, uses the `CONTEXT7_API_KEY` environment variable.
</ParamField>
<ParamField path="system" type="string" optional>
  Custom system prompt. Overrides the default `AGENT_PROMPT`.
</ParamField>
<ParamField path="stopWhen" type="StopCondition" optional default="stepCountIs(5)">
  Condition for when the agent should stop. Defaults to stopping after 5 steps.
</ParamField>
</Expandable> </ParamField>

Returns

Context7Agent extends the AI SDK Agent class and provides generate() and stream() methods.

Agent Workflow

The agent follows a structured multi-step workflow:

mermaid
flowchart TD
    A[User Query] --> B[Extract Library Name]
    B --> C[Call resolveLibraryId]
    C --> D{Results Found?}
    D -->|Yes| E[Select Best Match]
    D -->|No| F[Report No Results]
    E --> G[Call queryDocs]
    G --> H{Sufficient Context?}
    H -->|Yes| I[Generate Response]
    H -->|No| J[Fetch More Docs]
    J --> H
    I --> K[Return Answer with Examples]

Step-by-Step

  1. Extract library name - Identifies the library/framework from the user's query
  2. Resolve library - Calls resolveLibraryId to find the Context7 library ID
  3. Select best match - Analyzes results based on reputation, coverage, and relevance
  4. Fetch documentation - Calls queryDocs with the selected library ID and user's query
  5. Query if needed - Makes additional queries if initial context is insufficient
  6. Generate response - Provides an answer with code examples from the documentation

Examples

Basic Usage

typescript
import { Context7Agent } from "@upstash/context7-tools-ai-sdk";
import { anthropic } from "@ai-sdk/anthropic";

const agent = new Context7Agent({
  model: anthropic("claude-sonnet-4-20250514"),
});

const { text } = await agent.generate({
  prompt: "How do I set up authentication in Next.js?",
});

console.log(text);

With OpenAI

typescript
import { Context7Agent } from "@upstash/context7-tools-ai-sdk";
import { openai } from "@ai-sdk/openai";

const agent = new Context7Agent({
  model: openai("gpt-5.2"),
});

const { text } = await agent.generate({
  prompt: "Explain Tanstack Query's useQuery hook",
});

Streaming Responses

typescript
import { Context7Agent } from "@upstash/context7-tools-ai-sdk";
import { anthropic } from "@ai-sdk/anthropic";

const agent = new Context7Agent({
  model: anthropic("claude-sonnet-4-20250514"),
});

const { textStream } = await agent.stream({
  prompt: "How do I create a Supabase Edge Function?",
});

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

Custom Configuration

typescript
import { Context7Agent } from "@upstash/context7-tools-ai-sdk";
import { anthropic } from "@ai-sdk/anthropic";
import { stepCountIs } from "ai";

const agent = new Context7Agent({
  model: anthropic("claude-sonnet-4-20250514"),
  apiKey: process.env.CONTEXT7_API_KEY,
  stopWhen: stepCountIs(8), // Allow more steps for complex queries
});

Custom System Prompt

typescript
import { Context7Agent, AGENT_PROMPT } from "@upstash/context7-tools-ai-sdk";
import { openai } from "@ai-sdk/openai";

const agent = new Context7Agent({
  model: openai("gpt-5.2"),
  system: `${AGENT_PROMPT}

Additional instructions:
- Always include TypeScript examples
- Mention version compatibility when relevant
- Suggest related documentation topics`,
});

Comparison: Agent vs Tools

FeatureContext7AgentIndividual Tools
SetupSingle configurationConfigure each tool
WorkflowAutomatic multi-stepManual orchestration
System promptOptimized defaultYou provide
CustomizationLimitedFull control
Best forQuick integrationCustom workflows

When to Use the Agent

  • Rapid prototyping
  • Standard documentation lookup use cases
  • When you want sensible defaults

When to Use Individual Tools

  • Custom agentic workflows
  • Integration with other tools
  • Fine-grained control over the process
  • Custom system prompts with specific behavior