EventureAI API
v1.0Build AI-powered applications with the EventureAI MCP gateway. Access 53 tools across 13 services through a single JSON-RPC 2.0 endpoint.
https://eventureai.com/api/mcpAuthentication
All API requests require authentication. EventureAI uses API keys with SHA-256 hashing for security. Keys are issued per-tenant or per-developer and can be scoped to specific services.
Getting an API Key
Contact the EventureAI team or use the admin API to generate a key. Your API key will be shown exactly once at creation time. Store it securely -- it cannot be retrieved later.
Key Formats
| Tier | Prefix | Use Case |
|---|---|---|
| Tenant | eai_tenant_live_ | Server-side, full tenant access (300 req/min) |
| Developer | eai_dev_live_ | Developer access, scoped permissions (60 req/min) |
| Test | eai_test_ | Testing and development (120 req/min, sandbox) |
Passing Your Key
Include your API key in any of these locations (checked in order):
curl https://eventureai.com/api/mcp \
-H "Authorization: Bearer eai_dev_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'curl https://eventureai.com/api/mcp \
-H "x-api-key: eai_dev_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'curl "https://eventureai.com/api/mcp?api_key=eai_dev_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'Rate Limits
Rate limits are enforced per API key on a rolling 1-minute window. Current usage is tracked via response headers.
| Tier | Requests / Min | Notes |
|---|---|---|
| Developer | 60 | Standard developer access |
| Test | 120 | Sandbox environment |
| Tenant | 300 | Full server-side access |
| Enterprise | Custom | Contact sales for custom limits |
Response Headers
X-RateLimit-LimitintegerMaximum requests allowed per minute for this key.
X-RateLimit-RemainingintegerRequests remaining in the current window.
X-RateLimit-Resetunix timestampWhen the current rate limit window resets.
When rate limited, the API returns a standard JSON-RPC error with code -32001 and a descriptive message including your limit.
MCP Protocol
EventureAI implements the Model Context Protocol (MCP) over HTTP using JSON-RPC 2.0. This means any MCP-compatible client (Claude, GPT, custom agents) can connect and use all 53 tools.
POST https://eventureai.com/api/mcp
initialize
Handshake to establish capabilities. Call this first.
{
"jsonrpc": "2.0",
"method": "initialize",
"params": {},
"id": 1
}{
"jsonrpc": "2.0",
"id": 1,
"result": {
"protocolVersion": "2024-11-05",
"capabilities": { "tools": {} },
"serverInfo": { "name": "eventureai", "version": "1.0.0" }
}
}tools/list
Discover all available tools and their input schemas.
{
"jsonrpc": "2.0",
"method": "tools/list",
"params": {},
"id": 2
}{
"jsonrpc": "2.0",
"id": 2,
"result": {
"tools": [
{
"name": "pipeline_start",
"description": "Start an AI app build...",
"inputSchema": {
"type": "object",
"properties": {
"prompt": { "type": "string", "description": "What do you want to build?" },
"tenant_id": { "type": "string", "description": "Tenant ID (default: 1)" }
},
"required": ["prompt"]
}
}
]
}
}tools/call
Execute a tool by name with arguments.
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "pipeline_start",
"arguments": {
"prompt": "Build a landing page for a coffee shop with menu and contact form",
"tenant_id": "1"
}
},
"id": 3
}{
"jsonrpc": "2.0",
"id": 3,
"result": {
"content": [
{
"type": "text",
"text": "{\"run_id\": \"a1b2c3d4-...\"}"
}
]
}
}ping
Health check. Returns an empty result object.
// Request
{ "jsonrpc": "2.0", "method": "ping", "id": 4 }
// Response
{ "jsonrpc": "2.0", "id": 4, "result": {} }Available Tools
53 tools across 13 services. Use tools/list for full schemas including parameters. Below is a quick reference.
Pipeline
8 toolsAI App Builder — start builds, track progress, manage artifacts
| pipeline_start | Start an AI app build from a plain-English description |
| pipeline_status | Get current status of a pipeline run |
| pipeline_respond | Respond to a human checkpoint in a pipeline run |
| pipeline_list_runs | List recent pipeline runs for a tenant |
| pipeline_get_artifacts | Get all build artifacts from a pipeline run |
| pipeline_canonical_errors | Browse the canonical error library |
| pipeline_billing_status | Check billing status and run quota |
| pipeline_upgrade | Get a Stripe checkout URL to upgrade plans |
Characters
3 toolsDashboard animation and agent character interactions
| character_event | Fire a character event to animate the admin dashboard |
| character_interact | Initiate a tap-on-the-shoulder conversation between characters |
| character_stats | Get 24-hour event counts and recent events per character |
Instigations
2 toolsThe API band — file wild ideas and cross-system queries
| instigate | File a wild idea or cross-system query |
| instigations_browse | Browse the instigations archive |
Grok (xAI)
3 toolsCode generation, review, and chat via xAI Grok
| grok_chat | Chat with Grok for general AI assistance |
| grok_build | Generate code with Grok |
| grok_review | Code review and analysis with Grok |
Stripe
5 toolsPayment processing — customers, subscriptions, products
| stripe_list_customers | List Stripe customers |
| stripe_list_subscriptions | List active subscriptions |
| stripe_list_products | List products |
| stripe_create_payment_link | Create a payment link |
| stripe_get_balance | Get current Stripe balance |
Resend
2 toolsTransactional email via Resend
| resend_send_email | Send a transactional email |
| resend_list_emails | List recent emails |
Twilio
2 toolsSMS messaging via Twilio
| twilio_send_sms | Send an SMS message |
| twilio_list_messages | List recent SMS messages |
Alchemy
3 toolsBlockchain data via Alchemy — tokens, NFTs, transactions
| alchemy_get_token_balances | Get token balances for a wallet |
| alchemy_get_nfts | Get NFTs owned by a wallet |
| alchemy_get_transactions | Get transaction history for a wallet |
Pinata (IPFS)
3 toolsDecentralized storage via Pinata/IPFS
| pinata_pin_json | Pin JSON data to IPFS |
| pinata_list_files | List pinned files |
| pinata_get_file | Retrieve a pinned file by CID |
Cloudflare
5 toolsInfrastructure management — Pages, Workers, DNS, cache
| cf_list_pages_projects | List Cloudflare Pages projects |
| cf_get_pages_deployments | Get deployments for a Pages project |
| cf_list_workers | List Cloudflare Workers |
| cf_list_zones | List DNS zones |
| cf_purge_cache | Purge cache for a zone |
Neon (Database)
3 toolsDirect database access via Neon serverless Postgres
| db_query | Execute a SQL query |
| db_get_tables | List all tables in the database |
| db_get_tenants | List all tenants |
Ollama
2 toolsLocal LLM inference via Ollama workers
| ollama_list_models | List available local models |
| ollama_generate | Generate text with a local model |
Google services — Gemini AI, Search, Maps, Gmail, Drive, Calendar, Sheets
| google_gemini | Chat with Google Gemini |
| google_search | Web search via Google |
| google_geocode | Geocode an address to coordinates |
| google_places_search | Search Google Places |
| google_gmail_send | Send an email via Gmail |
| google_gmail_list | List Gmail messages |
| google_drive_list | List Google Drive files |
| google_drive_read | Read a Google Drive file |
| google_calendar_list | List calendar events |
| google_calendar_create | Create a calendar event |
| google_sheets_read | Read data from Google Sheets |
| google_sheets_write | Write data to Google Sheets |
Errors
EventureAI uses standard JSON-RPC 2.0 error codes plus custom codes for platform-specific errors. All errors follow the same format.
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32001,
"message": "Unauthorized"
}
}Error Codes
| Code | Type | Description |
|---|---|---|
| -32700 | Parse error | Invalid JSON in request body |
| -32600 | Invalid request | Missing required JSON-RPC fields |
| -32601 | Method not found | Unknown method or tool name |
| -32602 | Invalid params | Missing or invalid tool arguments |
| -32603 | Internal error | Tool execution failed |
| -32001 | Unauthorized | Invalid, expired, or revoked API key |
| -32002 | Rate limited | Too many requests in the current window |
| -32003 | Forbidden | Key does not have required scope |
| -32004 | Billing exceeded | Tenant has exceeded their plan quota |
SDKs & Integration
Claude Code
Connect EventureAI as an MCP server in Claude Code. All 53 tools become available in your Claude session.
claude mcp add eventureai \
--transport http \
https://eventureai.com/api/mcp \
--header "Authorization: Bearer eai_dev_live_your_key_here"JavaScript / TypeScript
const EVENTUREAI_KEY = process.env.EVENTUREAI_API_KEY;
const MCP_URL = "https://eventureai.com/api/mcp";
async function callTool(name, args) {
const res = await fetch(MCP_URL, {
method: "POST",
headers: {
"Authorization": `Bearer ${EVENTUREAI_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
jsonrpc: "2.0",
method: "tools/call",
params: { name, arguments: args },
id: Date.now(),
}),
});
const data = await res.json();
if (data.error) throw new Error(data.error.message);
return JSON.parse(data.result.content[0].text);
}
// Start a pipeline build
const result = await callTool("pipeline_start", {
prompt: "Build a restaurant landing page with reservations",
});
console.log("Run ID:", result.run_id);Python
import os, json, requests
EVENTUREAI_KEY = os.environ["EVENTUREAI_API_KEY"]
MCP_URL = "https://eventureai.com/api/mcp"
def call_tool(name: str, args: dict) -> dict:
resp = requests.post(
MCP_URL,
headers={
"Authorization": f"Bearer {EVENTUREAI_KEY}",
"Content-Type": "application/json",
},
json={
"jsonrpc": "2.0",
"method": "tools/call",
"params": {"name": name, "arguments": args},
"id": 1,
},
)
data = resp.json()
if "error" in data:
raise Exception(data["error"]["message"])
return json.loads(data["result"]["content"][0]["text"])
# List all tools
resp = requests.post(
MCP_URL,
headers={"Authorization": f"Bearer {EVENTUREAI_KEY}", "Content-Type": "application/json"},
json={"jsonrpc": "2.0", "method": "tools/list", "id": 1},
)
tools = resp.json()["result"]["tools"]
print(f"{len(tools)} tools available")
# Start a build
result = call_tool("pipeline_start", {
"prompt": "Build a portfolio site with project gallery"
})
print(f"Run ID: {result['run_id']}")cURL
curl -s https://eventureai.com/api/mcp \
-H "Authorization: Bearer eai_dev_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}' | jq '.result.tools | length'curl -s https://eventureai.com/api/mcp \
-H "Authorization: Bearer eai_dev_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "db_get_tables",
"arguments": {}
},
"id": 1
}' | jq .curl -s https://eventureai.com/api/mcp \
-H "Authorization: Bearer eai_dev_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"ping","id":1}'Webhooks
Webhook notifications for pipeline events (build started, step completed, human checkpoint reached, build finished) are in development. Register a URL and receive real-time POST notifications for your builds.
eventureai.com/changelogEventureAI API Documentation · v1.0 · Last updated March 2026
Questions? Contact [email protected] or open an issue on GitHub.