Documentation Index Fetch the complete documentation index at: https://datagen.dev/llms.txt
Use this file to discover all available pages before exploring further.
Code mode lets you write local scripts that call MCP tools through the DataGen SDK. Use it when you need batch processing, complex logic, or production-grade automation that goes beyond interactive MCP tool calls.
Using Claude Code? Run /datagen:code-mode for guided scripting with tool discovery, durable checkpoint patterns, and large output handling.
When to Use Code Mode
Use MCP Tools When
Interactive discovery and debugging
Simple one-off operations
Learning tool schemas
AI agent-assisted work
Use Code Mode When
Batch processing (100+ operations)
Scheduled jobs and cron tasks
CI/CD pipelines
Complex data transformations
Production applications
Rule of thumb: fewer than 5 tool calls with small results — use MCP directly. More than 5 calls, large data, or complex logic — write a script with the SDK.
Installation
pip install datagen-python-sdk
npm install @datagen-dev/typescript-sdk
Set your API key:
export DATAGEN_API_KEY = "your_api_key_here"
Quick Start
from datagen_sdk import DatagenClient
client = DatagenClient()
# Call any MCP tool as a Python function
result = client.execute_tool(
"mcp_Linear_list_issues" ,
{ "filter" : { "state" : { "name" : { "eq" : "In Progress" }}}}
)
print ( f "Found { len (result) } active issues" )
import { DatagenClient } from '@datagen-dev/typescript-sdk' ;
const client = new DatagenClient ();
const result = await client . executeTool (
"mcp_Linear_list_issues" ,
{ filter: { state: { name: { eq: "In Progress" } } } }
);
console . log ( `Found ${ result . length } active issues` );
Patterns
Simple Script
One-off data operations:
from datagen_sdk import DatagenClient
client = DatagenClient()
# Fetch leads from database
leads = client.execute_tool( "mcp_Supabase_run_sql" , {
"params" : {
"sql" : "SELECT * FROM leads WHERE score > 80" ,
"projectId" : "your-project" ,
"databaseName" : "your-db"
}
})
# Create follow-up tasks in Linear
for lead in leads:
client.execute_tool( "mcp_Linear_create_issue" , {
"title" : f "Follow up with { lead[ 'company' ] } " ,
"description" : f "Contact: { lead[ 'email' ] } \n Score: { lead[ 'score' ] } " ,
"teamId" : "your-team-id"
})
# Notify team on Slack
client.execute_tool( "mcp_Slack_chat_postMessage" , {
"channel" : "#sales" ,
"text" : f "Created { len (leads) } follow-up tasks for high-priority leads"
})
Batch Processing with Error Handling
Process large datasets with retry logic:
from datagen_sdk import DatagenClient, DatagenToolError
client = DatagenClient( retries = 3 , backoff_seconds = 1.0 )
contacts = [ ... ] # Your contact list
results = []
errors = []
for contact in contacts:
try :
result = client.execute_tool( "mcp_Gmail_gmail_send_email" , {
"to" : contact[ "email" ],
"subject" : "Welcome!" ,
"body" : f "Hi { contact[ 'name' ] } , thanks for signing up!"
})
results.append({ "email" : contact[ "email" ], "status" : "sent" })
except DatagenToolError as e:
errors.append({ "email" : contact[ "email" ], "error" : str (e)})
print ( f "Sent: { len (results) } , Failed: { len (errors) } " )
Turn your script into a deployed API endpoint:
from datagen_sdk import DatagenClient
client = DatagenClient()
# Deploy your script as a custom tool
deployment = client.deploy_custom_tool(
name = "weekly_lead_enrichment" ,
description = "Enrich new leads with LinkedIn and web data" ,
code = open ( "enrich.py" ).read(),
input_schema = {
"type" : "object" ,
"properties" : {
"domains" : { "type" : "array" , "items" : { "type" : "string" }}
},
"required" : [ "domains" ]
},
output_vars = [ "enriched_leads" , "total" ],
expected_tools = [ "mcp_LinkedIn_get_company" , "mcp_Perplexity_search" ],
mcp_server_names = [ "LinkedIn" , "Perplexity" ]
)
print ( f "Deployed: { deployment[ 'deployment_uuid' ] } " )
# Run it
result = client.run_custom_tool(
deployment[ "deployment_uuid" ],
input_vars = { "domains" : [ "acme.com" , "globex.com" ]}
)
print (result[ "output_vars" ])
Error Handling
from datagen_sdk import (
DatagenClient,
DatagenAuthError,
DatagenToolError,
DatagenHttpError
)
client = DatagenClient( retries = 3 , backoff_seconds = 0.5 )
try :
result = client.execute_tool( "mcp_Linear_list_projects" , { "limit" : 10 })
except DatagenAuthError:
print ( "Authentication failed - check your API key" )
except DatagenToolError as e:
print ( f "Tool execution failed: { e } " )
except DatagenHttpError as e:
print ( f "HTTP error: { e } " )
Error Description DatagenAuthErrorAuthentication failed (401/403) — check API key or MCP connection DatagenToolErrorTool execution failed — check parameters DatagenHttpErrorNetwork or HTTP-level errors DatagenDeploymentErrorDeployment or custom tool run failed DatagenSecretErrorSecret management errors
Full API Reference
For complete method signatures, parameters, and return types, see:
Python SDK Reference Every method, every parameter
TypeScript SDK Reference Every method, every parameter