Tickets

Task management.

12 actions. Each is callable by the agent as a tool, over HTTP via /api/invoke, and (usually) from a UI page.

tickets.set_fields

POST · mutating

Set user-defined (custom) field values on a task/record. Pass customFields as a map of project_fields.id → value. Merges with existing values.

  • AI tool: tickets_set_fields
  • API: POST /api/invoke/tickets.set_fields

Input

Field Type Required Description
id string yes
customFields object yes
JSON Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1
    },
    "customFields": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    }
  },
  "required": [
    "id",
    "customFields"
  ]
}

tickets.list

GET

List tickets — the unified work primitive (tasks, bugs, docs, content-drafts, decisions, engagements, imported items). Filter by project, mission, subject, kind, status, assignee.

  • AI tool: tickets_list
  • API: GET /api/invoke/tickets.list

Input

Field Type Required Description
projectId string
projectIds string[]
hasProject boolean
missionId string
subjectId string
kind "task" | "bug" | "doc" | "idea" | "content-draft" | "decision" | "engagement" | "mission-approval" | "imported" | "capability-request"
kinds string[]
status string
assigneeId string
openOnly boolean
q string
orderBy "updated" | "created" | "title" | "kind" | "status" | "priority" | "due" | "project"
orderDir "asc" | "desc"
limit integer
offset integer
JSON Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "projectId": {
      "type": "string",
      "minLength": 1
    },
    "projectIds": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      }
    },
    "hasProject": {
      "type": "boolean"
    },
    "missionId": {
      "type": "string",
      "minLength": 1
    },
    "subjectId": {
      "type": "string",
      "minLength": 1
    },
    "kind": {
      "type": "string",
      "enum": [
        "task",
        "bug",
        "doc",
        "idea",
        "content-draft",
        "decision",
        "engagement",
        "mission-approval",
        "imported",
        "capability-request"
      ]
    },
    "kinds": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "task",
          "bug",
          "doc",
          "idea",
          "content-draft",
          "decision",
          "engagement",
          "mission-approval",
          "imported",
          "capability-request"
        ]
      }
    },
    "status": {
      "type": "string"
    },
    "assigneeId": {
      "type": "string",
      "minLength": 1
    },
    "openOnly": {
      "default": false,
      "type": "boolean"
    },
    "q": {
      "type": "string"
    },
    "orderBy": {
      "type": "string",
      "enum": [
        "updated",
        "created",
        "title",
        "kind",
        "status",
        "priority",
        "due",
        "project"
      ]
    },
    "orderDir": {
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "limit": {
      "default": 100,
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  }
}

tickets.facets

GET

Aggregate facets for the cross-project Tasks surface: per-project status counts, kind counts, and the grand total over project-bearing tickets. Computed with GROUP BY in the DB so the client never loads every ticket to chart or count them.

  • AI tool: tickets_facets
  • API: GET /api/invoke/tickets.facets

Input

No parameters.

JSON Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {}
}

tickets.get

GET

Get one ticket by id, plus its comments, child tickets, and history (audit log).

  • AI tool: tickets_get
  • API: GET /api/invoke/tickets.get

Input

Field Type Required Description
id string yes
JSON Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1
    }
  },
  "required": [
    "id"
  ]
}

tickets.create

POST · mutating

Create a ticket. Pick the right kind: "task" for generic work, "bug" for defects, "doc" for writing, "content-draft" for social posts (agent populates payload with platform/content), "decision" for an agent-proposed action awaiting human approval, "capability-request" when YOU (the agent) need a tool/integration/data source that doesn't exist yet. Always populate trigger with provenance ("From #engineering @sarah: …") on agent-created tickets so the audit trail is real.

When the agent calls it: Use kind="capability-request" when you discover you can't do something the user asked for because a tool / integration / data source / workflow is missing. Example: user asks you to post to dev.to → no dev.to tool exists → file a capability-request instead of pretending it's impossible. Title format: "Add integration" / "Add tool". Description: 1-2 sentences saying what you need + what you tried. Payload should include { category: 'integration' | 'tool' | 'knowledge' | 'workflow' | 'data' | 'other', what: string, why: string, attempts: string[], suggestedSolution?: string }. After filing, tell the user the ticket id + offer the best available workaround.

  • AI tool: tickets_create
  • API: POST /api/invoke/tickets.create

Input

Field Type Required Description
kind "task" | "bug" | "doc" | "idea" | "content-draft" | "decision" | "engagement" | "mission-approval" | "imported" | "capability-request" yes
projectId union
missionId union
subjectId union
parentId union
title string yes
description string
status string
priority "low" | "normal" | "high" | "urgent"
labels string[]
customFields object
assigneeIds string[]
createdBy union
dueDate union
startDate union
scheduledFor union
completedAt union
reasoning union
confidence union
proposedActions object[]
requiresApproval boolean
externalRef union
externalProvider union
externalUrl union
trigger union
payload object
JSON Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "task",
        "bug",
        "doc",
        "idea",
        "content-draft",
        "decision",
        "engagement",
        "mission-approval",
        "imported",
        "capability-request"
      ]
    },
    "projectId": {
      "anyOf": [
        {
          "type": "string",
          "minLength": 1
        },
        {
          "type": "null"
        }
      ]
    },
    "missionId": {
      "anyOf": [
        {
          "type": "string",
          "minLength": 1
        },
        {
          "type": "null"
        }
      ]
    },
    "subjectId": {
      "anyOf": [
        {
          "type": "string",
          "minLength": 1
        },
        {
          "type": "null"
        }
      ]
    },
    "parentId": {
      "anyOf": [
        {
          "type": "string",
          "minLength": 1
        },
        {
          "type": "null"
        }
      ]
    },
    "title": {
      "type": "string"
    },
    "description": {
      "default": "",
      "type": "string"
    },
    "status": {
      "default": "open",
      "type": "string"
    },
    "priority": {
      "default": "normal",
      "type": "string",
      "enum": [
        "low",
        "normal",
        "high",
        "urgent"
      ]
    },
    "labels": {
      "default": [],
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "customFields": {
      "default": {},
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "assigneeIds": {
      "default": [],
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      }
    },
    "createdBy": {
      "anyOf": [
        {
          "type": "string",
          "minLength": 1
        },
        {
          "type": "null"
        }
      ]
    },
    "dueDate": {
      "anyOf": [
        {},
        {
          "type": "null"
        }
      ]
    },
    "startDate": {
      "anyOf": [
        {},
        {
          "type": "null"
        }
      ]
    },
    "scheduledFor": {
      "anyOf": [
        {},
        {
          "type": "null"
        }
      ]
    },
    "completedAt": {
      "anyOf": [
        {},
        {
          "type": "null"
        }
      ]
    },
    "reasoning": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "confidence": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ]
    },
    "proposedActions": {
      "default": [],
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string"
          },
          "target": {
            "type": "string"
          },
          "params": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          }
        },
        "required": [
          "action"
        ]
      }
    },
    "requiresApproval": {
      "default": false,
      "type": "boolean"
    },
    "externalRef": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "externalProvider": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "externalUrl": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "trigger": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "kind": {
              "type": "string",
              "enum": [
                "user-prompt",
                "chat-message",
                "rule-fired",
                "scheduled",
                "cascading",
                "webhook",
                "manual"
              ]
            },
            "conversationId": {
              "type": "string",
              "minLength": 1
            },
            "messageId": {
              "type": "string",
              "minLength": 1
            },
            "ruleId": {
              "type": "string",
              "minLength": 1
            },
            "parentTicketId": {
              "type": "string",
              "minLength": 1
            },
            "chatTurnId": {
              "type": "string"
            },
            "actorId": {
              "type": "string",
              "minLength": 1
            },
            "attribution": {
              "type": "string"
            },
            "sourceUrl": {
              "type": "string"
            }
          },
          "required": [
            "kind",
            "attribution"
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "payload": {
      "default": {},
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    }
  },
  "required": [
    "kind",
    "title"
  ]
}

tickets.update

PATCH · mutating

Update ticket fields (status, priority, assignees, dates, labels, payload).

  • AI tool: tickets_update
  • API: PATCH /api/invoke/tickets.update

Input

Field Type Required Description
id string yes
patch object yes
JSON Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1
    },
    "patch": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1
        },
        "kind": {
          "type": "string",
          "enum": [
            "task",
            "bug",
            "doc",
            "idea",
            "content-draft",
            "decision",
            "engagement",
            "mission-approval",
            "imported",
            "capability-request"
          ]
        },
        "projectId": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1
            },
            {
              "type": "null"
            }
          ]
        },
        "missionId": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1
            },
            {
              "type": "null"
            }
          ]
        },
        "subjectId": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1
            },
            {
              "type": "null"
            }
          ]
        },
        "parentId": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1
            },
            {
              "type": "null"
            }
          ]
        },
        "title": {
          "type": "string"
        },
        "description": {
          "default": "",
          "type": "string"
        },
        "status": {
          "default": "open",
          "type": "string"
        },
        "priority": {
          "default": "normal",
          "type": "string",
          "enum": [
            "low",
            "normal",
            "high",
            "urgent"
          ]
        },
        "labels": {
          "default": [],
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "customFields": {
          "default": {},
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        },
        "assigneeIds": {
          "default": [],
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1
          }
        },
        "createdBy": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1
            },
            {
              "type": "null"
            }
          ]
        },
        "dueDate": {
          "anyOf": [
            {},
            {
              "type": "null"
            }
          ]
        },
        "startDate": {
          "anyOf": [
            {},
            {
              "type": "null"
            }
          ]
        },
        "scheduledFor": {
          "anyOf": [
            {},
            {
              "type": "null"
            }
          ]
        },
        "completedAt": {
          "anyOf": [
            {},
            {
              "type": "null"
            }
          ]
        },
        "reasoning": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "confidence": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ]
        },
        "proposedActions": {
          "default": [],
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "action": {
                "type": "string"
              },
              "target": {
                "type": "string"
              },
              "params": {
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            },
            "required": [
              "action"
            ]
          }
        },
        "requiresApproval": {
          "default": false,
          "type": "boolean"
        },
        "externalRef": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "externalProvider": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "externalUrl": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "trigger": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "kind": {
                  "type": "string",
                  "enum": [
                    "user-prompt",
                    "chat-message",
                    "rule-fired",
                    "scheduled",
                    "cascading",
                    "webhook",
                    "manual"
                  ]
                },
                "conversationId": {
                  "type": "string",
                  "minLength": 1
                },
                "messageId": {
                  "type": "string",
                  "minLength": 1
                },
                "ruleId": {
                  "type": "string",
                  "minLength": 1
                },
                "parentTicketId": {
                  "type": "string",
                  "minLength": 1
                },
                "chatTurnId": {
                  "type": "string"
                },
                "actorId": {
                  "type": "string",
                  "minLength": 1
                },
                "attribution": {
                  "type": "string"
                },
                "sourceUrl": {
                  "type": "string"
                }
              },
              "required": [
                "kind",
                "attribution"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "payload": {
          "default": {},
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        },
        "createdAt": {},
        "updatedAt": {}
      }
    }
  },
  "required": [
    "id",
    "patch"
  ]
}

tickets.set_status

POST · mutating

Shorthand to update a ticket's status — fires the kanban-column move events for any listeners.

  • AI tool: tickets_set_status
  • API: POST /api/invoke/tickets.set_status

Input

Field Type Required Description
id string yes
status string yes
JSON Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1
    },
    "status": {
      "type": "string"
    }
  },
  "required": [
    "id",
    "status"
  ]
}

tickets.assign

POST · mutating

Assign a ticket to one or more actors (humans or agents).

  • AI tool: tickets_assign
  • API: POST /api/invoke/tickets.assign

Input

Field Type Required Description
id string yes
assigneeIds string[] yes
JSON Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1
    },
    "assigneeIds": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      }
    }
  },
  "required": [
    "id",
    "assigneeIds"
  ]
}

tickets.comment

POST · mutating

Post a comment on a ticket.

  • AI tool: tickets_comment
  • API: POST /api/invoke/tickets.comment

Input

Field Type Required Description
id string yes
body string yes
actorId string
parentId string
JSON Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1
    },
    "body": {
      "type": "string"
    },
    "actorId": {
      "type": "string",
      "minLength": 1
    },
    "parentId": {
      "type": "string",
      "minLength": 1
    }
  },
  "required": [
    "id",
    "body"
  ]
}

tickets.history

GET

List a ticket's history / audit log — who changed what, when (created, field updates, status moves, assignments, comments).

  • AI tool: tickets_history
  • API: GET /api/invoke/tickets.history

Input

Field Type Required Description
id string yes
limit integer
JSON Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    }
  },
  "required": [
    "id"
  ]
}

tickets.search

GET

Free-text search over tickets (FTS over title + description).

  • AI tool: tickets_search
  • API: GET /api/invoke/tickets.search

Input

Field Type Required Description
q string yes
projectId string
missionId string
limit integer
JSON Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "q": {
      "type": "string"
    },
    "projectId": {
      "type": "string",
      "minLength": 1
    },
    "missionId": {
      "type": "string",
      "minLength": 1
    },
    "limit": {
      "default": 20,
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "required": [
    "q"
  ]
}

tickets.backfill

POST · mutating

Idempotently mirror existing post_drafts, decisions, and engagements into the unified tickets table so they show up on the universal board.

  • AI tool: tickets_backfill
  • API: POST /api/invoke/tickets.backfill

Input

No parameters.

JSON Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {},
  "additionalProperties": {}
}