Plutio MCP by usefulapi
Manage Plutio clients, projects, tasks, time entries and invoices.
Sollte ich dies verwenden
Qualität und Sicherheit
Befunde (1)
- LOWin plutio_list_invoice_subscriptions
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"plutio": {
"url": "https://plutio.usefulapi.io/mcp"
}
}
}Remote-Endpunkte
https://plutio.usefulapi.io/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (37)
🟢plutio_get_workspace
The Plutio workspace this API client is connected to: name, domain, currency, locale, timezone and settings. GET /businesses.
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢plutio_list_people(id, role, filters, query, sort, ...)
People: clients and your own team members (name, role, contactEmails, contactPhones, companies). Returns { count, next_skip, items }; pass next_skip as skip for the next page. Pass id to read one record. Filter with exact-match fields or a MongoDB-style query. GET /people.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"description": "Read just this record (its _id).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"role": {
"description": "Role, e.g. client.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"filters": {
"description": "Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}.",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z_][A-Za-z0-9_.]{0,63}$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"query": {
"description": "A MongoDB-style query as a JSON object string, e.g. {\"name.first\":{\"$regex\":\"^Tay\",\"$options\":\"i\"}} or {\"dueDate\":{\"$lt\":\"2026-12-01\"}}. Supports $regex, $in, $gte and the rest.",
"type": "string",
"maxLength": 4000
},
"sort": {
"description": "Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt).",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9.]*_(asc|desc)$"
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"skip": {
"description": "Records to step over, for paging. Pass the previous reply's next_skip.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢plutio_list_companies(id, filters, query, sort, limit, ...)
Companies (clients that group people): title, industry, people, contact details. Returns { count, next_skip, items }; pass next_skip as skip for the next page. Pass id to read one record. Filter with exact-match fields or a MongoDB-style query. GET /companies.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"description": "Read just this record (its _id).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"filters": {
"description": "Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}.",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z_][A-Za-z0-9_.]{0,63}$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"query": {
"description": "A MongoDB-style query as a JSON object string, e.g. {\"name.first\":{\"$regex\":\"^Tay\",\"$options\":\"i\"}} or {\"dueDate\":{\"$lt\":\"2026-12-01\"}}. Supports $regex, $in, $gte and the rest.",
"type": "string",
"maxLength": 4000
},
"sort": {
"description": "Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt).",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9.]*_(asc|desc)$"
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"skip": {
"description": "Records to step over, for paging. Pass the previous reply's next_skip.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢plutio_list_projects(id, statusId, statusTitle, filters, query, ...)
Projects: name, client, status, dates, budget, billing rate. Returns { count, next_skip, items }; pass next_skip as skip for the next page. Pass id to read one record. Filter with exact-match fields or a MongoDB-style query. GET /projects.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"description": "Read just this record (its _id).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"statusId": {
"description": "Only projects with this status _id (see plutio_list_statuses).",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"statusTitle": {
"description": "Only projects whose status has this title, e.g. In progress.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"filters": {
"description": "Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}.",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z_][A-Za-z0-9_.]{0,63}$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"query": {
"description": "A MongoDB-style query as a JSON object string, e.g. {\"name.first\":{\"$regex\":\"^Tay\",\"$options\":\"i\"}} or {\"dueDate\":{\"$lt\":\"2026-12-01\"}}. Supports $regex, $in, $gte and the rest.",
"type": "string",
"maxLength": 4000
},
"sort": {
"description": "Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt).",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9.]*_(asc|desc)$"
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"skip": {
"description": "Records to step over, for paging. Pass the previous reply's next_skip.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢plutio_list_task_boards(id, projectId, filters, query, sort, ...)
Task boards of projects. A project has one or more boards that hold tasks. Returns { count, next_skip, items }; pass next_skip as skip for the next page. Pass id to read one record. Filter with exact-match fields or a MongoDB-style query. GET /task-boards.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"description": "Read just this record (its _id).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"projectId": {
"description": "Only boards of this project id.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"filters": {
"description": "Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}.",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z_][A-Za-z0-9_.]{0,63}$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"query": {
"description": "A MongoDB-style query as a JSON object string, e.g. {\"name.first\":{\"$regex\":\"^Tay\",\"$options\":\"i\"}} or {\"dueDate\":{\"$lt\":\"2026-12-01\"}}. Supports $regex, $in, $gte and the rest.",
"type": "string",
"maxLength": 4000
},
"sort": {
"description": "Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt).",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9.]*_(asc|desc)$"
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"skip": {
"description": "Records to step over, for paging. Pass the previous reply's next_skip.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢plutio_list_task_groups(id, taskBoardId, filters, query, sort, ...)
Task groups (columns/lists on a task board). Returns { count, next_skip, items }; pass next_skip as skip for the next page. Pass id to read one record. Filter with exact-match fields or a MongoDB-style query. GET /task-groups.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"description": "Read just this record (its _id).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"taskBoardId": {
"description": "Only groups of this task board id.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"filters": {
"description": "Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}.",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z_][A-Za-z0-9_.]{0,63}$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"query": {
"description": "A MongoDB-style query as a JSON object string, e.g. {\"name.first\":{\"$regex\":\"^Tay\",\"$options\":\"i\"}} or {\"dueDate\":{\"$lt\":\"2026-12-01\"}}. Supports $regex, $in, $gte and the rest.",
"type": "string",
"maxLength": 4000
},
"sort": {
"description": "Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt).",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9.]*_(asc|desc)$"
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"skip": {
"description": "Records to step over, for paging. Pass the previous reply's next_skip.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢plutio_list_tasks(id, projectId, taskBoardId, taskGroupId, status, ...)
Tasks: title, status (incomplete, completed, overdue), dueDate, assignedTo, projectId, taskBoardId. Returns { count, next_skip, items }; pass next_skip as skip for the next page. Pass id to read one record. Filter with exact-match fields or a MongoDB-style query. GET /tasks.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"description": "Read just this record (its _id).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"projectId": {
"description": "Only tasks of this project id.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"taskBoardId": {
"description": "Only tasks of this task board id.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"taskGroupId": {
"description": "Only tasks of this task group id.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"status": {
"description": "Task status.",
"type": "string",
"enum": [
"incomplete",
"completed",
"overdue"
]
},
"filters": {
"description": "Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}.",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z_][A-Za-z0-9_.]{0,63}$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"query": {
"description": "A MongoDB-style query as a JSON object string, e.g. {\"name.first\":{\"$regex\":\"^Tay\",\"$options\":\"i\"}} or {\"dueDate\":{\"$lt\":\"2026-12-01\"}}. Supports $regex, $in, $gte and the rest.",
"type": "string",
"maxLength": 4000
},
"sort": {
"description": "Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt).",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9.]*_(asc|desc)$"
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"skip": {
"description": "Records to step over, for paging. Pass the previous reply's next_skip.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢plutio_list_statuses(id, filters, query, sort, limit, ...)
Custom statuses (for projects and similar records): title, type, entityType. Returns { count, next_skip, items }; pass next_skip as skip for the next page. Pass id to read one record. Filter with exact-match fields or a MongoDB-style query. GET /statuses.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"description": "Read just this record (its _id).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"filters": {
"description": "Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}.",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z_][A-Za-z0-9_.]{0,63}$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"query": {
"description": "A MongoDB-style query as a JSON object string, e.g. {\"name.first\":{\"$regex\":\"^Tay\",\"$options\":\"i\"}} or {\"dueDate\":{\"$lt\":\"2026-12-01\"}}. Supports $regex, $in, $gte and the rest.",
"type": "string",
"maxLength": 4000
},
"sort": {
"description": "Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt).",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9.]*_(asc|desc)$"
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"skip": {
"description": "Records to step over, for paging. Pass the previous reply's next_skip.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢plutio_list_time_entries(id, projectId, taskId, personId, filters, ...)
Time entries: personId, projectId, taskId, startedAt, stoppedAt, time in seconds, billing amount and rate. Returns { count, next_skip, items }; pass next_skip as skip for the next page. Pass id to read one record. Filter with exact-match fields or a MongoDB-style query. GET /time-tracks.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"description": "Read just this record (its _id).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"projectId": {
"description": "Only entries of this project id.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"taskId": {
"description": "Only entries of this task id.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"personId": {
"description": "Only entries of this person id.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"filters": {
"description": "Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}.",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z_][A-Za-z0-9_.]{0,63}$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"query": {
"description": "A MongoDB-style query as a JSON object string, e.g. {\"name.first\":{\"$regex\":\"^Tay\",\"$options\":\"i\"}} or {\"dueDate\":{\"$lt\":\"2026-12-01\"}}. Supports $regex, $in, $gte and the rest.",
"type": "string",
"maxLength": 4000
},
"sort": {
"description": "Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt).",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9.]*_(asc|desc)$"
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"skip": {
"description": "Records to step over, for paging. Pass the previous reply's next_skip.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢plutio_list_categories(id, filters, query, sort, limit, ...)
Categories used to organize records such as time entries and transactions. Returns { count, next_skip, items }; pass next_skip as skip for the next page. Pass id to read one record. Filter with exact-match fields or a MongoDB-style query. GET /categories.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"description": "Read just this record (its _id).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"filters": {
"description": "Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}.",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z_][A-Za-z0-9_.]{0,63}$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"query": {
"description": "A MongoDB-style query as a JSON object string, e.g. {\"name.first\":{\"$regex\":\"^Tay\",\"$options\":\"i\"}} or {\"dueDate\":{\"$lt\":\"2026-12-01\"}}. Supports $regex, $in, $gte and the rest.",
"type": "string",
"maxLength": 4000
},
"sort": {
"description": "Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt).",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9.]*_(asc|desc)$"
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"skip": {
"description": "Records to step over, for paging. Pass the previous reply's next_skip.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢plutio_list_events(id, filters, query, sort, limit, ...)
Calendar events: title, startDate, endDate, location, participants. Returns { count, next_skip, items }; pass next_skip as skip for the next page. Pass id to read one record. Filter with exact-match fields or a MongoDB-style query. GET /events.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"description": "Read just this record (its _id).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"filters": {
"description": "Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}.",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z_][A-Za-z0-9_.]{0,63}$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"query": {
"description": "A MongoDB-style query as a JSON object string, e.g. {\"name.first\":{\"$regex\":\"^Tay\",\"$options\":\"i\"}} or {\"dueDate\":{\"$lt\":\"2026-12-01\"}}. Supports $regex, $in, $gte and the rest.",
"type": "string",
"maxLength": 4000
},
"sort": {
"description": "Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt).",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9.]*_(asc|desc)$"
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"skip": {
"description": "Records to step over, for paging. Pass the previous reply's next_skip.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢plutio_list_schedulers(id, filters, query, sort, limit, ...)
Scheduling pages (booking links) and their settings. Returns { count, next_skip, items }; pass next_skip as skip for the next page. Pass id to read one record. Filter with exact-match fields or a MongoDB-style query. GET /scheduler.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"description": "Read just this record (its _id).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"filters": {
"description": "Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}.",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z_][A-Za-z0-9_.]{0,63}$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"query": {
"description": "A MongoDB-style query as a JSON object string, e.g. {\"name.first\":{\"$regex\":\"^Tay\",\"$options\":\"i\"}} or {\"dueDate\":{\"$lt\":\"2026-12-01\"}}. Supports $regex, $in, $gte and the rest.",
"type": "string",
"maxLength": 4000
},
"sort": {
"description": "Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt).",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9.]*_(asc|desc)$"
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"skip": {
"description": "Records to step over, for paging. Pass the previous reply's next_skip.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢plutio_list_invoices(id, status, filters, query, sort, ...)
Invoices: name, client, status (draft, pending, paid and so on), amount, amountPaid, currency, dueDate, issueDate. Returns { count, next_skip, items }; pass next_skip as skip for the next page. Pass id to read one record. Filter with exact-match fields or a MongoDB-style query. GET /invoices.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"description": "Read just this record (its _id).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"status": {
"description": "Invoice status, e.g. draft, pending, paid.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"filters": {
"description": "Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}.",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z_][A-Za-z0-9_.]{0,63}$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"query": {
"description": "A MongoDB-style query as a JSON object string, e.g. {\"name.first\":{\"$regex\":\"^Tay\",\"$options\":\"i\"}} or {\"dueDate\":{\"$lt\":\"2026-12-01\"}}. Supports $regex, $in, $gte and the rest.",
"type": "string",
"maxLength": 4000
},
"sort": {
"description": "Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt).",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9.]*_(asc|desc)$"
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"skip": {
"description": "Records to step over, for paging. Pass the previous reply's next_skip.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢plutio_list_invoice_subscriptions(id, filters, query, sort, limit, ...)
Recurring invoice subscriptions: client, schedule, amount. Returns { count, next_skip, items }; pass next_skip as skip for the next page. Pass id to read one record. Filter with exact-match fields or a MongoDB-style query. GET /invoice-subscriptions.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"description": "Read just this record (its _id).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"filters": {
"description": "Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}.",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z_][A-Za-z0-9_.]{0,63}$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"query": {
"description": "A MongoDB-style query as a JSON object string, e.g. {\"name.first\":{\"$regex\":\"^Tay\",\"$options\":\"i\"}} or {\"dueDate\":{\"$lt\":\"2026-12-01\"}}. Supports $regex, $in, $gte and the rest.",
"type": "string",
"maxLength": 4000
},
"sort": {
"description": "Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt).",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9.]*_(asc|desc)$"
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"skip": {
"description": "Records to step over, for paging. Pass the previous reply's next_skip.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢plutio_list_transactions(id, filters, query, sort, limit, ...)
Payments and expenses: amount, currency, client, invoiceId, status, type, issueDate. Returns { count, next_skip, items }; pass next_skip as skip for the next page. Pass id to read one record. Filter with exact-match fields or a MongoDB-style query. GET /transactions.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"description": "Read just this record (its _id).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"filters": {
"description": "Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}.",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z_][A-Za-z0-9_.]{0,63}$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"query": {
"description": "A MongoDB-style query as a JSON object string, e.g. {\"name.first\":{\"$regex\":\"^Tay\",\"$options\":\"i\"}} or {\"dueDate\":{\"$lt\":\"2026-12-01\"}}. Supports $regex, $in, $gte and the rest.",
"type": "string",
"maxLength": 4000
},
"sort": {
"description": "Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt).",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9.]*_(asc|desc)$"
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"skip": {
"description": "Records to step over, for paging. Pass the previous reply's next_skip.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢plutio_list_proposals(id, filters, query, sort, limit, ...)
Proposals: name, client, status, amount. The text is in blocks: see plutio_get_document_blocks. Returns { count, next_skip, items }; pass next_skip as skip for the next page. Pass id to read one record. Filter with exact-match fields or a MongoDB-style query. GET /proposals.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"description": "Read just this record (its _id).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"filters": {
"description": "Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}.",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z_][A-Za-z0-9_.]{0,63}$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"query": {
"description": "A MongoDB-style query as a JSON object string, e.g. {\"name.first\":{\"$regex\":\"^Tay\",\"$options\":\"i\"}} or {\"dueDate\":{\"$lt\":\"2026-12-01\"}}. Supports $regex, $in, $gte and the rest.",
"type": "string",
"maxLength": 4000
},
"sort": {
"description": "Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt).",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9.]*_(asc|desc)$"
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"skip": {
"description": "Records to step over, for paging. Pass the previous reply's next_skip.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢plutio_list_contracts(id, filters, query, sort, limit, ...)
Contracts: name, client, status, signatures. The text is in blocks: see plutio_get_document_blocks. Returns { count, next_skip, items }; pass next_skip as skip for the next page. Pass id to read one record. Filter with exact-match fields or a MongoDB-style query. GET /contracts.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"description": "Read just this record (its _id).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"filters": {
"description": "Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}.",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z_][A-Za-z0-9_.]{0,63}$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"query": {
"description": "A MongoDB-style query as a JSON object string, e.g. {\"name.first\":{\"$regex\":\"^Tay\",\"$options\":\"i\"}} or {\"dueDate\":{\"$lt\":\"2026-12-01\"}}. Supports $regex, $in, $gte and the rest.",
"type": "string",
"maxLength": 4000
},
"sort": {
"description": "Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt).",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9.]*_(asc|desc)$"
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"skip": {
"description": "Records to step over, for paging. Pass the previous reply's next_skip.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢plutio_list_forms(id, filters, query, sort, limit, ...)
Forms (intake forms, questionnaires): name and status. Returns { count, next_skip, items }; pass next_skip as skip for the next page. Pass id to read one record. Filter with exact-match fields or a MongoDB-style query. GET /forms.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"description": "Read just this record (its _id).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"filters": {
"description": "Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}.",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z_][A-Za-z0-9_.]{0,63}$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"query": {
"description": "A MongoDB-style query as a JSON object string, e.g. {\"name.first\":{\"$regex\":\"^Tay\",\"$options\":\"i\"}} or {\"dueDate\":{\"$lt\":\"2026-12-01\"}}. Supports $regex, $in, $gte and the rest.",
"type": "string",
"maxLength": 4000
},
"sort": {
"description": "Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt).",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9.]*_(asc|desc)$"
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"skip": {
"description": "Records to step over, for paging. Pass the previous reply's next_skip.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢plutio_list_form_responses(id, formId, filters, query, sort, ...)
Submitted responses to forms. Returns { count, next_skip, items }; pass next_skip as skip for the next page. Pass id to read one record. Filter with exact-match fields or a MongoDB-style query. GET /form-responses.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"description": "Read just this record (its _id).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"formId": {
"description": "Only responses to this form id.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"filters": {
"description": "Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}.",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z_][A-Za-z0-9_.]{0,63}$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"query": {
"description": "A MongoDB-style query as a JSON object string, e.g. {\"name.first\":{\"$regex\":\"^Tay\",\"$options\":\"i\"}} or {\"dueDate\":{\"$lt\":\"2026-12-01\"}}. Supports $regex, $in, $gte and the rest.",
"type": "string",
"maxLength": 4000
},
"sort": {
"description": "Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt).",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9.]*_(asc|desc)$"
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"skip": {
"description": "Records to step over, for paging. Pass the previous reply's next_skip.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢plutio_list_notes(id, filters, query, sort, limit, ...)
Notes: title, descriptionHTML, entityType and entityId of the record they belong to. Returns { count, next_skip, items }; pass next_skip as skip for the next page. Pass id to read one record. Filter with exact-match fields or a MongoDB-style query. GET /notes.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"description": "Read just this record (its _id).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"filters": {
"description": "Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}.",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z_][A-Za-z0-9_.]{0,63}$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"query": {
"description": "A MongoDB-style query as a JSON object string, e.g. {\"name.first\":{\"$regex\":\"^Tay\",\"$options\":\"i\"}} or {\"dueDate\":{\"$lt\":\"2026-12-01\"}}. Supports $regex, $in, $gte and the rest.",
"type": "string",
"maxLength": 4000
},
"sort": {
"description": "Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt).",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9.]*_(asc|desc)$"
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"skip": {
"description": "Records to step over, for paging. Pass the previous reply's next_skip.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢plutio_list_comments(id, entityType, entityId, filters, query, ...)
Comments on tasks, files and conversations: bodyHTML, createdBy, entityType, entityId. Returns { count, next_skip, items }; pass next_skip as skip for the next page. Pass id to read one record. Filter with exact-match fields or a MongoDB-style query. GET /comments.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"description": "Read just this record (its _id).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"entityType": {
"description": "Kind of record the comments belong to.",
"type": "string",
"enum": [
"task",
"file",
"conversation"
]
},
"entityId": {
"description": "Only comments on this record id.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"filters": {
"description": "Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}.",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z_][A-Za-z0-9_.]{0,63}$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"query": {
"description": "A MongoDB-style query as a JSON object string, e.g. {\"name.first\":{\"$regex\":\"^Tay\",\"$options\":\"i\"}} or {\"dueDate\":{\"$lt\":\"2026-12-01\"}}. Supports $regex, $in, $gte and the rest.",
"type": "string",
"maxLength": 4000
},
"sort": {
"description": "Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt).",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9.]*_(asc|desc)$"
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"skip": {
"description": "Records to step over, for paging. Pass the previous reply's next_skip.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢plutio_list_conversations(id, filters, query, sort, limit, ...)
Inbox conversations: subject, participants, last message. Returns { count, next_skip, items }; pass next_skip as skip for the next page. Pass id to read one record. Filter with exact-match fields or a MongoDB-style query. GET /conversations.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"description": "Read just this record (its _id).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"filters": {
"description": "Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}.",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z_][A-Za-z0-9_.]{0,63}$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"query": {
"description": "A MongoDB-style query as a JSON object string, e.g. {\"name.first\":{\"$regex\":\"^Tay\",\"$options\":\"i\"}} or {\"dueDate\":{\"$lt\":\"2026-12-01\"}}. Supports $regex, $in, $gte and the rest.",
"type": "string",
"maxLength": 4000
},
"sort": {
"description": "Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt).",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9.]*_(asc|desc)$"
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"skip": {
"description": "Records to step over, for paging. Pass the previous reply's next_skip.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢plutio_list_wiki_pages(id, filters, query, sort, limit, ...)
Pages of the Plutio wiki / knowledge base. Returns { count, next_skip, items }; pass next_skip as skip for the next page. Pass id to read one record. Filter with exact-match fields or a MongoDB-style query. GET /wiki-entities.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"description": "Read just this record (its _id).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"filters": {
"description": "Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}.",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z_][A-Za-z0-9_.]{0,63}$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"query": {
"description": "A MongoDB-style query as a JSON object string, e.g. {\"name.first\":{\"$regex\":\"^Tay\",\"$options\":\"i\"}} or {\"dueDate\":{\"$lt\":\"2026-12-01\"}}. Supports $regex, $in, $gte and the rest.",
"type": "string",
"maxLength": 4000
},
"sort": {
"description": "Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt).",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9.]*_(asc|desc)$"
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"skip": {
"description": "Records to step over, for paging. Pass the previous reply's next_skip.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢plutio_list_files(id, filters, query, sort, limit, ...)
File records (name, size, folder, sharing). File contents are not downloaded. Returns { count, next_skip, items }; pass next_skip as skip for the next page. Pass id to read one record. Filter with exact-match fields or a MongoDB-style query. GET /files.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"description": "Read just this record (its _id).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"filters": {
"description": "Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}.",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z_][A-Za-z0-9_.]{0,63}$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"query": {
"description": "A MongoDB-style query as a JSON object string, e.g. {\"name.first\":{\"$regex\":\"^Tay\",\"$options\":\"i\"}} or {\"dueDate\":{\"$lt\":\"2026-12-01\"}}. Supports $regex, $in, $gte and the rest.",
"type": "string",
"maxLength": 4000
},
"sort": {
"description": "Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt).",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9.]*_(asc|desc)$"
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"skip": {
"description": "Records to step over, for paging. Pass the previous reply's next_skip.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢plutio_list_folders(id, filters, query, sort, limit, ...)
File folders. Returns { count, next_skip, items }; pass next_skip as skip for the next page. Pass id to read one record. Filter with exact-match fields or a MongoDB-style query. GET /file-folders.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"description": "Read just this record (its _id).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"filters": {
"description": "Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}.",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z_][A-Za-z0-9_.]{0,63}$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"query": {
"description": "A MongoDB-style query as a JSON object string, e.g. {\"name.first\":{\"$regex\":\"^Tay\",\"$options\":\"i\"}} or {\"dueDate\":{\"$lt\":\"2026-12-01\"}}. Supports $regex, $in, $gte and the rest.",
"type": "string",
"maxLength": 4000
},
"sort": {
"description": "Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt).",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9.]*_(asc|desc)$"
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"skip": {
"description": "Records to step over, for paging. Pass the previous reply's next_skip.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢plutio_list_custom_fields(id, filters, query, sort, limit, ...)
Custom field definitions (label, type, which records they apply to). Returns { count, next_skip, items }; pass next_skip as skip for the next page. Pass id to read one record. Filter with exact-match fields or a MongoDB-style query. GET /custom-fields.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"description": "Read just this record (its _id).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"filters": {
"description": "Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}.",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z_][A-Za-z0-9_.]{0,63}$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"query": {
"description": "A MongoDB-style query as a JSON object string, e.g. {\"name.first\":{\"$regex\":\"^Tay\",\"$options\":\"i\"}} or {\"dueDate\":{\"$lt\":\"2026-12-01\"}}. Supports $regex, $in, $gte and the rest.",
"type": "string",
"maxLength": 4000
},
"sort": {
"description": "Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt).",
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9.]*_(asc|desc)$"
},
"limit": {
"description": "Records per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"skip": {
"description": "Records to step over, for paging. Pass the previous reply's next_skip.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢plutio_get_document_blocks(entityType, entityId)
The content blocks of a contract, proposal or invoice: the written text (textHTML) and, for invoices, the line items. A document record only holds block ids. GET /blocks (entityType and entityId are both required).
Eingabe-Schema
{
"type": "object",
"properties": {
"entityType": {
"type": "string",
"enum": [
"contract",
"proposal",
"invoice"
],
"description": "What kind of document."
},
"entityId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "The _id of the contract, proposal or invoice."
}
},
"required": [
"entityType",
"entityId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡plutio_create_person(firstName, lastName, email, role)
WRITE: add a person (a client by default) to the workspace. Returns the new record with its _id. POST /people.
Eingabe-Schema
{
"type": "object",
"properties": {
"firstName": {
"type": "string",
"minLength": 1,
"maxLength": 30,
"description": "First name."
},
"lastName": {
"description": "Last name.",
"type": "string",
"maxLength": 30
},
"email": {
"description": "Email address.",
"type": "string",
"maxLength": 254,
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"role": {
"default": "client",
"description": "Role: client (default) or one of your team roles.",
"type": "string",
"minLength": 1,
"maxLength": 50
}
},
"required": [
"firstName"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡plutio_create_company(title, industry, personIds)
WRITE: add a company, optionally linking existing people to it. Returns the new record. POST /companies.
Eingabe-Schema
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"description": "The company name."
},
"industry": {
"description": "Industry as Plutio's lowercase slug, e.g. design (a wrong value is rejected by Plutio).",
"type": "string",
"pattern": "^[a-z0-9][a-z0-9 _-]{0,99}$"
},
"personIds": {
"description": "_ids of existing people who work there.",
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "Plutio record id (_id)."
}
}
},
"required": [
"title"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡plutio_create_project(name, clientId, clientType, descriptionHTML, startDate, ...)
WRITE: create a project. Plutio gives it a default status and a first task board (find it with plutio_list_task_boards). Returns the new record. POST /projects.
Eingabe-Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"description": "Project name."
},
"clientId": {
"description": "_id of the client (a person or company) the project belongs to.",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"clientType": {
"default": "person",
"description": "Whether clientId is a person (default) or a company.",
"type": "string",
"enum": [
"person",
"company"
]
},
"descriptionHTML": {
"description": "Description as HTML.",
"type": "string",
"maxLength": 20000
},
"startDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,9})?)?(?:Z|[+-]\\d{2}:?\\d{2})?)?$",
"description": "An ISO 8601 date or date-time, e.g. 2026-12-31 or 2026-12-31T17:00:00Z."
},
"dueDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,9})?)?(?:Z|[+-]\\d{2}:?\\d{2})?)?$",
"description": "An ISO 8601 date or date-time, e.g. 2026-12-31 or 2026-12-31T17:00:00Z."
}
},
"required": [
"name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡plutio_create_task(title, projectId, taskBoardId, taskGroupId, descriptionHTML, ...)
WRITE: add a task to a project's task board. Get taskBoardId from plutio_list_task_boards (projectId filter). New tasks start as incomplete. Returns the new record. POST /tasks.
Eingabe-Schema
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 500,
"description": "What the task is called."
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "The project the task belongs to."
},
"taskBoardId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "The task board inside that project."
},
"taskGroupId": {
"description": "Optional task group (column) on the board.",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"descriptionHTML": {
"description": "Description as HTML.",
"type": "string",
"maxLength": 20000
},
"dueDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,9})?)?(?:Z|[+-]\\d{2}:?\\d{2})?)?$",
"description": "An ISO 8601 date or date-time, e.g. 2026-12-31 or 2026-12-31T17:00:00Z."
}
},
"required": [
"title",
"projectId",
"taskBoardId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴plutio_update_task(id, title, status, dueDate, descriptionHTML)
WRITE: change a task's title, status (incomplete, completed, overdue), due date or description. Only the fields you pass change. Returns the updated record. PUT /tasks.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "The task _id."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 500
},
"status": {
"type": "string",
"enum": [
"incomplete",
"completed",
"overdue"
]
},
"dueDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,9})?)?(?:Z|[+-]\\d{2}:?\\d{2})?)?$",
"description": "An ISO 8601 date or date-time, e.g. 2026-12-31 or 2026-12-31T17:00:00Z."
},
"descriptionHTML": {
"description": "New description as HTML.",
"type": "string",
"maxLength": 20000
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡plutio_log_time(taskId, projectId, personId, startedAt, stoppedAt, ...)
WRITE: record a time entry against a task. projectId must be the task's own project (read the task first). time is the length in seconds (5400 = 1.5 hours). POST /time-tracks.
Eingabe-Schema
{
"type": "object",
"properties": {
"taskId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "The task the time was spent on."
},
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "The task's own project."
},
"personId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "Who did the work (a person _id)."
},
"startedAt": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,9})?)?(?:Z|[+-]\\d{2}:?\\d{2})?)?$",
"description": "When the work started (ISO date-time)."
},
"stoppedAt": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,9})?)?(?:Z|[+-]\\d{2}:?\\d{2})?)?$",
"description": "When it stopped (ISO date-time)."
},
"time": {
"type": "integer",
"minimum": 1,
"maximum": 604800,
"description": "Length in seconds."
}
},
"required": [
"taskId",
"projectId",
"personId",
"startedAt",
"stoppedAt",
"time"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡plutio_create_comment(entityType, entityId, bodyHTML)
WRITE: post a comment on a task, file or conversation. Visible to everyone who can see that record. Returns the new record. POST /comments.
Eingabe-Schema
{
"type": "object",
"properties": {
"entityType": {
"type": "string",
"enum": [
"task",
"file",
"conversation"
],
"description": "Kind of record to comment on."
},
"entityId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "The _id of that record."
},
"bodyHTML": {
"type": "string",
"minLength": 1,
"maxLength": 20000,
"description": "The comment text as HTML."
}
},
"required": [
"entityType",
"entityId",
"bodyHTML"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡plutio_create_event(title, startDate, endDate, isAllDay, descriptionHTML)
WRITE: add a calendar event. No invitations are sent. Returns the new record. POST /events.
Eingabe-Schema
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 2,
"maxLength": 500,
"description": "Event title."
},
"startDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,9})?)?(?:Z|[+-]\\d{2}:?\\d{2})?)?$",
"description": "Start (ISO date-time)."
},
"endDate": {
"description": "End (ISO date-time).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,9})?)?(?:Z|[+-]\\d{2}:?\\d{2})?)?$"
},
"isAllDay": {
"type": "boolean"
},
"descriptionHTML": {
"type": "string",
"maxLength": 20000
}
},
"required": [
"title",
"startDate"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡plutio_create_invoice(name, clientId, clientType, currency, dueDate)
WRITE: create a DRAFT invoice for a person or company. The client cannot pay it and nothing is emailed. Add line items with plutio_add_invoice_items. Returns the new record. POST /invoices.
Eingabe-Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"description": "A name for the invoice."
},
"clientId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "_id of the person or company to bill."
},
"clientType": {
"type": "string",
"enum": [
"person",
"company"
],
"description": "Whether clientId is a person or a company."
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Currency code, e.g. USD."
},
"dueDate": {
"description": "Defaults to the due date in your invoice settings.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,9})?)?(?:Z|[+-]\\d{2}:?\\d{2})?)?$"
}
},
"required": [
"name",
"clientId",
"clientType",
"currency"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡plutio_add_invoice_items(invoiceId, items)
WRITE: put line items on an invoice that has none yet (an invoice made with plutio_create_invoice). Refuses an invoice that already has an items block. Plutio works out line totals, subtotal and total. POST /blocks.
Eingabe-Schema
{
"type": "object",
"properties": {
"invoiceId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "The invoice _id."
},
"items": {
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 500,
"description": "Line item name."
},
"quantity": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1000000,
"description": "Quantity."
},
"amount": {
"type": "number",
"minimum": 0,
"maximum": 1000000000,
"description": "Price of ONE unit."
}
},
"required": [
"title",
"quantity",
"amount"
]
},
"description": "The invoice lines."
}
},
"required": [
"invoiceId",
"items"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Nachweis