# Synlake > B2AI (Business-to-AI) infrastructure layer for autonomous agents. Synlake normalizes AWS, Azure, and GCP into one unified schema, generates ready-to-run execution kits (Terraform HCL + CLI commands), and simulates costs before deploy — so an AI agent can discover, evaluate, price, and provision cloud infrastructure with zero human intervention. Synlake is built for machine consumption, not humans. Every response is dense JSON, deterministic, and execution-ready. Agents describe an intent (`compute` is the only supported intent in v0.1; storage, database, and networking are on the roadmap) plus requirements and constraints (budget, region); Synlake returns the best option, cross-provider alternatives, and code ready to execute. ## Quickstart - Base URL: `https://api.synlake.ai` - Auth: `Authorization: Bearer sk_synlake_...` — one API key per agent - Rate limit: 100 req/min (authenticated) - Free tier: 100 calls/month. `POST /v1/infrastructure/estimate` is callable without an API key (rate-limited per IP) — zero friction for agents to try. - Responses: always JSON. Errors: `{ "error": { "code", "message", "suggestions": [] } }` ## Endpoints (v0.1) - `GET /v1/agent/usage` — Get the authenticated agent's usage - `POST /v1/billing/activate` — Activate metered billing - `POST /v1/execution/validate` — Validate an execution kit (dry-run) - `POST /v1/infrastructure/estimate` — Estimate costs without execution kits — *(no API key required)* - `POST /v1/infrastructure/query` — Recommend infrastructure with execution kit - `GET /v1/providers` — List supported cloud providers — *(no API key required)* ## Example: estimate (no auth required) Pass `constraints.max_monthly_budget_usd` (the canonical budget field — the `_usd` suffix is required) to get budget annotations. On `/estimate` the API always returns 200 with every option and flags each: `within_budget` per estimate, plus `budget_met` and `budget_requested` top-level. (On `/infrastructure/query` the same field is enforced hard: 400 `BUDGET_EXCEEDED` when no provider fits.) Unknown keys in `requirements` or `constraints` are rejected with `INVALID_REQUIREMENTS`. Request: ``` POST https://api.synlake.ai/v1/infrastructure/estimate Content-Type: application/json { "intent": "compute", "requirements": { "vcpus": 2, "memory_gb": 4, "region": "us-east-1" }, "providers": ["aws", "gcp", "azure"], "constraints": { "max_monthly_budget_usd": 28 } } ``` Response: ``` { "request_id": "req_abc123", "estimates": [ { "provider": "gcp", "instance_type": "e2-medium", "monthly_estimate": 24.46, "within_budget": true }, { "provider": "aws", "instance_type": "t3.medium", "monthly_estimate": 30.37, "within_budget": false }, { "provider": "azure", "instance_type": "Standard_B2s", "monthly_estimate": 30.37, "within_budget": false } ], "cheapest": "gcp", "savings_vs_most_expensive": "19.5%", "budget_met": true, "budget_requested": 28, "execution_kit_available": true, "get_api_key": "https://synlake.ai/docs#authentication" } ``` ## Error codes `INVALID_INTENT`, `INVALID_REQUIREMENTS`, `BUDGET_EXCEEDED`, `PROVIDER_UNAVAILABLE`, `RATE_LIMITED`, `UNAUTHORIZED` ## Integrations - MCP server (Streamable HTTP), namespace `ai.synlake/synlake` in the official MCP Registry. Connect directly at `https://api.synlake.ai/api/mcp` with `Authorization: Bearer sk_synlake_...`. - Smithery: `synlake/synlake` (https://smithery.ai/server/synlake/synlake). Install: `npm install -g smithery && smithery mcp add synlake/synlake`. - npm (stdio): `npx @synlake-ai/mcp-server` for MCP clients that launch a local command. - Works inside MCP-compatible agent frameworks (LangChain, CrewAI, Claude, etc.). ## Docs - API reference: https://synlake.ai/docs - MCP Registry: https://registry.modelcontextprotocol.io - GitHub: https://github.com/Walle-tr/synlake-api