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)¶
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¶
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