Developers
CLI
Website findings your coding agent can use. The index365 CLI wraps the REST API for terminals, CI pipelines, and agent shells; everything below works identically against the live API with a scoped key.
Install
npm i -g @index365/cliThis puts the index365 command on your PATH. Every command below uses it directly.
To update to the latest version later:
npm i -g @index365/cli@latestThe CLI also prints a notice when a newer version is available, so you do not have to check by hand.
Authenticate
index365 login # asks how you want to sign in, then saves a key (0600)
index365 whoami # which account/org this machine is signed in as
index365 doctor # diagnose auth, version, and config (--fix applies safe fixes)
index365 --status # auth, org, plan, and credits at a glanceindex365 login asks how you want to sign in. Browser (the default) runs a loopback + PKCE flow: it opens the dashboard consent screen, and once you approve it mints a scoped key and saves it locally. The secret never travels through a URL, and nothing is pasted. API key lets you paste a key from the dashboard API Keys page (available on every plan, including Free). To skip the menu, run index365 login --web for the browser flow directly.
For CI or headless machines, pass index365 login --key <key> or set INDEX365_API_KEY to use a key with no prompt. The CLI never prints your secret.
Scan a site end to end
index365 projects list --status active
index365 projects create --domain yoursite.com --name "Yoursite" # add a project (idempotent by domain)
index365 scan https://yoursite.com # waits, then prints the score (AI-Readiness default)
index365 scan https://yoursite.com --no-wait # queue it and print the runId for async work
index365 runs list --project "$PROJECT_ID" # scan history for a project
index365 runs get "$RUN_ID" # one run's status and score
index365 findings list --run "$RUN_ID" --severity critical --json
index365 findings get --run "$RUN_ID" "$FINDING_ID" # one finding, with its fix prompt block
index365 report "$RUN_ID" # compact JSON context for your agent
index365 report "$RUN_ID" --save report.json # full JSON report
index365 projects archive "$PROJECT_ID" --confirm yoursite.com # reversible removal (echo its domain)
index365 projects restore "$PROJECT_ID" # reactivate the same project and historyscanresolves the project from the URL's domain automatically, because projects are domain-anchored. If the domain has no project yet, the command errors and prints the exact projects create command to run; it never creates one for you and never prompts in a non-interactive shell. Pass --project to override the resolution. The command waits by default and prints the score when the scan finishes; --no-wait queues the scan and prints the runId instead.
findings list filters by --severity, --category, and --stage. findings getincludes a fix prompt block: a ready-to-paste prompt for your coding agent, the same text as the dashboard's copy-fix-prompt button. report has three forms: report "$RUN_ID"prints compact JSON context sized for an agent's first read, --save writes the full JSON report to a file, and report --project "$PROJECT_ID" returns the latest completed report for a project (add --product to pick one).
Archive removes a project from active lists and blocks new scans, but preserves its scan history and API keys so it can be restored. index365 projects delete is a hidden compatibility alias for archive and reports the result as archived. Use --status archived to find projects you can restore, or --status all to include every lifecycle state.
A project's domain covers its apex and every subdomain, so scan can score staging.yoursite.com or pr-42.preview.yoursite.com under the same project without creating a new one.
Scan a local page before you deploy
scan local scores a page running on your own machine, so you can check a fix before you deploy. The CLI fetches the local URL and uploads the HTML response; index365 never fetches your machine, and cookie values never leave it. It scores the on-page AI-Readiness checks read from that HTML (content, structure, schema, and answerability). DNS, TLS, redirects, robots/sitemap/llms.txt, email auth, and response-header security are not evaluated and are listed in coverage.notEvaluated; run a live scan for those. scan local supports --product ai-readiness only today.
# Iterate locally: scan the dev server, fix, re-scan, repeat before pushing
index365 scan local http://localhost:3000/pricing \
--project "$PROJECT_ID" --fail-under 80scan local resolves the project the same way scan does and waits by default; pass --projectto pin it explicitly when the local URL's host does not match your project's domain. --fail-under exits non-zero when the score lands below your gate, so it slots straight into CI.
Marketing Signal scans
index365 scan https://yoursite.com --product marketing-signal # five-stage marketing scan
index365 report --project "$PROJECT_ID" --product marketing-signal # latest completed report (stage scores)
index365 findings list --run "$RUN_ID" --stage measure --json
index365 integrations list --project "$PROJECT_ID" # connected-signal providers
index365 integrations status --project "$PROJECT_ID" # provider connection health--product security is part of the same scan grammar, but Website Security is not yet available from the CLI: the command returns a friendly error that lists what is available. Until it ships, Website Security scans run through the REST API (POST /runs with scanMode=paid_website_security); see the REST API page.
CI example
# Fail the pipeline when a deploy degrades AI-Readiness
index365 scan "https://yoursite.com" --json > run.json
score=$(jq -r .score run.json)
test "$score" -ge 70 || { echo "AI-Readiness score $score below 70"; exit 1; }scan waits for the result by default, so the JSON on stdout already carries the final score. To gate before deploy instead, use scan local with --fail-under as shown above.
Conventions
--jsonon every command prints the raw API payload for scripts and agents.- Stable exit codes: 0 ok, 1 error, 2 usage, 3 auth, 4 not found, 5 quota/conflict/rate.
--statusprints a one-glance card: auth and key source, organization, plan, and credits remaining.index365 mcp configprints ready-to-paste MCP host configuration.-hprints help for any command, with examples;-Vprints the CLI version.
Migrating from 0.x
CLI 1.0.0 renames the scan grammar: scan is the verb, and products are values of --product, never command prefixes. Every old spelling keeps working as a hidden compatibility alias for at least 90 days: it runs the new command and prints a one-line rename note. Aliases no longer appear in help.
| Old (0.x) | New (1.0) |
|---|---|
runs start --project "$PROJECT_ID" | scan https://yoursite.com |
marketing run --project "$PROJECT_ID" | scan https://yoursite.com --product marketing-signal |
marketing report --project "$PROJECT_ID" | report --project "$PROJECT_ID" --product marketing-signal |
marketing findings --project "$PROJECT_ID" | findings list --run "$RUN_ID" --stage measure |
reports context "$RUN_ID" | report "$RUN_ID" |
reports download "$RUN_ID" | report "$RUN_ID" --save report.json |
projects delete "$PROJECT_ID" | projects archive "$PROJECT_ID" --confirm yoursite.com |
Drive the CLI from your agent
The index365 agent skills wrap these commands so your coding agent can run a scan and apply fixes in one instruction. Install and authenticate the CLI first, then see Agent skills for the one-command install.