AUTO-DETECTED FROM tools/*.js — LIVE SCHEMAS
Tool catalog
Tool catalog — the package tools' live schemas (auto-detected). Harness metadata flags (sandbox, secret, …) are shown here but stripped from the schemas a model ever sees.
bash sandbox onTimeout
tools/bash.js
Run a Bash command in the working folder; return output and any exit code. Use read to inspect folders.
Input schema
{
"type": "object",
"properties": {
"command": {
"type": "string",
"description": "The bash command line to run (no cd, ln, or ls; use read for folder listing; every visible path argument must stay inside the working folder)"
},
"timeout": {
"type": "integer",
"description": "Requested milliseconds timeout (default: 120000; capped at 1200000)"
},
"env": {
"type": "object",
"description": "Extra environment variables for the command."
}
},
"required": [
"command"
]
}edit
tools/edit.js
Replace exact text in one file. Read the file first, then send oldText/newText pairs from its current content. Merge nearby or overlapping changes into one edit. Set matchAll: true to replace every occurrence of each oldText. To reverse an edit, pass the edit id returned after it as rollback.
Input schema
{
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "Path to the file to edit (relative to the working folder)"
},
"edits": {
"type": "array",
"description": "The replacements to make. Match each oldText against the file as it is now, not against earlier edits in the same call. Never send overlapping or nested edits; merge them into one edit.",
"items": {
"type": "object",
"properties": {
"oldText": {
"type": "string",
"description": "The exact text to replace. Make it unique in the file and never overlap another edit’s oldText."
},
"newText": {
"type": "string",
"description": "The replacement text."
}
},
"required": [
"oldText",
"newText"
]
}
},
"ask": {
"type": "boolean",
"description": "Ask the user for permission, showing the offending lines, when a newText names a path outside the working folder. Omit it to refuse such edits outright."
},
"matchAll": {
"type": "boolean",
"description": "Replace every occurrence of each oldText. Omit it to require a unique match."
},
"rollback": {
"type": "string",
"description": "Reverse a recent edit by passing the edit id returned after it succeeded. Pass the same path the edit targeted. The file must still hold the replacement text at the edited positions; if it does not, read the file and make a new targeted edit instead."
}
},
"anyOf": [
{
"required": [
"path",
"edits"
]
},
{
"required": [
"path",
"rollback"
]
}
]
}job-schedule trusted
tools/job-schedule.js
List, read, create, replace, or remove scheduled Markdown tasks in an operational project. Pause with enabled: false. New/changed tasks wait for a later scan; removal never cancels running work. Task-local schedules determine admission; the optional daemon is not required. Cannot initialize, enable, disable, repair, run, control a daemon, or access secrets. Unavailable to read-only Agents.
Input schema
{
"type": "object",
"additionalProperties": false,
"required": [
"action"
],
"properties": {
"action": {
"type": "string",
"enum": [
"list",
"read",
"create",
"update",
"remove"
],
"description": "Task operation. update replaces complete Markdown; remove leaves history and running work intact."
},
"filename": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9 ._-]*\\.md$",
"maxLength": 120,
"description": "Leaf .md filename for read/create/update/remove; never a path or opaque task ID."
},
"prompt": {
"type": "string",
"minLength": 1,
"description": "Task instructions. Required for create; omitted on update to preserve the current prompt."
},
"enabled": {
"type": "boolean",
"description": "Whether the task may run. Omitted on update to preserve the current value."
},
"schedule": {
"description": "Task schedule. Omitted on update to preserve it. Use once, every <duration>, or one structured at/every schedule with optional days.",
"oneOf": [
{
"type": "string",
"pattern": "^(once|every [1-9][0-9]*[mhdw])$"
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"at": {
"type": "array",
"minItems": 1,
"items": {
"type": "string",
"pattern": "^(?:[01][0-9]|2[0-3]):[0-5][0-9](?: GMT)?$"
}
},
"every": {
"type": "string",
"pattern": "^[1-9][0-9]*[mhdw]$"
},
"days": {
"oneOf": [
{
"type": "string",
"enum": [
"weekdays",
"weekends"
]
},
{
"type": "array",
"minItems": 1,
"uniqueItems": true,
"items": {
"type": "string",
"enum": [
"sun",
"mon",
"tue",
"wed",
"thu",
"fri",
"sat"
]
}
}
]
}
},
"oneOf": [
{
"required": [
"at"
]
},
{
"required": [
"every"
]
}
]
}
]
}
}
}mcp safe
tools/mcp.js
Use an MCP server in three steps: call servers to discover names, call tools with a server to discover its tools, then call with that server, tool, and arguments. Server responses are returned as tool results.
Input schema
{
"type": "object",
"properties": {
"action": {
"type": "string",
"enum": [
"servers",
"tools",
"call"
],
"description": "What to do"
},
"server": {
"type": "string",
"description": "The configured server name (tools/call)"
},
"tool": {
"type": "string",
"description": "The remote tool's name (call)"
},
"arguments": {
"type": "object",
"description": "The remote tool's arguments (call)"
}
},
"required": [
"action"
]
}note-set safe
tools/note.js
Create or update scratchpad notes; set one note or a batch.
Input schema
{
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "The note's title (its key)."
},
"type": {
"type": "string",
"enum": [
"todo",
"active",
"done",
"info",
"secret"
],
"description": "todo / active / done / info / secret (secret is hidden from the on-screen display)."
},
"summary": {
"type": "string"
},
"content": {
"type": "string"
},
"notes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "The note's title (its key)."
},
"type": {
"type": "string",
"enum": [
"todo",
"active",
"done",
"info",
"secret"
],
"description": "todo / active / done / info / secret (secret is hidden from the on-screen display)."
},
"summary": {
"type": "string"
},
"content": {
"type": "string"
}
},
"additionalProperties": true,
"required": [
"title"
]
},
"description": "Set several notes in one call instead of the top-level fields."
}
},
"additionalProperties": true
}note-done safe
tools/note.js
Mark notes done without changing their content.
Input schema
{
"type": "object",
"properties": {
"notes": {
"type": "array",
"items": {
"type": "string"
},
"description": "Titles to mark done."
}
},
"required": [
"notes"
]
}note-remove safe
tools/note.js
Delete a note by title — "*" deletes every note.
Input schema
{
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "The note's title — \"*\" removes every note."
}
},
"required": [
"title"
]
}note-get safe
tools/note.js
Read selected note fields; request keys only when needed.
Input schema
{
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "The note's title (its key)."
},
"only": {
"type": "array",
"items": {
"type": "string"
},
"description": "The fields to read (default [\"content\"]; [\"*\"] reads every field)."
},
"keys": {
"type": "boolean",
"description": "Return just the selected field names that exist."
}
},
"required": [
"title"
]
}note-list safe
tools/note.js
List open note titles and types.
Input schema
{
"type": "object",
"properties": {}
}note-search safe
tools/note.js
Case-insensitively regex-search note titles and fields.
Input schema
{
"type": "object",
"properties": {
"pattern": {
"type": "string",
"description": "A regular expression (case-insensitive)."
},
"field": {
"type": "string",
"description": "Limit the search to one field (default: the title and all fields)."
},
"max": {
"type": "number",
"description": "Maximum matches to return (default 20, cap 50)."
}
},
"required": [
"pattern"
]
}question safe sandbox
tools/question.js
Ask structured user questions with selectable options and custom answers.
Input schema
{
"type": "object",
"properties": {
"questions": {
"type": "array",
"description": "Questions to ask the user (1-4 questions)",
"items": {
"type": "object",
"properties": {
"question": {
"type": "string",
"description": "The complete question to ask the user. Clear, specific, ending with a question mark."
},
"header": {
"type": "string",
"description": "Very short chip/tag shown next to the question (max 16 characters)."
},
"details": {
"type": "string",
"description": "Optional supporting context, constraints, or consequences shown under the question."
},
"multiSelect": {
"type": "boolean",
"description": "Allow selecting multiple options instead of just one."
},
"options": {
"type": "array",
"description": "The available choices (2-16 options).",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "The display text for this option (max 60 characters)."
},
"description": {
"type": "string",
"description": "What this option means or what happens if chosen."
},
"preview": {
"description": "Optional focused preview: a plain string, or typed text/code with optional title and language.",
"oneOf": [
{
"type": "string"
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"text",
"code"
]
},
"content": {
"type": "string"
},
"language": {
"type": "string"
},
"title": {
"type": "string"
}
},
"required": [
"type",
"content"
]
}
]
}
},
"required": [
"label",
"description"
]
}
}
},
"required": [
"question",
"header",
"options"
]
}
}
},
"required": [
"questions"
]
}read safe
tools/read.js
Use read to read a file (cat), grep it, list a folder (ls), or filter folder files (find).
Input schema
{
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "relative path to folder or file."
},
"startLine": {
"type": "integer",
"description": "first line to include (1-based, inclusive); default 1. On a folder: with endLine, an entry/match cap (an initial maxMatches — an explicit maxMatches wins)"
},
"endLine": {
"type": "integer",
"description": "last line to include (1-based, inclusive); default: end of file. On a folder: the cap's upper line"
},
"startChar": {
"type": "integer",
"description": "first character to include (0-based, inclusive); with binary:true, first BYTE. Combines with a line range: the line range selects first, the character range caps the selection"
},
"endChar": {
"type": "integer",
"description": "character offset to stop at (0-based, exclusive); with binary:true, a byte offset. A character CAP alongside a line range is valid (e.g. 200 lines but at most 4K characters)"
},
"binary": {
"type": "boolean",
"description": "treat the file as bytes: startChar/endChar become byte offsets and the range is returned as BINARY content (mime-detected) for models that accept binary input, e.g. vision"
},
"base64": {
"type": "boolean",
"description": "encode the result as base64 TEXT (with binary:true, the byte range; otherwise the text result) for models without binary support"
},
"pattern": {
"type": "string",
"description": "grep-like regular expression: return matching lines with line numbers instead of file content; on a folder, searches matching files and prefixes each match with its file path"
},
"glob": {
"type": "string",
"description": "optional glob filtering file names (for example '*.ts') or relative paths (for example 'src/**/*.ts'); applies to folder listings/searches and verifies a file path matches"
},
"ignoreCase": {
"type": "boolean",
"description": "case-insensitive pattern matching"
},
"maxMatches": {
"type": "integer",
"description": "cap on grep matches (default 100); on a folder also caps ls/find output (overrides a line range's cap)"
},
"recursive": {
"type": "boolean",
"description": "on a folder: include sub-folders — grep descends into them and ls/find output nests their entries"
},
"info": {
"type": "boolean",
"description": "return information about the file/query instead of the content: metadata (type, size, created, modified — for a file, also its WHOLE character and line counts) and how many bytes (or matches/entries) the requested read would return"
}
},
"required": [
"path"
]
}skill safe
tools/skill.js
List available skills or load skills for the current task.
Input schema
{
"type": "object",
"properties": {
"names": {
"type": "array",
"items": {
"type": "string"
},
"description": "skill names to load (one or more); omit to list the catalog"
}
}
}worker trusted
tools/worker.js
Create or control direct child agents by name. For a new worker, make the first prompt self-contained: state its role, concrete task, relevant context, constraints, deliverable, and acceptance checks. Omit model to inherit your own model, or choose a provider/model value from the model field. Prompts fan out to every same-name child; responses return as attributed user messages.
Input schema
{
"type": "object",
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"description": "Child Agent(s) name. Omit to create an automatically named worker."
},
"prompt": {
"type": "string",
"description": "Message queued to named agent(s); required for new workers. First prompt: role, task, context, constraints, deliverable, and acceptance checks. Delegate tasks, not reasoning."
},
"description": {
"type": "string",
"description": "Description used only when creating a worker."
},
"model": {
"type": "string",
"description": "Endpoint/model used only when creating a worker. Omit to use your own model."
},
"reset": {
"type": "boolean",
"description": "Replace every idle match while preserving identity and endpoint settings."
},
"close": {
"type": "boolean",
"description": "Request handoff from busy matches, then close every match."
},
"info": {
"type": "boolean",
"description": "Include name, model, context usage, state, and description."
},
"list": {
"type": "boolean",
"description": "Include every direct child individually, including duplicate names."
}
}
}write trusted
tools/write.js
Create or overwrite a working-folder file; create parent folders as needed.
Input schema
{
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "Path relative to the working folder."
},
"content": {
"type": "string",
"description": "Content to write."
},
"ask": {
"type": "boolean",
"description": "Ask for permission with surrounding context when the content names an existing path outside the working folder."
}
},
"required": [
"path",
"content"
]
}