Skip to content

Tools Reference

Herald exposes 10 MCP tools that Claude Chat discovers automatically. This page documents every parameter and response format.

start_task

Launch a Claude Code task on a project. Returns immediately with a task ID. The task runs asynchronously.

Parameters

Parameter Type Required Default Description
prompt string Yes — Task instructions for Claude Code
project string No default project Project name from configuration
priority string No "normal" "low", "normal", "high", or "urgent"
timeout_minutes number No 30 Max execution time (clamped to max_timeout)
template string No — Template name (e.g., review, test, fix)
session_id string No — Session ID to resume (multi-turn conversations)
git_branch string No auto-generated Branch to create/use
dry_run boolean No false If true, plan without making changes
model string No config default Claude model to use (e.g., claude-sonnet-4-5-20250929, claude-opus-4-6)

Example Response

🚀 Task started

• ID: herald-a1b2c3d4
• Project: my-api
• Priority: normal

💡 Use check_task with task_id 'herald-a1b2c3d4' to monitor progress.

check_task

Check the current status and progress of a task.

Parameters

Parameter Type Required Default Description
task_id string Yes — Task ID from start_task
wait_seconds number No 0 Wait up to N seconds for status changes before responding (long-poll). Only returns early on status changes, not progress updates.
include_output boolean No false Include recent Claude Code output
output_lines number No 20 Number of output lines to include

Example Response (Running)

🔄 Running (2m 34s)

• Progress: Refactoring auth/middleware.go...
• Cost: $0.18 so far

Example Response (Completed)

✅ Completed (4m 12s)

• Cost: $0.34
• Turns: 8
• Session: ses_abc123 (use to continue this conversation)

💡 Use get_result for the full output, or get_diff to see changes.

get_result

Get the complete result of a finished task.

Parameters

Parameter Type Required Default Description
task_id string Yes — Task ID from start_task
format string No "summary" "summary", "full", or "json"

Format options

  • summary — Task metadata + truncated output (first 1000 chars)
  • full — Task metadata + complete untruncated output
  • json — Raw JSON serialization of the task

Note

Only works for completed, failed, or cancelled tasks. Returns an error if the task is still running.


list_tasks

List tasks with optional filters.

Parameters

Parameter Type Required Default Description
status string No "all" "all", "pending", "running", "completed", "failed", "cancelled", "linked"
project string No — Filter by project name
limit number No 20 Maximum tasks to return
since string No — ISO 8601 datetime — only tasks after this time

Example Response

📋 Tasks (3 found)

✅ herald-a1b2c3d4 — completed
   Project: my-api | Priority: normal
   Duration: 4m 12s | Cost: $0.34

🔄 herald-e5f6a7b8 — running
   Project: my-api | Priority: high
   Running for 1m 45s...

❌ herald-c9d0e1f2 — failed
   Project: frontend | Priority: normal
   Duration: 0m 23s | Error: test suite failed

cancel_task

Cancel a running or pending task.

Parameters

Parameter Type Required Default Description
task_id string Yes — Task ID to cancel
revert boolean No false If true, revert Git changes made by this task

Example Response

🚫 Task herald-a1b2c3d4 cancelled.

get_diff

Show the Git diff of changes made by a task or uncommitted changes in a project.

Parameters

Parameter Type Required Description
task_id string One required Diff the task's branch against the current branch
project string One required Diff uncommitted changes against HEAD

Note

Provide either task_id or project, not both.

Example Response

📝 Diff for task herald-a1b2c3d4 (branch: herald/a1b2c3d4-refactor-auth)

```diff
--- a/auth/middleware.go
+++ b/auth/middleware.go
@@ -12,8 +12,12 @@
-func CheckSession(r *http.Request) (*User, error) {
+func ValidateJWT(r *http.Request) (*User, error) {
+    token := r.Header.Get("Authorization")
```

list_projects

List all configured projects with their Git status.

Parameters

None.

Example Response

📂 Projects (2 configured)

📦 my-api (default)
   Main backend API
   Path: /home/user/projects/my-api (main, clean)
   Concurrency: 1
   Tools: Read, Write, Edit, Bash(git *), Bash(go *), Bash(make *)

📦 frontend
   React frontend
   Path: /home/user/projects/frontend (develop, dirty)
   Concurrency: 2
   Tools: Read, Write, Edit, Bash(npm *)

read_file

Read a file from a configured project.

Parameters

Parameter Type Required Default Description
path string Yes — Relative path within the project
project string No default project Project name
line_start number No — Start reading from this line number (registered but not implemented in current version)
line_end number No — Stop reading at this line number (registered but not implemented in current version)

Security

All paths are validated against the project root. Path traversal attempts (e.g., ../../etc/passwd) are blocked. Files larger than 1MB are rejected.

Example Response

📄 my-api/cmd/main.go (1.2 KB)

```go
package main

import (
    "log/slog"
    "os"
)

func main() {
    // ...
}
```

herald_push

Push the current Claude Code session context to Herald for remote monitoring and continuation from another device. This is the reverse flow — instead of Claude Chat dispatching tasks, Claude Code pushes its session to Herald.

If a linked task with the same session_id already exists, it is updated instead of creating a duplicate.

Parameters

Parameter Type Required Default Description
session_id string Yes — Current Claude Code session ID
summary string Yes — Summary of what has been done in this session so far
project string No — Project name or working directory path
files_modified array No — List of files created or modified during the session
current_task string No — What was being worked on (in progress or next step)
git_branch string No — Current git branch
turns number No — Number of conversation turns so far

Example Response (New)

Session pushed to Herald

- Task ID: herald-a1b2c3d4
- Session: ses_abc123
- Project: my-api
- Status: linked

You can now continue this session from Claude Chat:
  list_tasks to find it
  check_task for the full summary
  start_task with session_id "ses_abc123" to resume

Example Response (Updated)

Session updated in Herald

- Task ID: herald-a1b2c3d4
- Session: ses_abc123
- Project: my-api
- Status: linked

You can now continue this session from Claude Chat:
  list_tasks to find it
  check_task for the full summary
  start_task with session_id "ses_abc123" to resume

get_logs

View logs and activity history.

Parameters

Parameter Type Required Default Description
task_id string No — Show detailed logs for a specific task
level string No "info" Minimum log level: "debug", "info", "warn", "error"
limit number No 20 Maximum log entries to return

Example Response (Specific Task)

📋 Logs for herald-a1b2c3d4

• Status: ✅ completed
• Project: my-api
• Created: 2026-02-12 14:30:00
• Started: 2026-02-12 14:30:01
• Completed: 2026-02-12 14:34:12
• Duration: 4m 12s
• Session: ses_abc123
• Cost: $0.34
• Turns: 8

Example Response (Recent Activity)

📋 Recent activity (5 tasks)

✅ herald-a1b2c3d4 — completed (my-api) — 2026-02-12 14:34
🔄 herald-e5f6a7b8 — running (my-api) — 2026-02-12 14:40
❌ herald-c9d0e1f2 — failed (frontend) — 2026-02-12 13:15
✅ herald-11223344 — completed (my-api) — 2026-02-12 12:00
🚫 herald-55667788 — cancelled (frontend) — 2026-02-12 11:30