nenoDevelopers
⌘K
v1

MCP · Tasks

Respond to a task

WRITErespond_to_task

Answers an open task from the accountant: posts a message, attaches a document through an upload token, or closes the task as approved or rejected.

Scope
tasks:write
Create tasks and reply to them
Permission
neno.viewTasks
Your role in the company must include it
Annotations
readOnlyHint falseidempotentHint falsedestructiveHint false

Description for models

Answer an open task from the accountant — post what the user says back, attach the document the task asked for, or close the task when it is settled. Use it after list_open_tasks has shown you what is waiting. A document goes through create_bill_upload first: PUT it to the URL that returns, then pass the token here as upload_token. Answering is the normal act; only set status when the user says the request is settled. A refusal goes as message.

Sent verbatim in tools/list. It's written for the model, so it says when to use the tool.

Arguments

messagestring · max 10000

What to say back to the accountant, in the user's own words. Post what they told you rather than a summary of it.

statusstring

Close the task instead of answering it. Only when the user says the request is settled; answering is what a task normally wants. To refuse a request, send the refusal as message.

approved
task_idstringrequired

The id of the task to answer, from list_open_tasks.

upload_tokenstring

A document answering the task. Most tasks ask for one. Call create_bill_upload for an upload URL and token, PUT the document to that URL, then pass the token here. It can travel with message in the same call.

Added by the server

On every tool that acts on one company
workspacestring

The id of the company this applies to. This connection covers a single company, which is filled in for you, so you can leave this out.

Result

text
Success. The answer as plain text in content[0].text, starting with Company: and the company name.
isError
Refused or failed. A missing permission, an invalid argument or a server failure sets isError: true. The text says what went wrong and what to tell the user.
input
Company needed. With several companies and no workspace argument, the server asks which company the call is for. A client that can't ask gets an error that lists the companies.
POST /mcp · tools/call
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "respond_to_task",
"arguments": {
"message": "Statements for July to September are attached.",
"task_id": "9b2f6c1e-4a7d-4f0e-8c3b-2d51e7a0f4c9",
"upload_token": "upl_4Kx7…"
}
}
}
Example resultHand-written
content[0].text
Company: Studio Veld BV
Sent to the accountant on "Upload Q3 bank statements", with statements-q3.pdf attached.

Tools return plain text with no output schema. This example follows the tool's real format, but the values are made up.