Create post
Publish a post, add it to the queue, schedule it or save a draft.
MCP tool tumblr_write → create_post
write Confirm
Creates a post on your blog under your name. Set state to published (default), queue, draft or private. With state queue and no publish_on, the post joins the end of the queue and follows the blog Queue settings. With publish_on it publishes at that time. Private posts cannot be queued. A full queue or the daily limit returns an error. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| blog string required | string | Blog name, e.g. 'studio-notes' for studio-notes.tumblr.com. Names come from list_blogs. |
| content string required | string | Post text. Links and images go in as URLs. |
| tags string[] | string[] | Tags without the # sign. |
| state enum | enum | published, queue, draft or private. Default: published. |
| publish_on datetime | datetime | ISO 8601 time to publish. Only used when state is queue. |
tools/call
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "tumblr_write",
"arguments": {
"operation": "create_post",
"arguments": {
"blog": "studio-notes",
"content": "New print: harbor at dawn, 40 x 60 cm, ink on paper. Available this Friday.",
"tags": [
"studio notes",
"ink",
"print"
],
"state": "queue",
"publish_on": "2026-10-19T09:00:00+02:00"
}
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"post_id": "771204518830",
"blog": "studio-notes",
"state": "queue",
"publish_on": "2026-10-19T09:00:00+02:00",
"tags": [
"studio notes",
"ink",
"print"
]
},
"isError": false
}