CLI
Connect an agent through the installed Kitecraft CLI.
The CLI calls your Kitecraft API using KITECRAFT_API_URL and KITECRAFT_API_KEY. It prints JSON to stdout. To connect an agent, copy the setup prompt on the documentation home.
Resume onboarding with your agent
kitecraft onboarding status --json
kitecraft onboarding advance --step connections --jsonStatus reports the same current step as /onboarding, without provider calls. Use the existing website/profile, Google/PostHog, question, visibility and plan commands to complete the current operation. Optional stages can be acknowledged with --step connections, questions or visibility; --step plan finishes only after a real saved plan exists. All acknowledgments require a write key. Read-only keys can inspect progress. Checkout and OAuth consent still happen in the customer’s browser.
Order: trial → website → analysis → optional connections → optional questions → optional visibility → opportunities → plan. Confirm the customer’s research scope once and reuse valid authorization; do not run paid research merely to read progress.
Install and setup
The installed executable is kitecraft. Node.js 22.13 or later is required.
Install the release tarball:
npm install --global https://kitecraft.ai/downloads/kitecraft-cli-0.1.0.tgz
kitecraft --helpexport KITECRAFT_API_URL="https://kitecraft.ai"
export KITECRAFT_API_KEY="paste-a-key-from-the-dashboard"For local verification or a supplied preview origin, set KITECRAFT_API_URL to that origin instead, such as http://127.0.0.1:3100. Replace the placeholder with a real key and never commit it. Set the API origin explicitly. A missing key fails configuration; an empty or invalid key is rejected by the server.
- Only HTTPS origins are accepted, except HTTP on localhost for local testing.
- Never put keys in arguments, files, or screenshots. Use environment variables only.
- Market and Google commands need your account-owned project ID as
--id. Usekitecraft context --jsonto find it.
Market: read stored evidence
Status is free of provider calls:
kitecraft market status --id PROJECT_IDReturns your saved themes, competitors, report (or null if never fetched), status (idle|queued|running|complete|failed), and message. Poll status after a refresh.
Market: save competitors, themes, or refresh
kitecraft market select --id PROJECT_ID --domains "example-a.com,example-b.com"
kitecraft market themes --id PROJECT_ID --json '{"themes":[{"label":"...","rationale":"...","seeds":["seed1"]}]}'
kitecraft market refresh --id PROJECT_IDselectsaves up to three known business domains as context, excluding your own website. Rerun to replace.themessaves one to three editable themes and makes no provider calls. Rerun to replace.refreshqueues one research run with no automatic paid retries. Pollmarket statusuntilcompleteorfailed.- All three need write access with an active trial or subscription and return
{ "accepted": true }.
Questions: suggest, select, and edit
kitecraft question status --id PROJECT_ID
kitecraft question generate --id PROJECT_ID
kitecraft question select --id PROJECT_ID --json '{"selectedIds":["..."],"expectedVersion":null}'statusis free of provider calls and returns candidates, recommendations, selection, and run state.generateruns one paid suggestion with no automatic retry. Needs a saved business profile and write access.select,edit,add, andarchivetake JSON payloads with IDs plus the current selection version or question revision. Stale versions fail instead of overwriting.- All writes need an account-owned project and an active trial or subscription. See Monitor questions.
Visibility: check saved answers
kitecraft visibility status --id PROJECT_ID
kitecraft visibility start --id PROJECT_ID
kitecraft visibility run --id PROJECT_ID --run-id RUN_ID
kitecraft visibility observation --id PROJECT_ID --observation-id OBSERVATION_ID
kitecraft visibility cancel --id PROJECT_ID --run-id RUN_IDstatusandrunare free of provider calls.runreturns per-question progress with counts.startqueues one bounded paid check and returns a run ID immediately. Pollstatusuntil terminal; partial runs keep successful answers.observationreads one saved answer with citations and mention evidence.cancelstops further paid submissions.- Starting checks requires write access, an account-owned project and an active trial or subscription. Cancel requires write access and remains available after trial expiry. See Visibility checks.
Google: status, connect, select, sync
kitecraft google status --id PROJECT_ID
kitecraft google connect --id PROJECT_ID
kitecraft google select --id PROJECT_ID --gsc "sc-domain:example.com" --ga4 properties/123456789
kitecraft google sync --id PROJECT_IDstatusmakes no Google request.connectreturns{ "url": "..." }. Open it in the owner browser and complete Google consent. The CLI cannot grant access.selectneeds write access. Use currently accessible IDs only.syncqueues one bounded import and needs an active trial or subscription plus write access. Pollgoogle status.- Disconnect is owner-browser-only and has no CLI command.
Limits
Reads are free of provider calls; refresh/sync queue async work. Writes need an account-owned project and an active trial or subscription.
Daily visibility settings: visibility daily --id PROJECT_ID, visibility pause --id PROJECT_ID, and visibility resume --id PROJECT_ID. Resume moves forward to the next UTC window; it does not buy missed days.
Content plan
plan read --id PROJECT_ID reads the saved plan. plan generate --id PROJECT_ID creates it once from saved evidence. An existing plan is returned unchanged.
plan item, plan cluster, and plan cadence accept --id PROJECT_ID --json PAYLOAD. Every edit includes the current expectedRevision; stale edits return a conflict. These edits make no provider calls. See Content plan and the generated API reference for payload fields.
Briefs: request, poll, and read the full artifact
kitecraft brief request --id PROJECT_ID --json '{"itemId":"ITEM_ID"}'
kitecraft brief status --id PROJECT_ID --operation OPERATION_ID
kitecraft brief read --id PROJECT_ID --item ITEM_ID --format markdown > brief.md
kitecraft brief cancel --id PROJECT_ID --operation OPERATION_IDrequeststarts paid research for one saved plan item and returns a durable operation ID immediately. Add"refresh":trueto the JSON payload for an explicit refresh; ordinary re-reads are free.statusis free. Poll untilready,failed, orcanceled; it reports saved phases, never invented percentages.readis free and returns the identical complete Markdown through--format markdown(stdout carries only the artifact) or JSON withmarkdownHash.--file PATHsaves without overwriting an existing file.cancelstops queued or running research; completed artifacts stay readable. See Writing briefs.
Next content batch
After reading a saved plan, use kitecraft plan extend --id "$PROJECT_ID" --json '{"expectedRevision":4}', replacing 4 with its current revision. It uses current research and previous coverage, appends at most five useful assignments, and preserves existing edits, dates and packets. This is an authorized research write; use a write key. plan generate remains the first-plan operation.
Interview recordings and transcripts
See Interviews and transcripts for private recording uploads, full transcripts, correction and retry commands. MCP tool descriptions include accepted formats and the CLI/API upload path. brief_read returns current ready materials beside the frozen packet; Markdown-only exports need a separate material_list read.
Limits and activity
All keys and interfaces share account request protection. If throttled, wait for the returned retry time before trying again. Billing-period research allowances are separate. Check Activity and usage for current usage and recent operations, and the API reference for request limits.