# LetsAskIt > We request. Machine creates. LetsAskIt is a creation-first AI content engine. You bring a spark — a topic, a brief, a few bullets, an angle, an audience, a rough draft, a transcript, or a URL — and it returns finished content for every platform that matters, in your saved brand voice. - One brief in, finished content everywhere. - One voice, every format. - Human review before anything ships. Nothing publishes itself. ## For agents Machine-readable service contract: `/.well-known/letsaskit.json` **MCP endpoint (live):** `POST /mcp` — streamable HTTP, stateless. Send the spec-required headers: `Content-Type: application/json` and `Accept: application/json, text/event-stream`. **Auth:** `Authorization: Bearer lsk_<32 lowercase hex chars>`. API keys are provisioned by the operator via `POST /api/admin/api-keys` (guarded by the `ADMIN_TOKEN` bearer) and are **pro or team only** — there are no free-tier keys. Only SHA-256 hashes are stored; the plaintext key is shown once at creation and never again. Missing/invalid/revoked keys get a JSON `401`; pro keys on `POST /mcp` get a JSON `403` (MCP needs a team key). ### Billing & quotas (Paddle) Machine-readable tier table: `/.well-known/letsaskit.json` → `billing.tiers`. - **Free** (Studio, keyless): 30 jobs/month, 1 voice profile, 2,000 neurons/day. **Pro** ($19 USD/mo): 500 jobs/month, 3 voice profiles, 5,000 neurons/day, REST. **Team** ($79 USD/mo): 2,500 jobs/month, 15 voice profiles, 9,000 neurons/day, REST + MCP. - Over the monthly job quota → `402 quota_exceeded` with an upgrade link to `https://letsaskit.com/#pricing`. Over the daily neuron budget → `429 daily_budget_exceeded` (resets `00:00 UTC`, `resets_at` in the body). - Billing webhook: `POST /api/billing/webhook` (Paddle-signed). The operator pairs subscriptions to keys via `POST /api/admin/subscriptions/link`; keys fall back to their base tier when the subscription lapses. ### MCP tools `create_pack` — run the full creation pipeline: normalize input → generate per format → quality gate → content pack. ```json {"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"create_pack","arguments":{"input_type":"brief","content":"The quiet math of wealth: automate a high savings rate into low-fee index funds.","formats":["summary","linkedin_post"]}}} ``` `create_from_url` — fetch a URL (article HTML), summarize it, create a pack. ```json {"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"create_from_url","arguments":{"url":"https://example.com/article","formats":["summary","seo_article"]}}} ``` `create_from_transcript` — create a pack from raw transcript text. ```json {"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"create_from_transcript","arguments":{"transcript":"Welcome back to the show. Today we talk about deep work.","formats":["newsletter_section"]}}} ``` `list_voice_profiles` — list saved brand voices (id, name, sample count). ```json {"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"list_voice_profiles","arguments":{}}} ``` `get_job_status` — poll a creation job; returns the pack when done. ```json {"jsonrpc":"2.0","id":5,"method":"tools/call","params":{"name":"get_job_status","arguments":{"job_id":""}}} ``` `input_type`: `brief` | `bullets` | `draft` | `transcript` | `url`. Formats: `linkedin_post`, `x_thread`, `newsletter_section`, `seo_article`, `summary` (default: all five). Each piece carries a visible quality gate: `voice_match` 0–100, `factual_flags` (dates/numbers to verify), `platform_fit` (length + structure rules, code-enforced). **Metering:** every successful tool call records a usage row (key id, tool, neuron estimate, timestamp): ~150 neuron-units per generated format, 25 per light call. Usage feeds the monthly job quotas and daily neuron budgets — see "Billing & quotas". ## Status M5 live (Paddle billing + entitlements + daily budgets + deploy workflow). See `docs/` for the build plan. ## Studio Human review queue at `/studio.html`: request a content pack (brief, bullets, draft, transcript, or URL), watch it poll to completion, review every piece against its visible quality gate (voice match, factual flags, platform fit), edit, and approve. Approved means ready to copy and ship by hand — v1 has no publishing step. Voice profiles are created and managed in the Studio too. ## Site - Blog: https://letsaskit.com/blog/ — launch notes on the workflow, voice profiles, and a full walkthrough. - Docs: https://letsaskit.com/docs/ — getting started, Studio guide, API reference, MCP setup, billing & quotas. - Pricing: https://letsaskit.com/pricing/ — tiers, quotas, FAQ. - About / contact / legal: /about/, /contact/, /terms/, /privacy/. Changelog: /changelog/. - Sitemap: https://letsaskit.com/sitemap.xml