Documentation

Build your backend in minutes

Everything you need to provision a project, design a schema, secure your data plane and hand it to your AI tool.

Getting started

chisel.to gives every project an isolated database, a metadata-driven REST API, end-user auth, payments, file storage, custom endpoints, an MCP server config, a typed TypeScript SDK and an AI-readable docs brief. You bring the frontend (or the AI tool building it); chisel.to handles everything below.

  • Create an account, then a project (Free or Premium).
  • Design your tables visually or paste a .sql file to import.
  • Grab an API key and the downloadable SDK/MCP config from the project's Connect page.
  • Drop them into your AI tool and start building.

Project creation

From the dashboard, click New project. Pick a name, slug, plan, database engine and location. Each project lives in its own isolated database and is addressed by its slug — your API root is:

https://your-domain.com/v1/<project-slug>

You can optionally paste a starter .sql file at creation time. chisel.to parses it, persists the tables, and provisions them automatically.

Database engines

Choose at create time:

  • PostgreSQL — the default, managed on your configured Postgres server.
  • MySQL / MariaDB — managed on a dedicated MySQL host (env TENANT_MYSQL_*).
  • MongoDB — document store, served through the same metadata-driven API.

Either let chisel.to provision the database for you, or pick Remote to bring your own connection (Supabase, Neon, PlanetScale, Atlas).

Schema designer

Visual designer for tables, columns, indexes and relationships. Each column maps to a specific input element in the auto-generated portal forms (text, number, toggle, date, datetime, file, JSON, enum select, relation select, rich-text).

  • Per-column flags: nullable, unique, index, default.
  • Composite indexes with optional name + unique flag.
  • belongsTo relationships → foreign-key columns with nullable / on-delete behavior.
  • Opt-in SEO column set: meta_title, meta_description, slug, og_image.
  • Every table automatically gets id, created_at and updated_at.

SQL import / export

Use the Import SQL button to paste CREATE TABLE statements (or upload a .sql file) and preview the parsed tables before applying. Export SQL downloads the project's current schema as a CREATE-TABLE script including indexes, foreign keys and defaults.

CREATE TABLE posts (
  id BIGSERIAL PRIMARY KEY,
  title VARCHAR(255) NOT NULL,
  status ENUM('draft','published') NOT NULL,
  author_id BIGINT REFERENCES authors(id)
);

Auto-CRUD API

Every table exposes a metadata-driven REST surface, authenticated by a project API key (sent as a Bearer token):

  • GET /v1/<project>/<resource> — list (paginated)
  • GET /v1/<project>/<resource>/<id> — show
  • POST /v1/<project>/<resource> — create
  • PUT /v1/<project>/<resource>/<id> — update
  • DELETE /v1/<project>/<resource>/<id> — delete

List queries support ?page, ?per_page (max 100), ?sort=-created_at, ?fields=a,b and per-column filters like ?status=published or ?price[gte]=10.

Custom endpoints

Attach saved queries and actions to any table from the schema designer's Endpoints button.

  • QueryGET /v1/<project>/<resource>/_actions/<name> with a saved filter / sort / per_page.
  • ActionPOST /v1/<project>/<resource>/<id>/_actions/<name> with a saved set payload that updates the targeted record.

Auth & social login

End-user auth comes built in: email + password, JWT access + refresh tokens, and OAuth social login for Google, GitHub, Apple, Facebook, Microsoft, Discord and LinkedIn. Each project supplies its own OAuth client keys — chisel.to never logs anyone in against shared credentials.

POST /v1/<project>/auth/register   { name?, email, password }
POST /v1/<project>/auth/login      { email, password }
POST /v1/<project>/auth/refresh    { refresh_token }
GET  /v1/<project>/auth/me          (Bearer access_token)
GET  /v1/<project>/auth/social/<provider>/redirect

Integrations

Payments (Stripe, PayPal, Paddle, Lemon Squeezy, Polar), email (SMTP, Resend, SES), SMS/WhatsApp (Twilio, WhatsApp Cloud) and storage (S3, R2, local). Each is configured per project with encrypted credentials and surfaced through normalized endpoints — /payments/checkout, /email/send, /messages/send, /files.

Site details & SEO

The project Settings page lets you upload a logo, favicon and OG image, plus set the site name, description, locale, timezone and default SEO meta. All of it is exposed publicly at:

GET /v1/<project>/site

Your frontend can read this on first load to render <head> meta and branding.

Domains, CORS & IP allowlist

  • Custom domain / subdomain per project (DNS + TLS handled at your hosting layer).
  • CORS — per-project allowlist of browser origins; OPTIONS preflight handled automatically.
  • API key IP allowlist — restrict any key to specific IPs or CIDR ranges.
  • Auth redirect allowlist — global allowlist for post-login redirect URLs.

Analytics

Every authenticated data-plane request is logged (method, path, status, latency, IP). The project Analytics page shows requests over 24h / 7d, error count, average latency, top endpoints and a 14-day bar chart of total vs errored requests.

MCP, SDK & AI docs

The Connect page generates four artifacts on demand:

  • OpenAPI 3.1 spec — every resource and platform endpoint.
  • TypeScript SDK — single-file, dependency-free, typed.
  • MCP config — drops into Cursor, Claude Code, Windsurf and the rest.
  • llms.txt — a markdown brief your AI tool can ingest as context.

Billing

Pricing is per project. Free projects support up to 100 end users and 10 MB of storage. Premium projects are $10/month each, with unlimited users and 1 GB of storage. Pay via Stripe or Polar — pick a platform-wide default with BILLING_DEFAULT or let users choose at checkout.