# MCP for coding agents

> Let Claude Code or Cursor read reports, fix the code, and reply on the pin.

Source: https://docs.usejot.co/docs/ai/mcp

Jot speaks the Model Context Protocol, so a coding agent can work your feedback
like a teammate: read the report with its selector and recording timeline, fix
the code, reply on the thread, and move the status. The reply appears on the
reporter's pin as it is posted.

<Callout>
  MCP agents are available on the Team and Agency plans.
</Callout>

<Steps>
  <Step>
    ### Mint a token

    Open **Settings → Agents**. Choose the project, name the token after who will
    use it — "Claude Code" — and press **Mint token**.

    Copy it now; it is shown only once. The same page shows a ready-made config
    with the token filled in. An admin can revoke any token later.
  </Step>

  <Step>
    ### Add Jot to your agent

    <Tabs items={["Claude Code", "Cursor"]}>
      <Tab value="Claude Code">
        Save as `.mcp.json` in your project root:

        ```json title=".mcp.json"
        {
          "mcpServers": {
            "jot": {
              "command": "npx",
              "args": ["-y", "@usejot/mcp"],
              "env": {
                "JOT_API_TOKEN": "jot_agent_your_token"
              }
            }
          }
        }
        ```
      </Tab>

      <Tab value="Cursor">
        Save as `.cursor/mcp.json` in your project root:

        ```json title=".cursor/mcp.json"
        {
          "mcpServers": {
            "jot": {
              "command": "npx",
              "args": ["-y", "@usejot/mcp"],
              "env": {
                "JOT_API_TOKEN": "jot_agent_your_token"
              }
            }
          }
        }
        ```
      </Tab>
    </Tabs>
  </Step>

  <Step>
    ### Ask

    > Fetch the open feedback for this project. Fix what you can, reply on each Jot
    > with what you changed, and mark them resolved.
  </Step>
</Steps>

## Tools

Five, on purpose — every extra tool costs an agent accuracy.

| Tool                | Takes                                           | Does                                                                                      |
| ------------------- | ----------------------------------------------- | ----------------------------------------------------------------------------------------- |
| `fetch_feedback`    | `projectId`, `status?`, `page?`, `environment?` | Lists Jots: id, status, labels, sentence, URL, selector. `page` takes any URL on the page |
| `get_comment`       | `commentId`                                     | Everything about one Jot: context, thread, and the recording as a text timeline           |
| `post_reply`        | `commentId`, `message`                          | Replies on the thread, marked as an agent reply                                           |
| `update_status`     | `commentId`, `status`                           | Moves a Jot to `IN_PROGRESS` or `RESOLVED`                                                |
| `create_batch_note` | `comment_ids` (up to 50), `message`             | One note across several Jots — "all three were the same bug, fixed in #204"               |

An agent can't watch a video, so `get_comment` turns the recording into a
timeline: console errors and failed requests, each with its timestamp.

## What an agent can't do

* **Approve.** `update_status` refuses `APPROVED`. Closing the loop belongs to
  the person who reported the problem.
* **Leave its project.** A token sees one project and nothing else.
