MCP server
MCP tools
The tools the Dhanu MCP server offers, the scope each one needs and what it returns.
Every tool maps onto one public API operation, and a key sees only the tools its scope allows. Results carry the same JSON the REST endpoint returns.
| Tool | Needs | Arguments | Returns |
|---|---|---|---|
list_projects | any key | - | { projects } the key can reach |
list_tasks | tasks.read | limit?, cursor? | One page of tasks, newest first |
read_task | tasks.read | taskId | { task } |
read_task_messages | tasks.read | taskId, limit?, cursor? | One page of messages, oldest first |
create_task | tasks.create | input, title?, staffId? | { task }, returns at once |
send_task_message | tasks.create | taskId, input | { message } |
wait_for_reply | tasks.read | taskId, after?, timeoutSeconds? | { messages }, empty on timeout |
list_staff | staff.read | - | { staff } with trigger addresses |
read_staff | staff.read | staffId | { staff } |
list_workflows | workflows.read | - | { workflows } with their fields |
run_workflow | workflows.run | workflowId, values | { task } |
search_brain | brain.search | query | { results } ranked, with snippets |
A typical exchange: create_task with staffId from list_staff, then
wait_for_reply with the task id until it returns a message. wait_for_reply holds
the connection for up to timeoutSeconds (default 60, at most 120) and returns an
empty list when nothing arrived, so a client loops rather than guessing.
The tool list is the same data as the reference: the
server reads it from McpToolCatalog, which is also where a new tool is added.