# Mirio > Mirio is inbound for sites that coding agents build: the building blocks and automations for demo request, contact, waitlist, onboarding and quote forms, whose every response is screened, read and routed. The form lives in the site's own code: a typed schema file and the `@trymirio/mirio` React components (Next.js, Vite, Astro). Mirio's hosted backend handles everything after submit: validation, spam protection, storage that stays coherent as the form changes, partial saves for multi-step forms, AI triage (a one-line summary, a category and a fit for each response), where each visitor came from, and delivery to email, Slack, signed webhooks or the site's own Postgres. The agent writes the form. Mirio handles everything after submit. All the docs in one Markdown file: https://trymirio.com/llms-full.txt Install: `npm install @trymirio/mirio`. CLI: `npx @trymirio/mirio ` (or `npx mirio ` after install). Everything is reachable without a browser except two one-time steps a human does: claiming the project (a Google, GitHub or email sign-in) and connecting Slack ("Add to Slack"). Pricing: free during the beta, with every feature, up to 1,000 responses a month (https://trymirio.com/docs/limits.md). Site: https://trymirio.com. Questions: https://trymirio.com/contact. ## Get started - [Quickstart (agent happy path)](https://api.trymirio.com/docs/index.md): `npx @trymirio/mirio init --agent ` (adds the framework plugin and CSS; agents name themselves with `--agent`) → write schema → render form → dev server registers it → test → claim → `mirio env vercel`. - [When to use Mirio](https://api.trymirio.com/docs/when-to-use.md): what it's for, when another tool fits better, and how it compares to form endpoints and hosted builders. - [Claiming and the sandbox](https://api.trymirio.com/docs/claiming.md): why unclaimed projects only accept localhost, how to go live. - [CLI](https://api.trymirio.com/docs/cli.md): `init`, `sync`, `env`, `push`, `test`, `status`, `check`, `claim`, `submissions`, `destinations`, `domains`, `review`, all with `--json`. - [Changelog](https://api.trymirio.com/docs/changelog.md): what changed in each `@trymirio/mirio` release; read it when you upgrade. ## Build forms - [Form schema](https://api.trymirio.com/docs/schema.md): `defineForm`, field types, constraints, pages, `renamedFrom`, settings. - [Conditional logic](https://api.trymirio.com/docs/conditional-logic.md): `showWhen` on fields and pages. - [Attribution and hidden fields](https://api.trymirio.com/docs/attribution.md): the page that led to the form, the landing page, the site the visit came from, campaign tags; `` in the root layout; hidden fields from URL parameters. - [Components overview](https://api.trymirio.com/docs/components.md): `
` auto-render, composing fields, multi-step, headless primitives. - [Styling](https://api.trymirio.com/docs/styling.md): five layers: inherit the site (shadcn mapping), dark mode, tokens and `theme`, `size` and `layout`, `classNames`; Tailwind vs compiled CSS. - [Theming](https://api.trymirio.com/docs/theming.md): every `theme` key, sizes, `layout`, `classNames` slots, with a live playground. ## Components (one page each: usage, props, customization) - [Form](https://api.trymirio.com/docs/components/form.md), [Field](https://api.trymirio.com/docs/components/field.md), [Input](https://api.trymirio.com/docs/components/input.md), [Textarea](https://api.trymirio.com/docs/components/textarea.md), [Select](https://api.trymirio.com/docs/components/select.md), [Choice](https://api.trymirio.com/docs/components/choice.md), [YesNo](https://api.trymirio.com/docs/components/yes-no.md), [Rating](https://api.trymirio.com/docs/components/rating.md), [DatePicker](https://api.trymirio.com/docs/components/date-picker.md), [Consent](https://api.trymirio.com/docs/components/consent.md), [Submit](https://api.trymirio.com/docs/components/submit.md), [Success](https://api.trymirio.com/docs/components/success.md), [MultiStep, Page and Progress](https://api.trymirio.com/docs/components/multi-step.md), [Label, Help and FieldError](https://api.trymirio.com/docs/components/label-help-error.md), [MirioProvider](https://api.trymirio.com/docs/components/provider.md), [Headless hooks](https://api.trymirio.com/docs/components/headless.md) ## After submit - [Spam and validation](https://api.trymirio.com/docs/spam.md): what the server checks, what gets flagged, Cloudflare Turnstile with your own widget (`npx mirio turnstile set `), what is never dropped. - [Enrichment](https://api.trymirio.com/docs/enrichment.md): email signals, duplicates, velocity, company domain. - [Triage (AI review)](https://api.trymirio.com/docs/ai-review.md): summary, category, fit against the form's ideal response (`npx mirio review --ideal "…"`), stated facts and a spam second opinion per response; corrections; privacy. - [Partial submissions](https://api.trymirio.com/docs/partials.md): how multi-step progress is saved and shown. - [Destinations](https://api.trymirio.com/docs/destinations.md): Slack, your own Postgres or Supabase database, email, webhooks; `mirio destinations add`; category and fit filters for email and Slack. - [Webhooks and email](https://api.trymirio.com/docs/webhooks.md): payload, signature verification, retries, replay. - [Agent-native forms](https://api.trymirio.com/docs/agents.md): the `agents` policy, `schema.json`, submitting as a declared agent. ## Reference - [HTTP API](https://api.trymirio.com/docs/api.md): submission endpoint, project API, read API, error codes. - [Usage](https://api.trymirio.com/docs/limits.md): free during the beta, one plan with every feature; what is counted, the monthly limits and rate limits. ## Rules of thumb for agents 1. Code is the source of truth. Form structure lives in `mirio/forms/.ts`. The dashboard never edits it. 2. Forms register themselves: `withMirio` (next.config) or `mirio()` (vite/astro config) registers a form when its file is saved in the dev server and runs `mirio sync` during builds. Without a dev server, `npx mirio push`. Then `npx mirio test ` to confirm a round trip. 3. After the human claims the project, run `npx mirio env vercel` (or `netlify`, `print`) so deploy builds register forms. Without the key a build fails only when visitors would be rejected. 4. Never put passwords, card numbers or government ids in a form. Mirio rejects those fields at push. 5. Share the claim link with the human. Going live takes one sign-in. 6. Settings the team changes without a deploy live in Mirio, not the file: `npx mirio destinations add slack --form ` (prints an "Add to Slack" link for the human; or `email` for members, `webhook`, `postgres`), `npx mirio domains add example.com`, `npx mirio review --ideal "…"`, `npx mirio turnstile set ` (Cloudflare Turnstile with the site's own widget). 7. Forms accept declared agent submissions by default (`settings.agents: 'accept'`, labeled as agent). Read a form's `schema.json` before submitting as an agent. 8. `` in the root layout is optional: ask the human before adding it. It records which page led to the form and where the visit started.