For agents
Coding agents can run kinstactl without a terminal session. This page has the prompt to hand them and a skill file that carries the same text.
Why the CLI is agent-safe
Section titled “Why the CLI is agent-safe”- Without a TTY the CLI never prompts. With
--no-inputit fails instead of asking. - Errors are JSON on stderr with a
code, amessageandhintsthat say what to do next. - Every write supports
--dry-run, which prints the resolved target and request and changes nothing. - Irreversible actions need
--confirm <site-name>, so an agent cannot trigger them by accident. kinstactl commands --jsonlists every command, argument, flag and the API endpoints it calls.- The docs are published as plain text in llms.txt.
The prompt
Section titled “The prompt”Paste this into your agent’s instructions. Use the copy button in the corner of the block.
You operate Kinsta hosting through the command line client kinstactl. Follow these rules.
Install- Install the CLI with npm i -g kinstactl, or run it without installing through npx kinstactl.- Verify the install:
kinstactl --version
Authenticate- Credentials come from the KINSTA_API_KEY and KINSTA_COMPANY_ID environment variables, or from an existing profile (select one with --profile <name>).- Never print, log or echo the API key, and never put it in a command line, a file or a commit.
Discover- List every command with its arguments, flags and the API endpoints it calls:
kinstactl commands --json
- Read the details of one command with its --help, for example:
kinstactl sites delete --help
Run commands- Always pass --json --no-input. Output is then machine-readable and the CLI fails instead of prompting.- On a non-zero exit, parse the error object on stderr. It has code, message and hints. Act on hints before you retry or give up.
Make changes safely- Run every write first with --dry-run, and show the human what will change:
kinstactl sites delete my-site --dry-run --json --no-input
- After you show the dry run, wait for the human's go-ahead before you run the write itself, whatever its confirmation level.- Never pass --yes or --confirm without the human's explicit approval for that specific action. Approval for one action is not approval for the next.- --confirm <site-name> exists only for irreversible actions, and takes the exact site name.- Treat passwords, login links and tokens that commands print (ssh password get, wp login, db login) like the API key: never log, echo or store them, and show them to the human only when that was the point of the request.
Long operations- Prefer --no-wait. With --json the response has an operation_id; read it from the JSON, then wait for it:
kinstactl operations wait <operation-id> --json --no-input
- Use --timeout <minutes> on the wait if the default of 30 is too short or too long.
Documentation- The docs are at https://kinstactl.rickklaasboer.nl- A plain-text version for agents is at https://kinstactl.rickklaasboer.nl/llms.txtInstall as a skill
Section titled “Install as a skill”The prompt is the body of a Claude Code skill. Install it once and the agent loads it when you ask for Kinsta work:
mkdir -p ~/.claude/skills/kinstactl && curl -fsSL https://raw.githubusercontent.com/rickklaasboer/kinstactl/main/skills/kinstactl/SKILL.md -o ~/.claude/skills/kinstactl/SKILL.mdllms.txt
Section titled “llms.txt”The site publishes three files for language models:
- llms.txt: an index that links to the two sets below and to a command reference (every command with its arguments, flags and the Kinsta API endpoints it calls).
- llms-small.txt: the docs in condensed form.
- llms-full.txt: the complete docs in one file.
Not an MCP server
Section titled “Not an MCP server”kinstactl is a CLI, not an MCP server; the typed client in the package makes it cheap to add one later.