Skip to content

Mastra Integration

Learn how to integrate Mastra agents with the Scenario testing framework

Mastra agents work seamlessly with Scenario through the AgentAdapter[ts] interface. The key is managing conversation history and handling the iterative agent execution.

Basic Integration Pattern

Given a Mastra agent with tools and memory:

import { Agent } from '@mastra/core/agent';
import { Memory } from '@mastra/memory';
import { LibSQLStore } from '@mastra/libsql';
 
export const weatherAgent = new Agent({
  name: 'Weather Agent',
  instructions: 'You are a helpful weather assistant...',
  model: openai('gpt-4o-mini'),
  tools: { weatherTool },
  memory: new Memory({
    storage: new LibSQLStore({ url: 'file:../mastra.db' }),
  }),
});

You can integrate it with Scenario like this:

import scenario, { type AgentAdapter, AgentRole } from "@langwatch/scenario";
 
const weatherAgent: AgentAdapter = {
  role: AgentRole.AGENT,
  call: async (input) => {
    const result = await weatherAgentMastra.generate(input.messages);
    return result.response.messages;
  },
};

Full Example Project

For a complete working example with a customer support agent, including tools, system prompts, and comprehensive tests, check out the create-agent-app project.

Next Steps