Platform API
MCP over HTTP
Section titled “MCP over HTTP”The same MCP tool surface is available over HTTP:
| Method | Path | Purpose |
|---|---|---|
| GET, POST, DELETE | /mcp | Streamable HTTP MCP session |
Send Authorization: Bearer {platform_api_key} so requests run as your account. Use this when your assistant or automation can’t use stdio MCP but can call HTTPS.
Agent guidance
Section titled “Agent guidance”| Method | Path | Purpose |
|---|---|---|
| GET | /llms.txt | Plain-text guidance for LLM agents |
Provides quick start patterns, common patterns, error shape, and response metadata.
Per-app subdomains
Section titled “Per-app subdomains”When subdomain routing is enabled, each app has a subdomain derived from its name. Traffic to https://{subdomain}.{base_domain} resolves the app from the Host header, so you omit {app_id} from paths.
| Subdomain path | Equivalent purpose |
|---|---|
| /data/{table} | Data API CRUD |
| /fn/{function_name} | Invoke function |
| /auth/signup, /auth/login, … | End-user auth |
| /storage/upload, /storage/objects, … | File storage |
| /schema, /schema/apply, /migrations | Schema management |
Product suggestions
Section titled “Product suggestions”MCP tool: submit_suggestion
HTTP:
POST /suggestionsAuthorization: Bearer {api_key}
{ "category": "feature_request", "description": "Add support for GraphQL subscriptions", "severity": "medium", "source": "human_prompted"}| Field | Required | Values |
|---|---|---|
category | Yes | bug_report, feature_request, improvement, documentation |
description | Yes | Description text |
severity | No | low, medium, high, critical |
affected_tool | No | Tool name if applicable |
proposed_solution | No | Suggested fix |
source | No | agent or human_prompted |
Health checks
Section titled “Health checks”| Method | Path | Purpose |
|---|---|---|
| GET | /health | Liveness check |
| GET | /health/ready | Readiness check (database connectivity) |
Error format
Section titled “Error format”All errors include structured objects:
{ "error": { "code": "RESOURCE_NOT_FOUND", "message": "Table 'nonexistent' does not exist", "remediation": "Check the table name and ensure it exists in your schema", "documentation_url": "https://docs.butterbase.ai/api-reference/data-api" }}Follow the remediation field before retrying.
Rate limiting
Section titled “Rate limiting”Sensitive routes (especially auth) have strict per-route rate limits. Other routes may have additional limits depending on deployment configuration.