Seven ready-made backend services: sign-in, email, waitlists, social feeds, web scraping, feature flags and notifications. Your AI agents can work with them too, within the limits you set.
Seven products, already built.
Use one or all seven. Each has its own API, docs and SDK. One account covers them all.
Open a workspace. Sign in to the console. All seven products live in it.
Create an API key. One key works for all seven, and you choose what it can do.
Install and call.
npm install productcraft, then pc.auth, pc.mail, pc.waitlist, pc.social, pc.trawl, pc.flags or pc.notify.
Auth
Passkeys, two-factor and organizations, without writing auth.
Add Apple, Google or GitHub sign-in. Setup checks your credentials as you save them. Move your users over from Auth0 or your own database, passwords included, so nobody has to reset.
Passkeys with Face ID, Touch ID or a security key, and two-factor codes from an authenticator app or by email.
- Your customers' own API keys. Let them create keys for their own scripts. A key can never do more than the person who made it, and every key expires.
- An audit log you can export. Every app keeps a log that nobody can edit.
Send email from your domain, not ours.
Write templates with a live preview, then send them with one API call.
Your domain, verified. Add the DNS records once and every email is signed as you, so receiving servers know it came from you.
Broadcasts. Send to a segment or a topic, now or on a schedule, with one-click unsubscribe.
- Retries never send twice. If your code sends the same request twice, the email still goes out once.
- Use your own email provider. Send through any SMTP service, per workspace or per domain.
ProductCraft sends its own email through Mail.
Trawl
Describe the data. Get JSON that matches.
Give it a page, a one-sentence description and a JSON Schema. A browser agent reads the page and returns JSON that fits. Results arrive on a signed webhook.
Describe it The schema and the sentence you send.
The five most recent releases: package name and version.
{ "type": "object", "properties": { "releases": { "type": "array", "maxItems": 5, "items": { "type": "object", "properties": { "package": { "type": "string" }, "version": { "type": "string" } }, "required": [ "package", "version" ] } } }, "required": [ "releases" ] }Get JSON The data the agent returned, checked against your schema.
{ "releases": [ { "package": "productcraft", "version": "0.3.1" }, { "package": "@productcraft/social", "version": "1.0.0" }, { "package": "productcraft", "version": "0.3.0" }, { "package": "@productcraft/waitlist", "version": "0.2.0" }, { "package": "@productcraft/trawl", "version": "0.2.0" } ] }
From the first signup to the first feed.
Waitlist
Signups that don't live in a spreadsheet.
Referrals and A/B tests. Each friend who joins with someone's referral link moves them up the line, and two versions of your pitch can split your visitors.
- Works from a static page. Your signup form posts straight to it, with no backend or API key. The console gives you the snippet.
- Approve, then invite people into your app. Or download the list as a CSV.
One workspace
One workspace. One key. Seven products.
Everything you create lives in one workspace, and one sign-in opens all seven products in the console.
- sdk
- @productcraft/auth · mail · waitlist · social · trawl · flags · notify, plus the productcraft umbrella. Node.js / TypeScript, server-side, MIT.
- webhooks
- Signed webhooks on all seven products, each with Send test, a 30-day event log and replay.
signin.ts
import { ProductCraft } from "productcraft"; // Sign-in acts for the end user: no API key is sent const pc = new ProductCraft(); const consumer = pc.auth.consumer("my-app"); const tokens = await consumer.signin({ identifier: "alice@example.com", password: "...", });
import { ProductCraft } from "productcraft"; // Public route: no API key is sent const pc = new ProductCraft(); const consumer = pc.auth.consumer("my-app"); const tokens = await consumer.signin({ identifier: "alice@example.com", password: "...", });
200 OK
{ "access_token": "eyJ…", "refresh_token": "eyJ…", "token_type": "Bearer", "expires_in": 3600 }
Plain REST, with optional typed SDKs for your server. The docs, the SDKs and the MCP server are all built from one OpenAPI spec.

From your editor
Claude, Cursor and VS Code can work in your workspace.
An MCP server at mcp.productcraft.co. You approve the connection in the browser, a policy preset caps what it may do, and every call lands in the audit log.
demo-lp-launch ("Northwind Tea: autumn menu") has 16 people on it, not counting test signups. All 16 are approved. All of them signed up today, 2026-11-05.
12 of the 16 came through a referral (about 75%). Those referrals came from 3 people:
- Grace Hopper: 6 referrals
- Alan Turing: 4
- Katherine Johnson: 2
First three in the queue:
1. Ada Lovelace (ada@example.com)
2. Grace Hopper (grace@example.com)
3. Alan Turing (alan@example.com), who was referred by Grace
Referral rewards have moved people up the queue. Ada, Grace, Alan and Katherine Johnson (4th) all now share effective position 1. So if you're ranking by effective position, those four are tied at the front, and the original signup order is what breaks the tie.
- Presets: readonly, mail, support, full. No preset lets an agent give itself more access.
- Approve only the products it needs. Within those, it can do whatever your policy allows.
Note what the command leaves out: no token, no key, no secret. The URL is the only setting.
Connect your editorChangelog
Shipped, dated, linked.
Every entry is a production deploy.
- Notify: one call reaches a user by inbox, email or push
- Flags: feature flags that evaluate in your app
- Auth SDK 1.0: every Auth operation as a method, flattened sign-in and typed errors
- Social SDK 1.1: social.community(id).as(actorId) and a method for every route
- Platform SDK 1.0: workspaces, members, API keys and policies as methods
- Waitlist SDK 1.0: lists, a keyless public form client, and webhook verification
Get started
The parts every app needs are done. Build the rest.
Start with the product that brought you here. The rest use the same key.
npm install productcraftpnpm add productcraftyarn add productcraftEach product has a free tier large enough to ship a side project on. Pricing is coming soon.
Social
Feeds, follows and ranking you don't have to build.
Ranked feeds you can tune. Balance new posts against popular ones for each community, with no machine-learning pipeline to run.