Example Fixtures
Ready-to-use fixture examples for every mock type. Copy any example to get started
quickly, or use fixtures/examples/full-suite.json as a complete config
template.
LLM Fixtures
Embeddings
Matching on inputText and returning a vector.
{
"fixtures": [
{
"match": { "inputText": "hello world" },
"response": {
"embedding": [0.0023064255, -0.009327292, 0.015797347]
}
}
]
}
Streaming Physics
Realistic streaming timing with ttft, tps, and
jitter.
{
"fixtures": [
{
"match": { "userMessage": "explain gravity" },
"response": {
"content": "Gravity is a fundamental force of nature that attracts objects with mass toward one another. It keeps planets in orbit around the sun and holds galaxies together."
},
"streamingProfile": {
"ttft": 200,
"tps": 40,
"jitter": 0.1
}
}
]
}
Error Injection
Rate limit error response for any message.
{
"fixtures": [
{
"match": { "userMessage": ".*" },
"response": {
"error": {
"message": "Rate limit exceeded. Please retry after 30 seconds.",
"type": "rate_limit_error",
"code": "rate_limit_exceeded"
},
"status": 429
}
}
]
}
Sequential Responses
Stateful multi-turn responses using sequenceIndex.
{
"fixtures": [
{
"match": { "userMessage": "tell me a joke", "sequenceIndex": 0 },
"response": {
"content": "Why did the programmer quit his job? Because he didn't get arrays!"
}
},
{
"match": { "userMessage": "tell me a joke", "sequenceIndex": 1 },
"response": { "content": "Why do Java developers wear glasses? Because they can't C#!" }
},
{
"match": { "userMessage": "tell me a joke", "sequenceIndex": 2 },
"response": {
"content": "A SQL query walks into a bar, sees two tables, and asks: 'Can I join you?'"
}
}
]
}
Protocol Configs
MCP
Tools and resources for the Model Context Protocol mock.
{
"mcp": {
"tools": [
{
"name": "search",
"description": "Search the web",
"inputSchema": {
"type": "object",
"properties": {
"query": { "type": "string" }
},
"required": ["query"]
},
"result": "No results found for the given query."
}
],
"resources": [
{
"uri": "file:///readme",
"name": "README",
"mimeType": "text/plain",
"text": "# My Project\n\nThis is the project README."
}
]
}
}
A2A
Agent registration and streaming tasks for the Agent-to-Agent protocol mock.
{
"a2a": {
"agents": [
{
"name": "research-agent",
"description": "An agent that researches topics and returns summaries",
"version": "1.0.0",
"skills": [
{
"id": "web-research",
"name": "Web Research",
"description": "Search the web and summarize findings",
"tags": ["research", "search"]
}
],
"capabilities": { "streaming": true },
"messages": [
{
"pattern": "research",
"parts": [{ "text": "Here is a summary of my research findings on the topic." }]
}
],
"streamingTasks": [
{
"pattern": "deep-research",
"events": [
{ "type": "status", "state": "TASK_STATE_WORKING" },
{
"type": "artifact",
"name": "research-report",
"parts": [{ "text": "## Research Report\n\nFindings from deep research..." }],
"lastChunk": true
},
{ "type": "status", "state": "TASK_STATE_COMPLETED" }
],
"delayMs": 100
}
]
}
]
}
}
AG-UI
Text response and tool call event stream for the AG-UI protocol mock.
{
"agui": {
"fixtures": [
{
"match": { "message": "hello" },
"text": "Hi! How can I help you today?"
},
{
"match": { "message": "search" },
"events": [
{ "type": "RUN_STARTED", "threadId": "t1", "runId": "r1" },
{ "type": "TOOL_CALL_START", "toolCallId": "tc1", "toolCallName": "web_search" },
{
"type": "TOOL_CALL_ARGS",
"toolCallId": "tc1",
"delta": "{\"query\": \"latest news\"}"
},
{ "type": "TOOL_CALL_END", "toolCallId": "tc1" },
{
"type": "TEXT_MESSAGE_START",
"messageId": "m1",
"role": "assistant"
},
{
"type": "TEXT_MESSAGE_CONTENT",
"messageId": "m1",
"delta": "Here are the latest results..."
},
{ "type": "TEXT_MESSAGE_END", "messageId": "m1" },
{ "type": "RUN_FINISHED", "threadId": "t1", "runId": "r1" }
]
}
]
}
}
Vector
Collection with vectors and query results for the vector database mock.
{
"vector": {
"collections": [
{
"name": "documents",
"dimension": 3,
"vectors": [
{
"id": "doc-1",
"values": [0.1, 0.2, 0.3],
"metadata": { "title": "Getting Started", "category": "tutorial" }
},
{
"id": "doc-2",
"values": [0.4, 0.5, 0.6],
"metadata": { "title": "API Reference", "category": "reference" }
}
],
"queryResults": [
{
"id": "doc-1",
"score": 0.95,
"metadata": { "title": "Getting Started", "category": "tutorial" }
},
{
"id": "doc-2",
"score": 0.82,
"metadata": { "title": "API Reference", "category": "reference" }
}
]
}
]
}
}
Testing & Operations
Chaos Testing
Configure drop, malformed, and disconnect rates for chaos testing.
{
"llm": {
"fixtures": "fixtures/example-greeting.json",
"chaos": {
"dropRate": 0.1,
"malformedRate": 0.05,
"disconnectRate": 0.02
}
}
}
Record & Replay
Provider URLs for proxy mode to record live API traffic.
{
"llm": {
"record": {
"providers": {
"openai": "https://api.openai.com/v1",
"anthropic": "https://api.anthropic.com"
},
"fixturePath": "./recorded-fixtures"
}
}
}
Full Suite
Complete Config
A complete configuration running all mocks on one port.
{
"port": 4000,
"host": "127.0.0.1",
"metrics": true,
"strict": true,
"llm": {
"fixtures": "fixtures/example-greeting.json",
"chaos": {
"dropRate": 0.01,
"malformedRate": 0.005,
"disconnectRate": 0.002
}
},
"mcp": {
"serverInfo": { "name": "full-suite-mcp", "version": "1.0.0" },
"tools": [
{
"name": "search",
"description": "Search the knowledge base",
"inputSchema": {
"type": "object",
"properties": {
"query": { "type": "string" },
"limit": { "type": "number" }
},
"required": ["query"]
},
"result": "Found 3 results for your query."
}
],
"resources": [
{
"uri": "file:///config",
"name": "Configuration",
"mimeType": "application/json",
"text": "{\"version\": \"1.0\", \"environment\": \"test\"}"
}
],
"prompts": [
{
"name": "summarize",
"description": "Summarize a document",
"arguments": [{ "name": "text", "description": "The text to summarize", "required": true }],
"result": {
"messages": [
{
"role": "assistant",
"content": { "type": "text", "text": "Here is a summary of the provided text." }
}
]
}
}
]
},
"a2a": {
"agents": [
{
"name": "assistant",
"description": "A general-purpose assistant agent",
"version": "1.0.0",
"skills": [{ "id": "qa", "name": "Q&A", "description": "Answer questions" }],
"capabilities": { "streaming": true },
"messages": [
{
"pattern": ".*",
"parts": [{ "text": "I can help you with that." }]
}
]
}
]
},
"agui": {
"fixtures": [
{
"match": { "message": "hello" },
"text": "Hello from the full-suite mock!"
},
{
"match": { "toolName": "get_data" },
"events": [
{ "type": "RUN_STARTED", "threadId": "t1", "runId": "r1" },
{ "type": "TOOL_CALL_START", "toolCallId": "tc1", "toolCallName": "get_data" },
{ "type": "TOOL_CALL_ARGS", "toolCallId": "tc1", "delta": "{}" },
{ "type": "TOOL_CALL_END", "toolCallId": "tc1" },
{ "type": "RUN_FINISHED", "threadId": "t1", "runId": "r1" }
]
}
]
},
"vector": {
"collections": [
{
"name": "knowledge-base",
"dimension": 384,
"queryResults": [
{
"id": "kb-001",
"score": 0.97,
"metadata": { "source": "docs", "title": "Quick Start Guide" }
}
]
}
]
},
"services": {
"search": true,
"rerank": true,
"moderate": true
}
}