Title100/100
Create Task
The title clearly communicates the tool’s action and subject. Keep it concise.
Description73/100
Create a task for the authenticated user. Supports inbox, planned, and someday tasks, with optional priority, project, tags, deadline, location, time slot, recurrence, and links. A task can be planned loosely onto a whole week (plan_week) or month (plan_month) instead of a specific day. Datetimes are interpreted in the user's local timezone.
The description explains the capability, when to use it, and what to expect.
Inputs84/100
16 of 17 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
title
Title of the new task.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
description
Free-form description. Newlines are preserved as <br />.
Clear enough to supply this argument.
duration
Expected duration in minutes. Optional: inbox and someday tasks have no duration unless you set one; a planned task with no duration defaults to the user's default task duration.
Clear enough to supply this argument.
status
Required — always choose one explicitly; there is no default. `inbox` (unscheduled), `planned` (requires a placement: start_datetime, plan_week, or plan_month — unless recurrence is set), or `someday` (parked). Do not pass `inbox`/`someday` together with a placement — that is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
start_datetime
User-local placement on a specific day or moment. Either a date `YYYY-MM-DD` or an ISO-8601 datetime. Providing it implies planned status, so you need not also set `status`. Mutually exclusive with plan_week / plan_month.
Clear enough to supply this argument.
plan_week
Plan the task loosely for a whole week, identified by its dashed `YYYY-WW` year+week string (e.g. "2026-26" = week 26 of 2026). Use this — not start_datetime — when the user names a week without a day ("next week", "this week", "week 27", "the weekly bucket"); don't resolve it to that week's Monday. Implies planned status. Mutually exclusive with start_datetime, plan_month, and recurrence.
Clear enough to supply this argument.
plan_month
Plan the task loosely for a whole month, as `YYYY-MM`. Use this — not start_datetime — when the user names a month without a day ("next month", "sometime in July"). Implies planned status. Mutually exclusive with start_datetime, plan_week, and recurrence.
Clear enough to supply this argument.
priority
Not provided
Missing description. Explain what this value means and how to supply it.
deadline
Deadline — when the task is due — as a pure calendar date (YYYY-MM-DD). Independent of the plan date (status / start_datetime); a task in any status can have one.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
location
Where the task happens — a street address, a place name, or a meeting URL. It shows on the task, and when the task is locked to a calendar it also appears as the location of that calendar event. Single line, max 255 characters (the limit Google and Outlook accept). Pass null on edit_task to remove it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
project_id
Akiflow project UUID; omit it or pass null to leave the project unspecified — a subtask then adopts its parent's project, and a task left without one may get a project predicted for it. Silently dropped if the user does not own this project.
Clear enough to supply this argument.
section_id
Section (within a project) to place the task in — a section id from list_projects; null for none. The section must belong to the task's project: pass its parent as project_id, or omit project_id to adopt the section's project automatically. A section_id whose project contradicts an explicit project_id is rejected; an unknown/invalid id is silently dropped.
Clear enough to supply this argument.
parent_task_id
Create this task as a subtask of the given parent (its task UUID); omit or null for a top-level task. The child inherits the parent's project and tags for any you don't set in this call. To build a parent with children, create the parent first, then create each child with its `parent_task_id`. A recurring task cannot be a subtask, and the parent cannot be a recurring task.
Clear enough to supply this argument.
tags_ids
Tag UUIDs. Unknown ids are silently filtered out.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
time_slot_id
Time-slot id (UUID or recurring-instance pseudoid `parentId_originalDate`).
Clear enough to supply this argument.
recurrence
RFC 5545 RRULE string. Only honored when status=planned. Minimum frequency is daily.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
links
URLs to attach to the task as link chips — e.g. an article to read or a doc to reference. Whenever the task is about reading or pointing at a web page, put the URL here so it shows on the task. URLs you write into the title or description are detected and attached automatically, so you need not duplicate them here.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations100/100
All four behavior hints are declared.
{
"title": "Create Task",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}Output schema91/100
The output schema explains the structured result.
View output schema
{
"type": "object",
"required": [
"task"
],
"properties": {
"task": {
"type": "object",
"required": [
"id",
"title",
"done",
"status"
],
"properties": {
"id": {
"type": "string",
"description": "Task id to pass to other tools. For a recurring occurrence this is a `parentId_originalDate` pseudoid."
},
"url": {
"type": "string",
"description": "Stable web link that opens this task in Akiflow. Include it when mentioning the task to the user."
},
"date": {
"type": [
"string",
"null"
],
"format": "date",
"description": "All-day plan date `YYYY-MM-DD` — when to do the task. Null for a timed task (use `datetime`) and for unscheduled inbox/someday tasks. This is the plan date, not the deadline (see `deadline`)."
},
"done": {
"type": "boolean"
},
"tags": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
},
"description": "Tags with resolved names, alongside `tags_ids`. `name` is null for an unknown id."
},
"links": {
"type": "array",
"items": {
"type": "string"
}
},
"title": {
"type": "string",
"description": "Always a non-empty string; \"(no title)\" when the task has no title."
},
"status": {
"type": "string",
"description": "Task placement, derived from the task: `inbox`, `someday`, `planned for <local date>` (e.g. `planned for Thu 4 Jun 14:30`), `planned for week <N> (<start> – <end>)` or `planned for <Mon YYYY>` for a window-planned task, or a terminal state such as `trashed`/`cancelled`."
},
"done_at": {
"type": [
"string",
"null"
],
"description": "When the task was completed, as naive local wall-clock with no offset (e.g. `2026-06-04T13:05:40`), or null when the task is not done. `done` is the boolean completion signal; this is its timestamp. Note a completed task keeps its placement `status` (\"planned for …\") — rely on `done`/`done_at`, not `status`, to tell whether it is finished."
},
"datetime": {
"type": [
"string",
"null"
],
"description": "Planned moment — when to do the task — in the user's current timezone, as naive local wall-clock with no offset (e.g. `2026-06-04T23:30:00`). Null for an all-day task (use `date`) and for unscheduled tasks. This is the plan date, not the deadline (see `deadline`). Pass it straight back to edit_task/plan_task unchanged."
},
"deadline": {
"type": [
"string",
"null"
],
"format": "date",
"description": "Deadline — when the task is due — as a pure calendar date `YYYY-MM-DD`, or null. Has no time and no timezone, and can be set in any status (independent of the plan date and of `is_overdue`). Pass it straight back to create_task/edit_task."
},
"duration": {
"type": [
"integer",
"null"
],
"description": "Duration in minutes."
},
"location": {
"type": [
"string",
"null"
],
"description": "Where the task happens — a street address, a place name, or a meeting URL — or null when it has none. When the task is locked to a calendar this is also the calendar event's location. Pass straight back as `location` to create_task/edit_task; `null` removes it."
},
"priority": {
"enum": [
"NONE",
"HIGH",
"MEDIUM",
"LOW",
"GOAL",
null
],
"type": [
"string",
"null"
],
"description": "Priority level, or null when unset. \"NONE\" means it was explicitly set to no priority."
},
"subtasks": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"title",
"done",
"status",
"subtask_count"
],
"properties": {
"id": {
"type": "string",
"description": "Child task id — pass to get_task / edit_task like any other task id."
},
"done": {
"type": "boolean"
},
"title": {
"type": "string"
},
"status": {
"type": "string",
"description": "Same placement label as a full task `status`."
},
"subtask_count": {
"type": "integer",
"minimum": 0,
"description": "This child's own direct-subtask count; get_task the child to see them."
}
},
"additionalProperties": false
},
"description": "Direct child subtasks as compact references — present only on get_task for a parent. Each child carries its own `subtask_count`, so you can get_task a child to reach deeper levels; the full subtree is never embedded."
},
"tags_ids": {
"type": "array",
"items": {
"type": "string"
}
},
"plan_week": {
"type": [
"string",
"null"
],
"description": "Set when the task is planned loosely for a whole week (not a specific day): the dashed `YYYY-WW` year+week string (e.g. \"2026-26\" = week 26 of 2026). Null otherwise. `date`/`datetime` are null for a week-planned task. Pass this value straight back as `plan_week` to keep it in the same week bucket; see `status` for the human-readable week range."
},
"is_overdue": {
"type": "boolean"
},
"plan_month": {
"type": [
"string",
"null"
],
"description": "Set when the task is planned loosely for a whole month (not a specific day): the month `YYYY-MM`. Null otherwise. `date`/`datetime` are null for a month-planned task. Pass this value straight back as `plan_month`."
},
"project_id": {
"type": [
"string",
"null"
],
"description": "Akiflow project UUID this task belongs to, or null. Pass straight back as `project_id` to create_task/edit_task."
},
"section_id": {
"type": [
"string",
"null"
],
"description": "Section (within the project) this task belongs to, or null. A section always lives under a project — see list_projects for each project's sections. Pass straight back as `section_id` to create_task/edit_task; `null` clears it."
},
"attachments": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"size_bytes",
"mime_type",
"on_series"
],
"properties": {
"id": {
"type": "string",
"description": "Attachment id — pass to get_attachment."
},
"name": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"on_series": {
"type": "boolean",
"description": "True when the file is attached to the whole recurring series rather than this occurrence alone, so it shows on every occurrence."
},
"size_bytes": {
"type": "integer",
"minimum": 0
}
},
"additionalProperties": false
},
"description": "Files attached to the task — present only on get_task, and only when there are any. Pass an `id` to get_attachment to read the file or get a download link."
},
"description": {
"type": [
"string",
"null"
]
},
"project_name": {
"type": [
"string",
"null"
],
"description": "Resolved project display name (icon + folder folded, per list_projects), or null when the task has no project."
},
"section_name": {
"type": [
"string",
"null"
],
"description": "Resolved section display name, or null when the task has no section."
},
"subtask_count": {
"type": "integer",
"minimum": 0,
"description": "Number of direct subtasks. Present (with `subtasks`) only on get_task for a task that has children."
},
"parent_task_id": {
"type": [
"string",
"null"
],
"description": "The id of this task's parent task when it is a subtask, else null. Pass it back as `parent_task_id` to attach/reparent on create_task/edit_task, or `parent_task_id: null` on edit_task to detach."
},
"attachment_count": {
"type": "integer",
"minimum": 1,
"description": "Number of files attached to the task (for a recurring occurrence, its own plus the whole series'). Absent when the task has none. get_task the task to see the files."
},
"parent_task_title": {
"type": [
"string",
"null"
],
"description": "Resolved title of the parent task (see `parent_task_id`), or null when the task is not a subtask / the parent is unknown."
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}