Skip to content

MCP reference

nitpick mcp starts an MCP server on stdio. Your agent uses it to read feedback and mark it resolved. Nitpick runs no AI itself and needs no model key: your agent uses your own AI subscription.

Add it to your agent

Claude Code:

claude mcp add nitpick -- npx -y @nitpickhq/cli mcp

Codex:

codex mcp add nitpick -- npx -y @nitpickhq/cli mcp

Cursor, in .cursor/mcp.json (or ~/.cursor/mcp.json for all projects):

{
  "mcpServers": {
    "nitpick": { "command": "npx", "args": ["-y", "@nitpickhq/cli", "mcp"] }
  }
}

The server reads your login from ~/.config/nitpick/config.json, or NITPICK_TOKEN from the environment. Run npx -y @nitpickhq/cli@latest login first: it opens the browser, where you create an account, start the subscription and press Allow.

Tools

Tool What it does
list_apps Your apps, with open counts and how many are locked.
list_feedback Reports, newest first. Filters: app, status, kind, screen, element, app version, platform, since, limit.
get_feedback One report as text, plus the screenshot as an image with the tap position and the element box drawn on it.
resolve_feedback Mark a report resolved.
reopen_feedback Mark a report open again.
feedback_stats Open counts by screen, by element and by app version.
get_app_settings Which kinds of feedback are on and the texts per language, for one app.
update_app_settings Turn the kinds on or off and set or remove the texts per language (footer, thanks). Gives the old and new value of each change.
create_app Create an app on your account and return its id and public key.

Tokens are not available over MCP. Look at them and revoke them in the dashboard or with nitpick tokens list and nitpick tokens revoke.

Do not pre-approve the tools that change things

Most agents let you approve tools once and for all. Do that for the tools that only read (list_apps, list_feedback, get_feedback, feedback_stats, get_app_settings), if you like. Do not put update_app_settings and create_app on a list of tools that are allowed in advance. Reports are written by anonymous people, and a report could try to talk your agent into changing your settings. Keep the approval step for these two: you see the change before it happens. The tool descriptions tell the agent to change settings only when you ask, but that is not a safeguard. The approval is.

update_app_settings takes app_id, optional general and specific (booleans), and optional texts: a list of {language, key, text}, where key is footer or thanks and text is a string or null to remove it. Each language and key may appear once. The settings reach your users within a minute, the next time the app starts or comes back after more than an hour in the background. See Settings.

The subscription in the output

  • In the states grace, locked and inactive, the text of list_apps and list_feedback starts with one line about the subscription and the renew address, for example "Nitpick: the subscription has ended; new reports are locked (3 reports locked now)." Nothing is written to the output of the server itself.
  • From 80% of the monthly limit of 2,000 reports a second line says how many are used.
  • list_apps, list_feedback and feedback_stats mention how many reports are locked, when that is more than 0. Locked reports are never shown.
  • A locked report answers "This report is locked until the subscription is renewed:
    ". Tell the user to renew; do not try again.
  • Creating an app above 50 apps (409 limit_reached) gives a message that names what the user can clean up. Creating an app without a running subscription (402) says that an active subscription is needed.

See Billing and limits.

A typical loop

  1. The agent calls list_feedback with status: open.
  2. For a promising report it calls get_feedback and looks at the screenshot.
  3. It finds the code through the screen and element names, and makes the change.
  4. It calls resolve_feedback with the report id.