← All MCP tools

Create artifact upload

create_artifact_upload
Write

What it does

Attach a real file to a task — a PDF, a screenshot, a spreadsheet, anything too large or too binary for an inline deliverable. Reserves a stored file on the task and returns a one-time upload_url. Then PUT the file's raw bytes to that URL with NO Authorization header (e.g. curl -X PUT --data-binary @report.pdf "<upload_url>"): the link itself is the credential, it works for one successful upload, and it expires 15 minutes after this call, so request it right before you upload. Once the PUT succeeds, record the file on the task with update_task as a deliverable {label, kind, artifact_id}, using the artifact_id returned here. To replace a file you already attached, pass its artifact_id — the deliverable keeps pointing at the newest upload. Refused for a read-only token, a task outside this token's project or workspace, a task in Trash, and a file past the size ceilings (25 MB per file, 100 MB across a task, 1 GB across the account).

Parameters

NameTypeRequiredDescription
task_idstringRequired

The task the file belongs to

labelstringRequired

What the file is, as a human reads it — e.g. "Q3 report"

filenamestring | nullOptional

What the downloaded file should be called. Advisory and sanitised before use — the extension comes from an allow-list, not from you.

kindstringOptional

"pdf" for a PDF; "binary" (the default) for anything else.

Allowed valuespdfbinary
size_bytesnumberRequired

The file's exact size in bytes. The quotas are checked against it now, and the upload is refused if the bytes you PUT are larger.

artifact_idstring | nullOptional

To replace a file you already uploaded to this task: its artifact_id. Omit to attach a new file.

Annotations

The hints the server sends with this tool. A host reads them to decide whether to ask you before a call.

Read-onlyreadOnlyHint: false
Changes data in your Done account.
DestructivedestructiveHint: false
Only adds or reads; nothing already there is removed or overwritten.
IdempotentidempotentHint: false
Each call can add something new, such as a comment, a run or a task.
Open worldopenWorldHint: false
Touches only your own Done account.

Which tokens can call it

A connection made with OAuth has full access. A token from Settings → Agent access → Extra MCP tokens can be narrowed, and a narrowed token never sees beyond its project or workspace.

  • Full accessAllowed
  • Read-only tokenRefused
  • Single-project tokenAllowed
  • Single-workspace tokenAllowed

Try it

With Done connected, ask your assistant something like:

“Attach the PDF report to the quarterly review task.”

Connect Done to your assistant

One MCP endpoint per account, over OAuth or a token. Step-by-step setup for each client:

MCP setup overview →