# Capabilities

<!-- Generated by scripts/check-capabilities.mjs --write from config/capabilities/*.json. Do not edit. -->

# Capabilities

Each capability turns on with one command in a folder connected by `npx scribase init`:

```sh
npx scribase add <name>        # prints the proof, for example the id of the email it sent
npx scribase add --list        # what can be added
```

Coding agents use the MCP tools `capabilities.add` and `capabilities.status`, which return
`{slot, live, proof: {kind, id, at}}`. When a capability needs a provider credential (your own
mail server), the answer is a console link: the person enters the credential on that page. No
secret is printed, written to `.env` or passed through chat.

## Live

Live capabilities work today and are covered by a compatibility test.

| Name | Capability | What you get |
| --- | --- | --- |
| `email` | Email | Sign-up, magic-link and password-reset email for your app's users, sent by Scribase with a daily cap and a delivery log, or through your own mail server. |

## Arriving

Arriving capabilities are planned. `scribase add` refuses them with a plain message until they
are live.

| Name | Capability | What you get |
| --- | --- | --- |
| `ai` | AI gateway | One key for AI model calls from your app, with usage per project. |
| `analytics` | Analytics | Privacy-friendly visits, events, product analytics and page speed for the app that uses this backend, through Railyard. |
| `billing` | Payments | Sell your own products and subscriptions and turn payments into entitlements in your database. |
| `consent` | Consent banner | A cookie and tracking consent banner for your app, with choices stored per visitor. |
| `deploy` | Deploy | Deploy the app that uses this backend with Railyard, with the project URL and keys wired in for you. |
| `entitlements` | In-app purchases | Know who paid inside your iOS and Android app: store purchases become entitlements your app and your database both read. |
| `errors` | Error tracking | Errors from your app, grouped into issues with their stack traces. Use the Sentry SDK you already know with the DSN Scribase gives you. |
| `flags` | Feature flags | Turn features on for some users and change remote settings without shipping a new build. |
| `launch-video` | Launch video | One click sends this project's name and URL to Menivor, which starts a short video about your app with them filled in. |
| `links` | App links | Links that open your app on the right screen on iOS and Android, including right after install, with clicks counted. |
| `mail` | Product email | Transactional and product email for your app through Rally Send, from your own domain, with delivery and bounce events. |
| `ota` | Over-the-air updates | Ship JavaScript changes to your installed iOS and Android app on its next launch, with one-click roll back, stored in this project. |
| `purchases` | Purchases | Subscriptions for your app without a third-party service: App Store, Google Play and web purchases checked on the server, entitlements, remote paywalls with experiments, and revenue analytics. |
| `push` | Push notifications | Send push notifications to your app's users on iOS and Android through the Expo push service, with dead devices removed for you. |
| `schedules` | Schedules | Run SQL or a function on a timer with pg_cron. Jobs still run while the project sleeps, and every run is logged. |
| `storage-s3` | S3 protocol for Storage | Access keys for your project's buckets, so standard S3 tools can list, upload and download files. |
| `uptime` | Uptime checks | Checks that your app's URLs answer, with an alert when one stops. |
