Plutio MCP by usefulapi

Manage Plutio clients, projects, tasks, time entries and invoices.

使うべきか

品質と安全性

A
説明の品質
100%
スキーマの完全性
91%
命名の品質
79%
ポイズニングのリスク
100%
権限の一致
100%
プロトコルへの準拠
100%

検出事項(1)

  • LOWTool 'plutio_list_invoice_subscriptions' name length outside 3-30 rangeplutio_list_invoice_subscriptions 内

ツール定義とプロトコルへの準拠に関する自動分析に基づいています。

コンテキストコスト

~14,683トークン数(ツール定義)
~3.1 KB一般的なレスポンスサイズ
注意への影響は大きい(128k コンテキストの 11.47%)

これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。

インストール

ワンクリックインストール

これを `claude_desktop_config.json` ファイルに追加してください:

{
  "mcpServers": {
    "plutio": {
      "url": "https://plutio.usefulapi.io/mcp"
    }
  }
}

リモートエンドポイント

https://plutio.usefulapi.io/mcpstreamable-http

できること

ツール一覧

ツール(37)

🟢 読み取り専用🟡 書き込み🔴 削除⚪ 不明
🟢plutio_get_workspace

The Plutio workspace this API client is connected to: name, domain, currency, locale, timezone and settings. GET /businesses.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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).

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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.

入力スキーマ

{
  "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"
}

コミュニティ

このサーバーを評価する

エビデンス

最近の観測

検証済みバージョンは記録されていませんツール 37 件