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,lockedandinactive, the text oflist_appsandlist_feedbackstarts 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_feedbackandfeedback_statsmention 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
- The agent calls
list_feedbackwithstatus: open. - For a promising report it calls
get_feedbackand looks at the screenshot. - It finds the code through the
screenandelementnames, and makes the change. - It calls
resolve_feedbackwith the report id.