Skip to main content
Glama

dotpals

See what your coding agent actually did.

A small floating pal that watches Claude Code, Codex or any agent and checks its work: which files changed, which commands ran, and whether the tests really passed, read from their output, not the agent's word. When Claude breaks the tests, dotpals sends it back to fix them. Any AI tool can ask dotpals what really happened. And now you can talk to it: Blu sees your screen, draws on it as it explains, and uses your apps.

npx dotpals@latest setup

One command on Windows, macOS or Linux. Free, open source, and your agents’ work stays on your computer. Or straight from GitHub: npx --allow-git=all github:rikinshah787/dotpals setup

CI License: MIT Works with Claude Code and Codex

Install · Talk to Blu · Features · Plug in any agent · Docs

⭐ Star dotpals if your agent ever said "Done!" and you weren't sure · Tell us what's confusing

New in 0.12: Talk to Blu

Press Ctrl+Shift+Space and talk. Blu is the pal in your notch:

  • It explains your screen. "What's this error?" Blu answers out loud and circles what it means. Ask for it step by step and it writes the working on your screen, line by line, as it talks.

  • It does things. "Play some jazz", "turn it down a bit", "make this window smaller". Each one shows ✓ or ✗.

  • It uses your apps. Notion, Linear, Sentry, Google Calendar or any MCP server. A change waits for your yes; nothing is ever sent, deleted or paid for.

  • It hands coding work to Claude and checks it. "Have Claude fix the failing test": Blu writes down what done means, Claude Code does it, and dotpals checks what really happened.

  • It runs on the AI you already have. Claude Code or Codex on your subscription, an API key, or Ollama. Hearing and Blu's voice run on your computer.

More in Talk to Blu. 0.11 brought the report card, replay and rewind, the morning brief and "It's stuck"; all of it is in the changelog.

Related MCP server: GitWarren

Why

Coding agents do a lot in a single request: they read dozens of files, edit a handful, run tests, retry and search. The chat scrolls by and the diff is spread across files. dotpals keeps a live, plain-language record next to your editor, so you can always answer:

  • What did it change? Every file edited, created or deleted, with the diff one click away.

  • What did it run, and did it work? Every command with its output, and fixed on try 2 or still failing after 3 tries.

  • Did it fix what it broke? Claude Code is sent back when its tests fail, and a test changed just to make it pass is caught.

  • Is the code as it is now tested? "Changed 2 files after the tests passed: not tested since" is impossible to miss.

  • What did I get done today? A running tally, copied as Markdown for a standup or PR in one click.

🔊 Watch the launch video with sound (47 s, 1080p) · square cut

Features

  • Make agents fix failing tests (Claude Code, on by default): finishing, committing or pushing while its tests fail, or before it tested its last change, sends Claude back to fix them, at most twice per request. A test faked to pass (an assertion taken out, a skip added, an expectation changed) is caught too.

  • Was it tested? Results are read from the test output itself (jest, vitest, pytest, go, cargo, dotnet, Maven, Gradle, RSpec and more), never just the exit code. "0 tests ran" is never a pass.

  • Report card: your agents side by side: changes tested and passed, changes never tested, tests changed to pass, claims that didn't happen, and what the tokens bought.

  • Replay and rewind: step through any request, and (with restore points on) put its files back as they were.

  • Morning brief and "It's stuck": what your agents did since yesterday, and a ping when one keeps failing at the same thing.

  • The story, not the log: each request reads as a few chapters (Changed 5 files · Tests failed twice, then passed · Committed and pushed), with anything risky flagged: .env changed, a force-push, two agents editing the same file.

  • Ask dotpals from any agent: an MCP server, so Claude Code, Codex, Cursor and others can check their work against what really happened.

  • The notch: every agent in one island at the top of your screen, with a live diff, its plan, its context window and your usage limits. It opens when an agent needs your OK, and Ctrl+Alt+Y / Ctrl+Alt+N answer it.

  • Hand-off: Continue in ▾ hands a session to Codex, Claude Code or Gemini CLI with a note on what was done and what's left.

  • Dashboard: every session with its requests, files and full log, search, stats, and export to Markdown or JSON.

  • A pal with personality: nine characters that think, work, wait, celebrate and sulk, or make your own.

Every feature, in detail: the guide.

Talk to Blu

Keys

What happens

Ctrl+Shift+Space (⌘⇧Space on macOS)

Talk. The notch opens and Blu listens. On Windows, hold the keys while you talk; or tap them and Blu listens until you pause

Ctrl+Alt+C (⌃⌥C)

Circle and ask. Draw around anything on screen, then ask about it

Ctrl+Alt+D (⌃⌥D)

Dictate. Say it, and it's typed where your cursor is

Things to say:

  • "What's this error?" · "Explain this step by step" · "Circle the button I need"

  • "Play some jazz" · "Turn it down a bit" · "Put Spotify on the left half"

  • "What's on my calendar today?" · "Create a page called Weekly plan in Notion"

  • "Have Claude fix the failing test" · "What are my agents doing?" · "Stop"

Set it up in Dashboard → Settings:

  • Blu → Blu's brain: Claude Code or Codex on your subscription, an API key (Anthropic, OpenAI, Gemini, OpenRouter), or Ollama on your computer.

  • Apps: Notion, Linear and Sentry in one click, Google Calendar with your own sign-in client, or any MCP server by its address or command.

  • Blu → Shortcuts: your own keys.

The first time you talk, dotpals downloads a speech model (about 80 MB) and Blu's voice (about 330 MB), once. Both run on your computer.

What Blu won't do without you:

  • Change anything in your apps before you say yes. Even then it never sends, deletes or pays for anything.

  • Click, type or press keys, unless you turn that on.

  • Send coding work to an agent before you say "send it".

What it does on your computer is a fixed list, checked again before it runs. It never follows instructions written on your screen.

Your privacy. Your voice stays on your computer. A screenshot goes to Blu's brain only when you ask about the screen, or circle something. With Ollama, nothing leaves your computer at all.

Blu is tested on Windows. macOS (through dotpals.app, so permissions are asked in dotpals' name) and Linux (X11, with playerctl, pactl and xdotool) are new in this release. Everything about Blu →

Make your own pal

Dashboard → Settings → Make your own pal: pick a body, eyes, something on top, any color and a name. Thousands of combinations, or Surprise me.

Install

npx dotpals@latest setup

Needs Node 20 or newer. It installs the desktop pal in ~/.dotpals (with its runtime, Electron, about 100 MB, once), adds the Claude Code plugin if you have Claude Code, picks up Codex, starts the pal at login and opens the dashboard. Run it again any time to update. Options: --no-claude, --no-login, --no-start.

  • Only the Claude Code plugin: /plugin marketplace add rikinshah787/dotpals, then /plugin install dotpals@dotpals, restart Claude Code and run /dotpals:pals.

  • Codex: nothing to install. dotpals follows Codex's session logs while the pal is running.

  • Cursor, Gemini CLI, OpenCode and GitHub Copilot CLI: press Connect on the dashboard's Agents page. It backs up the agent's config first, and Disconnect takes out only what it added.

  • Any other agent: see Plug in any agent.

Using it

Ctrl+Alt+P (⌘⌥P on macOS)

Show or hide the pal

Ctrl+Shift+Space · Ctrl+Alt+C · Ctrl+Alt+D

Talk to Blu · circle and ask · dictate

▦

The dashboard: sessions, logs, stats and settings

–

Minimize to the tray (the notch keeps watching)

dotpals start       # open the floating pal
dotpals dashboard   # open the dashboard
dotpals status      # what's running and connected
dotpals doctor      # no pal or notch? checks and fixes it
dotpals mcp         # the MCP server (below)

Ask dotpals from any agent (MCP)

dotpals mcp is an MCP server: Claude Code, Codex, Cursor and other assistants ask dotpals what your agents really did, and get the evidence instead of the agent's word. It only reads, from the pal running on this computer.

claude mcp add dotpals -- npx dotpals mcp

Codex and Cursor: command npx, arguments dotpals mcp (for Codex, under [mcp_servers.dotpals] in ~/.codex/config.toml).

Tool

Answers

check_my_work

For the agent itself, before it says "done": "Looks done", or what to fix first

ready_to_merge

The checks a reviewer would make: tests ran after the last change and passed (not because the tests were changed), nothing risky, committed

test_status

Is it really tested, and why the last run failed ("expected 3, got -1")

agents_now · today · recap

What each agent is doing, did today, or did request by request

report_card · brief

The agents side by side, and the morning brief or weekly recap

risky_steps · handoff_note

Force pushes, .env changes and more; a note for another agent to pick up a session

Privacy

Your agents' work stays on your computer. The bridge listens only on 127.0.0.1, reads Claude Code's and Codex's logs locally, and sends nothing anywhere. The exceptions are your choice:

  • Blu: what you say goes to the AI you picked for Blu's brain (nowhere, with Ollama), with a screenshot only when you ask about the screen.

  • Cloud (Jev) test double-check, off by default: an unclear test run's output, with passwords, keys and emails removed.

History is a plain JSON file in ~/.dotpals (DOTPALS_HISTORY=0 turns it off). See SECURITY.md and the privacy guide.

How accurate is it?

We check. test/accuracy/cases holds 36 real requests, and every claim dotpals made about them was checked by hand against what really happened:

Claim

Claims

Right

Wrong

Unsure

Test results (passed, failed)

99

91

1

7

Risky steps

14

14

0

0

Retries ("fixed on try 2")

15

14

1

0

Ready to merge?

36

35

1

0

Why it stopped

36

35

1

0

What changed (git)

10

9

1

0

Tests changed to pass

20

20

0

0

Why tests failed

25

25

0

0

All

255

243 (95.3%)

5

7

"Unsure" is a missing answer, not a false one. npm run accuracy lists the 5 wrong ones, and the test suite fails if a right claim turns wrong.

How it works

Claude Code ── hooks + transcripts ┐
Codex ──────── session logs ───────┼──▶  bridge (127.0.0.1:5175)  ──▶  pal · notch · dashboard · MCP
your agent ─── POST /event ────────┘         one activity model

Your agents report what they do. A small local server, the bridge, turns it into one activity feed and keeps history in ~/.dotpals. The pal, the notch and the dashboard show it live. Contributors: docs/ARCHITECTURE.md.

Plug in any agent

Agent

How it connects

Claude Code

Hooks for live state and permission prompts, plus the session transcript

Codex (CLI, IDE extension, app)

Its session logs in ~/.codex/sessions; nothing to set up

Cursor, Gemini CLI, OpenCode, GitHub Copilot CLI

Connect on the dashboard's Agents page

Anything else

POST JSON to http://127.0.0.1:5175/event

curl -s localhost:5175/event -d '{
  "session": "run-42", "harness": "my-agent", "state": "working", "text": "Running tests",
  "activity": { "id": "call-1", "kind": "run", "title": "Run the tests", "status": "running",
                "body": { "command": "npm test" } }
}'

Send the same id again with "status": "ok" when it finishes. The Agents page has copy-paste snippets for curl, PowerShell, Node, Python and the shell. The full event format: the guide.

Use the pal in your own app

The pal is a dependency-free Web Component, <dot-pal>, for chat UIs, IDE panels and dashboards. It works in plain HTML, React, Vue, Svelte, Angular, Electron and VS Code webviews.

<script type="module" src="https://unpkg.com/dotpals"></script>

<dot-pal id="agent" character="grok"></dot-pal>

<script type="module">
  const pal = document.getElementById('agent');
  pal.setState('thinking');
  pal.setState('working', { text: 'Running tests…' });
  pal.setState('done', { text: 'All green!' });
</script>

Or npm install dotpals, then import 'dotpals'. States, characters, attributes, events, styling and your own characters: the component guide.

Documentation

The full guide is at rikinshah787.github.io/dotpals/guide: every feature, Blu, each agent, the CLI, configuration, the bridge's HTTP API, the <dot-pal> component, privacy and troubleshooting. Its source is in site/guide/.

Roadmap

  • More agents: Windsurf, Cline, Aider and others, as each gets a documented way in.

  • Signed installers for Windows and macOS, so Node isn't needed.

Ideas and pull requests are welcome. Open an issue to discuss.

Contributing

npm install        # dev only: Electron for the desktop window
npm test           # node --test, no dependencies needed
npm run float      # the desktop pal
npm run dashboard  # the dashboard

See CONTRIBUTING.md. To support a new agent, add an adapter next to bridge/adapters/codex.js.

Credits

  • Reading test results and double-checking unclear ones builds on claude-referee by Ismail Dasci (MIT): its test-output parsers, redaction rules and "done" question are adapted in bridge/ui/testout.js, bridge/redact.js and bridge/checker.js. See THIRD_PARTY_NOTICES.

  • The optional checkers are Laya by Convai Innovations (runs on your computer; dotpals installs it from PyPI when you click Set up Laya) and TypeSafe's Jev, through its MIT-licensed SDK @typesafe-ai/sdk.

Trademarks

Character names are playful nicknames. dotpals is not affiliated with or endorsed by Anthropic, OpenAI or any other AI company, and the characters are original artwork, not logos.

License

MIT

Available Tools

10 tools
agents_nowA

What the coding agents on this computer (Claude Code, Codex, Cursor and others dotpals watches) are doing, or did in the last 2 hours, newest first: the project, whether each is working, waiting for you, finished or stopped, what it was asked, its latest step or result, and how its tests stand. dotpals reads this from what the agents actually did (their tool calls and the test output), not from what they said. Use it for "what are my agents doing?" and to find a session ID for the other tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does so well: it discloses data provenance (reads actual tool calls and test output, not agent self-reports), a time window (last 2 hours), and ordering (newest first). It does not cover pagination, limits, or the shape of the session ID returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core capability is front-loaded in the first sentence, followed by the provenance note and the usage hint. The first sentence is long and list-heavy, but every clause adds distinct information about returned fields rather than restating the name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description appropriately explains the returned data (fields, statuses, test standing) and the data source. It is nearly complete for a zero-parameter read tool, lacking only edge-case coverage such as what an empty result means or how the session ID should be consumed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters (empty object schema), so there is no parameter meaning to convey. Per the rubric this is the baseline 4 for a parameterless tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource (what coding agents on this computer are doing) with concrete output fields (project, working/waiting/finished/stopped status, latest step, test standing) and a scope (last 2 hours, newest first). It is clear but does not explicitly differentiate itself from overlapping siblings like recap or today, which likely also summarize agent activity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit usage triggers ("what are my agents doing?") and points to the downstream use case of finding a session ID for other tools. There is no "when-not-to-use" or direct naming of an alternative sibling, which keeps it short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

briefA

The morning brief or the weekly recap, per project: what the agents did (requests, files changed, tokens), what's unfinished (a request cut off, given up, left with failing tests or a question for you), what's failing now (tests failing, or code changed and not tested since), and what's worth a check (tests changed to pass, claims that didn't happen). period: "day" (since the start of yesterday, the default) or "week" (the last 7 days). Every project by default; pass project for one.

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNo"day": since the start of yesterday (default). "week": the last 7 days.
projectNoOnly this project: its folder's path or its name. Default: every project.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does so well by itemizing what the brief surfaces (requests/files/tokens, cut-off or failing work, regressions, suspicious changes). It doesn't explicitly state it's a read-only report or note any limits, but for a read-only aggregation tool the content disclosure is the substantive behavioral trait.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is front-loaded and dense but well-organized via a colon-led list of the four report sections. The trailing two sentences largely duplicate the schema's parameter descriptions, which is minor waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description must convey return content — and it enumerates the brief's sections, time windows, and default scope thoroughly. An agent has everything needed to call it and understand what comes back.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters are fully documented in the schema, including the `period` enum semantics. The description restates the same `period`/`project` defaults rather than adding syntax or edge-case meaning beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear resource (a per-project brief/recap) and enumerates its four content categories (what agents did, what's unfinished, what's failing, what's worth a check), so the agent knows exactly what it returns. However, it does not distinguish itself from close siblings like `recap`, `today`, or `report_card`, which sound like overlapping reports.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'morning brief or weekly recap' framing and the `period`/`project` defaults imply when it's useful (daily/weekly review, all projects by default), but there is no explicit when-to-use guidance or reference to the alternative siblings (`recap`, `today`, `test_status`). Usage must be inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_my_workA

Call this before you tell the user your work is done. dotpals checks your own session in this project the way a reviewer would: did the tests run after your last change, did they pass (and why not), did you change the tests to make them pass, did anything fail and stay failing, did you do anything risky. It answers "Looks done" or says what to fix first. The evidence is what you actually ran, not what you remember.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoOnly if dotpals can’t find your session: your project's folder path or name. Default: the folder this server runs in.
sessionNoOnly if dotpals picks the wrong session: your session ID (or its first characters).

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does reasonably well: it enumerates the checks performed (tests run after last change, pass/fail and causes, test edits used to force passes, lingering failures, risky actions) and the shape of the answer ("Looks done" versus what to fix first). It does not state that the tool is read-only/side-effect free, nor any cost, auth or timing traits, which is the remaining gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the imperative call-to-action, then explains the checks and the output in three compact sentences. Slightly chatty with phrases like "the way a reviewer would," but every sentence is doing work.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-optional-param, no-annotation, no-output-schema tool, the description covers what is inspected and what the response means well enough to invoke it correctly. It omits how it relates to the other audit/status tools, which is the only real completeness gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both params are optional with clear "only if dotpals picks the wrong session/project" semantics already in the schema. The description itself adds no parameter meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: it checks the agent's own session in the current project, described concretely as a reviewer-style audit of tests, failures, test tampering and risky moves. It is clear what the tool does, but it does not distinguish itself from siblings like test_status and risky_steps, whose territory it partly claims.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger: "Call this before you tell the user your work is done." That is a clear when-to-use signal. It stops short of naming alternatives (e.g. test_status, ready_to_merge, risky_steps) or saying when not to call it, so the routing guidance is incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

handoff_noteA

A hand-off note, so another agent (or a new session) can pick up where a session left off: the original ask and the last request, what was done with the evidence, the files it changed, how the tests stand (with the failure), what's left on its plan, what's risky and its last message. Markdown, ready to paste. Default: the newest session in this project.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoThe project: its folder's path (best: dotpals matches where each agent works, so same-named folders, a monorepo's packages and worktrees stay apart) or its name. Default: the folder this server runs in.
sessionNoA session ID from agents_now (or its first characters). Default: the newest session in the project.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the output format ('Markdown, ready to paste'), the exact content sections, and the default behavior ('the newest session in this project'). It stops short of stating whether the operation is read-only or what permissions are needed, but for a note-generation tool the disclosure is strong.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but front-loads the core purpose and then lists the components of the note in a compact sequence. Every clause contributes information, though the long extended sentence could be structured with clearer delimiters for easier scanning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter note-generation tool with no output schema and no annotations, the description is nearly sufficient: it explains the output format, the content, and the default session. It could be more complete by noting how the session ID is obtained or by distinguishing the tool from adjacent recap/status tools, but the essential information is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already explains both parameters, including the project folder default and the session ID-from-agents_now default. The description repeats the session default ('the newest session in this project') but adds no new syntax, format, or constraint beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific deliverable: a hand-off note that lets another agent or session resume, and enumerates the exact contents (original ask, last request, evidence, files, test failures, plan, risks, last message). It does not, however, differentiate itself from siblings like recap or check_my_work.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The scenario is implied — 'so another agent (or a new session) can pick up where a session left off' — which gives an agent enough context to understand the intended use case. But there is no explicit when-to-use guidance, no exclusions, and no mention of alternatives such as recap or check_my_work.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ready_to_mergeA

Is an agent session's work ready to merge? The checks a reviewer would make, each ✓ or ✗: tests ran, after the last change, and passed (and not because the tests were changed); no failure left behind; nothing risky (force pushes, .env changes, recursive deletes…); the commit was tested. Pass branch to ask about a git branch ("is feat/login ready?"). Default: the newest session in this project.

ParametersJSON Schema
NameRequiredDescriptionDefault
branchNoA git branch ("feat/login"): the newest session whose work ended on it, this project's first.
projectNoThe project: its folder's path (best: dotpals matches where each agent works, so same-named folders, a monorepo's packages and worktrees stay apart) or its name. Default: the folder this server runs in.
sessionNoA session ID from agents_now (or its first characters). Default: the newest session in the project.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses the exact review criteria, notable edge cases ("not because the tests were changed"), and expected output form (each check ✓ or ✗). It still does not state that the operation is read-only/side-effect free or what is returned when no session exists, so a gap remains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core question, then the check list, then parameter guidance — an efficient ordering. Slightly dense with a parenthetical aside ("force pushes, .env changes, recursive deletes…") but every sentence contributes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates by describing the ✓/✗ check-by-check return structure, which is what an agent needs to interpret results. No annotations means safety/non-mutation behavior is unaddressed, keeping this just short of fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters are already documented with defaults and resolution rules. The description restates the `branch` use case and the newest-session default but adds no syntax or precedence detail beyond what the schema provides, matching the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific question it answers ("Is an agent session's work ready to merge?") and enumerates the concrete checks performed (tests after last change, no leftover failures, no risky operations, tested commit). It is clearly a readiness-verification tool, but it never distinguishes itself from close siblings like check_my_work or test_status, leaving the agent to infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear invocation context: pass `branch` to query a git branch ("is feat/login ready?"), otherwise default to the newest session in the project. It does not, however, say when to prefer this over check_my_work or test_status, so alternative selection is only implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recapA

What agents actually did, request by request: what each was asked, one plain sentence on what it did (files changed, how the tests went, what it shipped), warnings worth a look (tests that passed only after they were changed, too), why its tests failed, and the files it changed. For a project (default: this one, the last 24 hours) or one session (all of it).

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceNoOnly work since then: minutes ago ("90") or a time ("2026-10-04T09:00").
projectNoThe project: its folder's path (best: dotpals matches where each agent works, so same-named folders, a monorepo's packages and worktrees stay apart) or its name. Default: the folder this server runs in.
sessionNoA session ID from agents_now (or its first characters). Default: the newest session in the project.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose meaningful behavior: the default window is the last 24 hours for a project versus the full history for a session, and it flags warnings such as tests that passed only after being edited. It does not explicitly state the operation is read-only, but the nature of a 'recap' makes that clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single long sentence densely packed with nested parentheticals and em-dash asides, which makes it hard to parse on first read. Front-loading is decent ('What agents actually did'), and every clause carries content, but the run-on structure undercuts readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-output-schema, no-annotation, three-optional-parameter read tool, the description sufficiently covers what content is returned and the scope defaults. It stops short of fully spelling out how warnings or session defaults interact, but nothing critical to calling it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters and their defaults, making 3 the baseline. The description only echoes the project/session scoping and adds the 24-hour default window, adding little beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource (agent activity) and enumerates exactly what the recap contains: what each agent was asked, one-sentence summaries, warnings, test-failure reasons, and changed files. It is clear what the tool produces, but it never names or contrasts any sibling (today, agents_now, check_my_work), so an agent must infer the distinction itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives scoping context: 'For a project (default: this one, the last 24 hours) or one session (all of it).' That implies when each parameter applies, but there is no explicit when-to-use/when-not guidance and no routing to the alternatives among the siblings, so usage is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

report_cardA

A report card comparing the agents side by side over a period (default: the last 7 days, every project): requests, how many that changed code were tested after the last change and passed, how many weren't tested, how many tries a failure took to fix, tests changed to make them pass, things a summary claimed that didn't happen, requests that went in circles, tokens per request and time spent. Read from what the agents did, not what they said. A Markdown table. Pass project for one project.

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceNoSince then: minutes ago ("1440") or a time ("2026-10-04T09:00"). Default: the last 7 days.
projectNoOnly this project: its folder's path or its name. Default: every project.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it discloses meaningful behavior: the data source ('Read from what the agents did, not what they said') and the return format ('A Markdown table'). It omits cost/permission/limits detail, but for a reporting tool those are lower-stakes than the output-shape disclosure it does provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The lead sentence front-loads what the tool is, but the middle collapses a long metric list into one winding clause ('how many that changed code were tested after the last change and passed...'), which is dense and partly redundant. The closing `project` tip is worth its space; the enumeration is only borderline.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only report tool with full schema coverage and no output schema, the description explains both what the report contains and its Markdown return format, which is what an agent needs. Nothing critical is missing, though it could state that it is a safe, non-mutating read.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both `since` and `project` are already documented with formats and defaults. The description's 'Pass `project` for one project' and default-period note merely restate schema content, adding no syntax or edge-case meaning beyond it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a concrete artifact ('a report card comparing the agents side by side over a period') and enumerates the metrics it contains, so the resource and scope are unmistakable. It does not, however, explicitly distinguish itself from near-neighbors like 'recap', 'today' or 'brief', which a reader must infer from the metric list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the default window ('last 7 days, every project') and how to narrow scope ('Pass `project` for one project'), which implies typical usage. There is no explicit when-to-use-this-vs-alternatives guidance, so the agent gets context but not routing rules against the sibling reporting tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

risky_stepsA

Risky things agents did, each with when, which agent and the command: force pushes, recursive deletes, git changes thrown away, dropped database tables, scripts piped from the internet, sudo and permission changes, force-stopped programs, changes to .env and other secret files, and the same command failing again and again. Use it for "did my agents do anything dangerous?" or before trusting their work. For a project (default: this one, the last 24 hours) or one session (all of it).

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceNoOnly work since then: minutes ago ("90") or a time ("2026-10-04T09:00").
projectNoThe project: its folder's path (best: dotpals matches where each agent works, so same-named folders, a monorepo's packages and worktrees stay apart) or its name. Default: the folder this server runs in.
sessionNoA session ID from agents_now (or its first characters). Default: the newest session in the project.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden and does disclose useful traits beyond the schema: the detection categories and the scoping defaults (project = this one, last 24 hours; session = whole session). It still says nothing about whether it's read-only, result volume, or performance, which keeps it below a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The long enumeration in the first sentence is dense but each item earns its place by defining the tool's detection scope, and the usage conditions follow immediately. It is slightly run-on but front-loaded and waste-free.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description compensates by stating what each entry contains ("when, which agent and the command") and by covering scope and time defaults. An agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds a default time window ("the last 24 hours") that the schema's `since` parameter does not state, and clarifies session scope means "all of it." That is genuine added meaning over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

It names a specific concept (risky agent actions) and enumerates the concrete verbs/events that qualify: force pushes, recursive deletes, dropped tables, sudo, .env edits, repeated failures. An agent can immediately tell this is a risk-reporting tool and distinguish it from siblings like test_status or ready_to_merge.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit triggering questions: "did my agents do anything dangerous?" or "before trusting their work." That is clear when-to-use guidance, but it names no sibling alternative and gives no when-not-to-use condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

test_statusA

Is the code really tested? How the tests stand in an agent session, from the test runs dotpals saw: passed or failed (read from the test output, with the counts, and why the last run failed), when, and whether code changed after the last run (stale) or was never tested. Only tests an agent ran count. Default: the newest session in this project.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoThe project: its folder's path (best: dotpals matches where each agent works, so same-named folders, a monorepo's packages and worktrees stay apart) or its name. Default: the folder this server runs in.
sessionNoA session ID from agents_now (or its first characters). Default: the newest session in the project.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, and it does meaningful work: it discloses what is measured (only agent-run tests), what the output conveys (pass/fail, counts, last-failure reason, timestamp) and a non-obvious derived trait (stale when code changed after the last run, or never tested). It omits whether the call is read-only, its cost, or error behavior, so it is solid but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It front-loads with a rhetorical question ('Is the code really tested?') that delays the actual operation, then packs return-value, scoping, and staleness detail into a single dense run-on sentence. The content mostly earns its place, but the structure is cluttered rather than cleanly segmented.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must describe the return payload, and it does: pass/fail, counts, why the last run failed, when it ran, and stale/never-tested state. Combined with complete schema coverage for both parameters, an agent has enough to call the tool and interpret results, with minor gaps only around read-only/error behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both 'project' and 'session' are already documented in the schema, including their defaults. The description only restates the project-default scoping and the session default ('newest session in this project'), adding no syntax or format detail beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource and outcome: the test status of code within an agent session (passed/failed, counts, failure reason, timing, staleness). It is clearly a status-inspection tool distinct from siblings like ready_to_merge or check_my_work, though it never names an alternative to route against. Purpose is clear but not sharply differentiated from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implicit guidance is present — 'Only tests an agent ran count' and 'Default: the newest session in this project' tell the agent when the tool is meaningful and which session it targets. However, there is no explicit statement of when to use this versus siblings (e.g., agents_now for sessions, check_my_work for review), so usage is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

todayA

What the agents did today, for a standup or an end-of-day note: per agent, how many requests, files changed and test runs, then each request with what it was asked and one plain sentence on what it did, warnings worth a look (tests that passed only after they were changed, too) and why its tests failed. For a project (default: this one).

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoThe project: its folder's path (best: dotpals matches where each agent works, so same-named folders, a monorepo's packages and worktrees stay apart) or its name. Default: the folder this server runs in.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does surprisingly well: it discloses the exact contents surfaced, including subtle signals like tests that passed only after being changed and the reasons tests failed. It does not state read-only safety explicitly or any auth/rate behavior, but the output-shape disclosure is strong.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The lead clause 'What the agents did today' is well front-loaded, and every fragment is informative, but the whole thing is one sprawling sentence with nested parentheticals that is harder to parse than it needs to be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly takes on the job of explaining return contents in detail, and it also states the default scope. For a single-optional-param read tool it is close to complete, missing only tool-selection routing against its siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the single 'project' parameter is already fully documented. The description's 'For a project (default: this one)' merely restates the schema default, adding no syntax or matching nuance beyond it. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly conveys the resource being produced: a per-agent daily activity digest covering request counts, files changed, test runs, per-request detail, warnings, and test failures. It is specific about content and scope, though it never names the closely related siblings (recap, handoff_note) to help an agent distinguish the right reporting tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It offers a use-case hook ('for a standup or an end-of-day note'), which implies when to reach for it. However, there are no explicit when-not conditions and no named alternatives to route against the several other summary/status siblings, leaving selection to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv0.11.0
    • Addedbrief
    • Addedreport_card
  2. 8 tool updatesv0.10.0
    • First observedagents_now
    • First observedcheck_my_work
    • First observedhandoff_note
    • First observedready_to_merge
    • First observedrecap
    • First observedrisky_steps
    • First observedtest_status
    • First observedtoday

TDQS

A3.6/5.0

Scored across 10 tools

Disambiguation3/5

Several tools overlap heavily on reporting agent activity: recap, today, brief, and report_card all summarize what agents did, differing mainly by period or scope. ready_to_merge, check_my_work, and test_status also overlap on test/readiness review. The descriptions clarify defaults and distinctions, but an agent could reasonably misselect for broad questions like 'what did my agents do?'

Naming Consistency3/5

All names are lowercase snake_case and readable, but the set mixes single nouns (recap, brief, today), noun phrases (report_card, test_status, handoff_note, risky_steps), and verb phrases (ready_to_merge, check_my_work). There is no consistent verb_noun pattern to predict new or related tool names.

Tool Count4/5

10 tools is a reasonable size for an agent-observability server, and most cover distinct artifacts like current activity, risks, tests, handoff, and readiness. However, the four summary/report tools create notable redundancy, slightly inflating the set beyond what the domain strictly needs.

Completeness4/5

The surface covers the core observability lifecycle well: live agent status, multiple recaps, readiness checks, test status, risky actions, and handoff notes. A minor gap is the lack of a tool to list past sessions or resolve a session ID older than agents_now's 2-hour window, which limits practical use of session-scoped tools.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Provides a workspace-safe, read-only bridge between browser-based AI planning/review and local coding agents, enabling structured plan, execution summary, and review handoffs without granting shell, file write, or Git push access.
    11
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Local code review for people and their coding agents: an agent opens a review of its changes and hands over a link, the person comments on lines, and the agent reads the threads, replies and resolves what it fixed. Reads the git worktree directly, uncommitted work included; nothing leaves the machine.
    17
    43 npm
    18
    GPL 3.0
  • A
    license
    A
    quality
    C
    maintenance
    Enables read-only inspection of local coding-agent sessions across Claude Code, OpenCode, Cursor, and Codex, including running status, topics, todos, and transcripts, without writing or sending messages.
    4
    6 npm
    1
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Evidence-backed, read-only codebase diagnostics for coding agents: secrets, dependency, RLS, and source-impact audits with a verify loop and PR review verdicts. Never writes files or uses the network by default.
    4
    205 npm
    MIT