{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-06T02:44:49.668Z","url":"https://verifymcp.io/servers/io-usefulapi-plutio/plutio","markdownUrl":"https://verifymcp.io/servers/io-usefulapi-plutio/plutio.md","server":{"slug":"io-usefulapi-plutio","name":"Plutio MCP by usefulapi","registryName":"io.usefulapi/plutio","description":"Manage Plutio clients, projects, tasks, time entries and invoices.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"plutio","type":"remote","identifier":"https://plutio.usefulapi.io/mcp","withdrawn":false,"url":"https://verifymcp.io/servers/io-usefulapi-plutio/plutio","version":"1.10.3","transport":null,"scoredAt":"2026-11-06T00:03:51.238Z"},"score":{"total":18,"tier":"low","status":"scored","weekDelta":-44,"history":[{"date":"2026-11-06","total":18},{"date":"2026-11-05","total":18},{"date":"2026-11-04","total":18},{"date":"2026-11-03","total":18},{"date":"2026-11-02","total":18},{"date":"2026-11-01","total":66},{"date":"2026-10-31","total":65},{"date":"2026-10-30","total":62},{"date":"2026-10-29","total":62},{"date":"2026-10-28","total":61}]},"categories":[{"name":"Endpoint Security","score":46,"verdict":"fail","reasons":["The endpoint's TLS certificate is valid, in date, and uses a strong key.","Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.","HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.","HSTS check failed: the Strict-Transport-Security header is absent.","DNSSEC check failed: this domain isn't protected by DNSSEC."],"codes":[{"code":"tls.valid","args":{}},{"code":"auth.unreachable","args":{}},{"code":"https.inconclusive","args":{"reason":"redirect_not_https"}},{"code":"headers.hsts_absent","args":{}},{"code":"dnssec.absent","args":{}}]},{"name":"Transport & Reachability","score":0,"verdict":"fail","reasons":["Transport check failed: declared streamable-http, but the endpoint redirected instead of responding directly."],"codes":[{"code":"transport.redirected","args":{"transport":"streamable-http"}}]},{"name":"Schema Quality & AI Usability","score":0,"verdict":"unverified","reasons":["Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list."],"codes":[{"code":"schema.unreachable","args":{}}]},{"name":"Stability & Change Management","score":0,"verdict":"unverified","reasons":["Stability not yet verified: not enough scan history yet (needs a 30-day window)."],"codes":[{"code":"stability.insufficient_history","args":{}}]},{"name":"Tool Coverage","score":0,"verdict":"unverified","reasons":["Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list."],"codes":[{"code":"toolquality.unreachable","args":{}}]},{"name":"Tool Safety","score":0,"verdict":"unverified","reasons":["Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list."],"codes":[{"code":"toolsafety.unreachable","args":{}}]},{"name":"Capabilities","score":0,"verdict":"unverified","reasons":["Capabilities not yet verified: we couldn't read the endpoint's capabilities."],"codes":[{"code":"cap.unreachable","args":{}}]}],"inconclusive":["Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.","HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.","Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.","Stability not yet verified: not enough scan history yet (needs a 30-day window).","Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.","Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.","Capabilities not yet verified: we couldn't read the endpoint's capabilities."],"malware":[],"components":[{"slug":"plutio","type":"remote","identifier":"https://plutio.usefulapi.io/mcp","withdrawn":false,"score":18,"current":true,"url":"https://verifymcp.io/servers/io-usefulapi-plutio/plutio","markdownUrl":"https://verifymcp.io/servers/io-usefulapi-plutio/plutio.md"}],"facts":[{"label":"Endpoint","value":"https://plutio.usefulapi.io/mcp"},{"label":"Transports","value":"streamable-http"},{"label":"Auth","value":"none"},{"label":"Version","value":"1.10.3"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"plutio_get_workspace","title":"Get workspace","description":"The Plutio workspace this API client is connected to: name, domain, currency, locale, timezone and settings. GET /businesses.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":39},{"name":"plutio_list_people","title":"List people","description":"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.","inputs":[{"name":"filters","type":"object","required":false,"description":"Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}."},{"name":"id","type":"string","required":false,"description":"Read just this record (its _id)."},{"name":"limit","type":"integer","required":false,"description":"Records per page, 1-100 (default 25)."},{"name":"query","type":"string","required":false,"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."},{"name":"role","type":"string","required":false,"description":"Role, e.g. client."},{"name":"skip","type":"integer","required":false,"description":"Records to step over, for paging. Pass the previous reply's next_skip."},{"name":"sort","type":"string","required":false,"description":"Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":275},{"name":"plutio_list_companies","title":"List companies","description":"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.","inputs":[{"name":"filters","type":"object","required":false,"description":"Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}."},{"name":"id","type":"string","required":false,"description":"Read just this record (its _id)."},{"name":"limit","type":"integer","required":false,"description":"Records per page, 1-100 (default 25)."},{"name":"query","type":"string","required":false,"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."},{"name":"skip","type":"integer","required":false,"description":"Records to step over, for paging. Pass the previous reply's next_skip."},{"name":"sort","type":"string","required":false,"description":"Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":258},{"name":"plutio_list_projects","title":"List projects","description":"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.","inputs":[{"name":"filters","type":"object","required":false,"description":"Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}."},{"name":"id","type":"string","required":false,"description":"Read just this record (its _id)."},{"name":"limit","type":"integer","required":false,"description":"Records per page, 1-100 (default 25)."},{"name":"query","type":"string","required":false,"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."},{"name":"skip","type":"integer","required":false,"description":"Records to step over, for paging. Pass the previous reply's next_skip."},{"name":"sort","type":"string","required":false,"description":"Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt)."},{"name":"statusId","type":"string","required":false,"description":"Only projects with this status _id (see plutio_list_statuses)."},{"name":"statusTitle","type":"string","required":false,"description":"Only projects whose status has this title, e.g. In progress."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":299},{"name":"plutio_list_task_boards","title":"List task boards","description":"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.","inputs":[{"name":"filters","type":"object","required":false,"description":"Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}."},{"name":"id","type":"string","required":false,"description":"Read just this record (its _id)."},{"name":"limit","type":"integer","required":false,"description":"Records per page, 1-100 (default 25)."},{"name":"projectId","type":"string","required":false,"description":"Only boards of this project id."},{"name":"query","type":"string","required":false,"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."},{"name":"skip","type":"integer","required":false,"description":"Records to step over, for paging. Pass the previous reply's next_skip."},{"name":"sort","type":"string","required":false,"description":"Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":275},{"name":"plutio_list_task_groups","title":"List task groups","description":"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.","inputs":[{"name":"filters","type":"object","required":false,"description":"Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}."},{"name":"id","type":"string","required":false,"description":"Read just this record (its _id)."},{"name":"limit","type":"integer","required":false,"description":"Records per page, 1-100 (default 25)."},{"name":"query","type":"string","required":false,"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."},{"name":"skip","type":"integer","required":false,"description":"Records to step over, for paging. Pass the previous reply's next_skip."},{"name":"sort","type":"string","required":false,"description":"Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt)."},{"name":"taskBoardId","type":"string","required":false,"description":"Only groups of this task board id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":271},{"name":"plutio_list_tasks","title":"List tasks","description":"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.","inputs":[{"name":"filters","type":"object","required":false,"description":"Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}."},{"name":"id","type":"string","required":false,"description":"Read just this record (its _id)."},{"name":"limit","type":"integer","required":false,"description":"Records per page, 1-100 (default 25)."},{"name":"projectId","type":"string","required":false,"description":"Only tasks of this project id."},{"name":"query","type":"string","required":false,"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."},{"name":"skip","type":"integer","required":false,"description":"Records to step over, for paging. Pass the previous reply's next_skip."},{"name":"sort","type":"string","required":false,"description":"Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt)."},{"name":"status","type":"string","required":false,"description":"Task status."},{"name":"taskBoardId","type":"string","required":false,"description":"Only tasks of this task board id."},{"name":"taskGroupId","type":"string","required":false,"description":"Only tasks of this task group id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":322},{"name":"plutio_list_statuses","title":"List statuses","description":"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.","inputs":[{"name":"filters","type":"object","required":false,"description":"Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}."},{"name":"id","type":"string","required":false,"description":"Read just this record (its _id)."},{"name":"limit","type":"integer","required":false,"description":"Records per page, 1-100 (default 25)."},{"name":"query","type":"string","required":false,"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."},{"name":"skip","type":"integer","required":false,"description":"Records to step over, for paging. Pass the previous reply's next_skip."},{"name":"sort","type":"string","required":false,"description":"Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":258},{"name":"plutio_list_time_entries","title":"List time entries","description":"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.","inputs":[{"name":"filters","type":"object","required":false,"description":"Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}."},{"name":"id","type":"string","required":false,"description":"Read just this record (its _id)."},{"name":"limit","type":"integer","required":false,"description":"Records per page, 1-100 (default 25)."},{"name":"personId","type":"string","required":false,"description":"Only entries of this person id."},{"name":"projectId","type":"string","required":false,"description":"Only entries of this project id."},{"name":"query","type":"string","required":false,"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."},{"name":"skip","type":"integer","required":false,"description":"Records to step over, for paging. Pass the previous reply's next_skip."},{"name":"sort","type":"string","required":false,"description":"Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt)."},{"name":"taskId","type":"string","required":false,"description":"Only entries of this task id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":313},{"name":"plutio_list_categories","title":"List categories","description":"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.","inputs":[{"name":"filters","type":"object","required":false,"description":"Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}."},{"name":"id","type":"string","required":false,"description":"Read just this record (its _id)."},{"name":"limit","type":"integer","required":false,"description":"Records per page, 1-100 (default 25)."},{"name":"query","type":"string","required":false,"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."},{"name":"skip","type":"integer","required":false,"description":"Records to step over, for paging. Pass the previous reply's next_skip."},{"name":"sort","type":"string","required":false,"description":"Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":253},{"name":"plutio_list_events","title":"List events","description":"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.","inputs":[{"name":"filters","type":"object","required":false,"description":"Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}."},{"name":"id","type":"string","required":false,"description":"Read just this record (its _id)."},{"name":"limit","type":"integer","required":false,"description":"Records per page, 1-100 (default 25)."},{"name":"query","type":"string","required":false,"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."},{"name":"skip","type":"integer","required":false,"description":"Records to step over, for paging. Pass the previous reply's next_skip."},{"name":"sort","type":"string","required":false,"description":"Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":256},{"name":"plutio_list_schedulers","title":"List schedulers","description":"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.","inputs":[{"name":"filters","type":"object","required":false,"description":"Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}."},{"name":"id","type":"string","required":false,"description":"Read just this record (its _id)."},{"name":"limit","type":"integer","required":false,"description":"Records per page, 1-100 (default 25)."},{"name":"query","type":"string","required":false,"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."},{"name":"skip","type":"integer","required":false,"description":"Records to step over, for paging. Pass the previous reply's next_skip."},{"name":"sort","type":"string","required":false,"description":"Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":252},{"name":"plutio_list_invoices","title":"List invoices","description":"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.","inputs":[{"name":"filters","type":"object","required":false,"description":"Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}."},{"name":"id","type":"string","required":false,"description":"Read just this record (its _id)."},{"name":"limit","type":"integer","required":false,"description":"Records per page, 1-100 (default 25)."},{"name":"query","type":"string","required":false,"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."},{"name":"skip","type":"integer","required":false,"description":"Records to step over, for paging. Pass the previous reply's next_skip."},{"name":"sort","type":"string","required":false,"description":"Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt)."},{"name":"status","type":"string","required":false,"description":"Invoice status, e.g. draft, pending, paid."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":292},{"name":"plutio_list_invoice_subscriptions","title":"List recurring invoices","description":"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.","inputs":[{"name":"filters","type":"object","required":false,"description":"Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}."},{"name":"id","type":"string","required":false,"description":"Read just this record (its _id)."},{"name":"limit","type":"integer","required":false,"description":"Records per page, 1-100 (default 25)."},{"name":"query","type":"string","required":false,"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."},{"name":"skip","type":"integer","required":false,"description":"Records to step over, for paging. Pass the previous reply's next_skip."},{"name":"sort","type":"string","required":false,"description":"Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":256},{"name":"plutio_list_transactions","title":"List transactions","description":"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.","inputs":[{"name":"filters","type":"object","required":false,"description":"Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}."},{"name":"id","type":"string","required":false,"description":"Read just this record (its _id)."},{"name":"limit","type":"integer","required":false,"description":"Records per page, 1-100 (default 25)."},{"name":"query","type":"string","required":false,"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."},{"name":"skip","type":"integer","required":false,"description":"Records to step over, for paging. Pass the previous reply's next_skip."},{"name":"sort","type":"string","required":false,"description":"Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":261},{"name":"plutio_list_proposals","title":"List proposals","description":"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.","inputs":[{"name":"filters","type":"object","required":false,"description":"Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}."},{"name":"id","type":"string","required":false,"description":"Read just this record (its _id)."},{"name":"limit","type":"integer","required":false,"description":"Records per page, 1-100 (default 25)."},{"name":"query","type":"string","required":false,"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."},{"name":"skip","type":"integer","required":false,"description":"Records to step over, for paging. Pass the previous reply's next_skip."},{"name":"sort","type":"string","required":false,"description":"Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":267},{"name":"plutio_list_contracts","title":"List contracts","description":"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.","inputs":[{"name":"filters","type":"object","required":false,"description":"Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}."},{"name":"id","type":"string","required":false,"description":"Read just this record (its _id)."},{"name":"limit","type":"integer","required":false,"description":"Records per page, 1-100 (default 25)."},{"name":"query","type":"string","required":false,"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."},{"name":"skip","type":"integer","required":false,"description":"Records to step over, for paging. Pass the previous reply's next_skip."},{"name":"sort","type":"string","required":false,"description":"Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":265},{"name":"plutio_list_forms","title":"List forms","description":"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.","inputs":[{"name":"filters","type":"object","required":false,"description":"Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}."},{"name":"id","type":"string","required":false,"description":"Read just this record (its _id)."},{"name":"limit","type":"integer","required":false,"description":"Records per page, 1-100 (default 25)."},{"name":"query","type":"string","required":false,"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."},{"name":"skip","type":"integer","required":false,"description":"Records to step over, for paging. Pass the previous reply's next_skip."},{"name":"sort","type":"string","required":false,"description":"Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":253},{"name":"plutio_list_form_responses","title":"List form responses","description":"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.","inputs":[{"name":"filters","type":"object","required":false,"description":"Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}."},{"name":"formId","type":"string","required":false,"description":"Only responses to this form id."},{"name":"id","type":"string","required":false,"description":"Read just this record (its _id)."},{"name":"limit","type":"integer","required":false,"description":"Records per page, 1-100 (default 25)."},{"name":"query","type":"string","required":false,"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."},{"name":"skip","type":"integer","required":false,"description":"Records to step over, for paging. Pass the previous reply's next_skip."},{"name":"sort","type":"string","required":false,"description":"Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":264},{"name":"plutio_list_notes","title":"List notes","description":"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.","inputs":[{"name":"filters","type":"object","required":false,"description":"Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}."},{"name":"id","type":"string","required":false,"description":"Read just this record (its _id)."},{"name":"limit","type":"integer","required":false,"description":"Records per page, 1-100 (default 25)."},{"name":"query","type":"string","required":false,"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."},{"name":"skip","type":"integer","required":false,"description":"Records to step over, for paging. Pass the previous reply's next_skip."},{"name":"sort","type":"string","required":false,"description":"Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":260},{"name":"plutio_list_comments","title":"List comments","description":"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.","inputs":[{"name":"entityId","type":"string","required":false,"description":"Only comments on this record id."},{"name":"entityType","type":"string","required":false,"description":"Kind of record the comments belong to."},{"name":"filters","type":"object","required":false,"description":"Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}."},{"name":"id","type":"string","required":false,"description":"Read just this record (its _id)."},{"name":"limit","type":"integer","required":false,"description":"Records per page, 1-100 (default 25)."},{"name":"query","type":"string","required":false,"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."},{"name":"skip","type":"integer","required":false,"description":"Records to step over, for paging. Pass the previous reply's next_skip."},{"name":"sort","type":"string","required":false,"description":"Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":290},{"name":"plutio_list_conversations","title":"List conversations","description":"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.","inputs":[{"name":"filters","type":"object","required":false,"description":"Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}."},{"name":"id","type":"string","required":false,"description":"Read just this record (its _id)."},{"name":"limit","type":"integer","required":false,"description":"Records per page, 1-100 (default 25)."},{"name":"query","type":"string","required":false,"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."},{"name":"skip","type":"integer","required":false,"description":"Records to step over, for paging. Pass the previous reply's next_skip."},{"name":"sort","type":"string","required":false,"description":"Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":253},{"name":"plutio_list_wiki_pages","title":"List wiki pages","description":"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.","inputs":[{"name":"filters","type":"object","required":false,"description":"Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}."},{"name":"id","type":"string","required":false,"description":"Read just this record (its _id)."},{"name":"limit","type":"integer","required":false,"description":"Records per page, 1-100 (default 25)."},{"name":"query","type":"string","required":false,"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."},{"name":"skip","type":"integer","required":false,"description":"Records to step over, for paging. Pass the previous reply's next_skip."},{"name":"sort","type":"string","required":false,"description":"Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":256},{"name":"plutio_list_files","title":"List files","description":"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.","inputs":[{"name":"filters","type":"object","required":false,"description":"Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}."},{"name":"id","type":"string","required":false,"description":"Read just this record (its _id)."},{"name":"limit","type":"integer","required":false,"description":"Records per page, 1-100 (default 25)."},{"name":"query","type":"string","required":false,"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."},{"name":"skip","type":"integer","required":false,"description":"Records to step over, for paging. Pass the previous reply's next_skip."},{"name":"sort","type":"string","required":false,"description":"Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":258},{"name":"plutio_list_folders","title":"List folders","description":"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.","inputs":[{"name":"filters","type":"object","required":false,"description":"Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}."},{"name":"id","type":"string","required":false,"description":"Read just this record (its _id)."},{"name":"limit","type":"integer","required":false,"description":"Records per page, 1-100 (default 25)."},{"name":"query","type":"string","required":false,"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."},{"name":"skip","type":"integer","required":false,"description":"Records to step over, for paging. Pass the previous reply's next_skip."},{"name":"sort","type":"string","required":false,"description":"Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":247},{"name":"plutio_list_custom_fields","title":"List custom fields","description":"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.","inputs":[{"name":"filters","type":"object","required":false,"description":"Exact-match filters on any record field, e.g. {\"role\":\"client\"} or {\"projectId\":\"abc123\"}."},{"name":"id","type":"string","required":false,"description":"Read just this record (its _id)."},{"name":"limit","type":"integer","required":false,"description":"Records per page, 1-100 (default 25)."},{"name":"query","type":"string","required":false,"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."},{"name":"skip","type":"integer","required":false,"description":"Records to step over, for paging. Pass the previous reply's next_skip."},{"name":"sort","type":"string","required":false,"description":"Sort as <field>_asc or <field>_desc, e.g. createdAt_desc (most resources sort on createdAt and updatedAt)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":257},{"name":"plutio_get_document_blocks","title":"Get document blocks","description":"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).","inputs":[{"name":"entityId","type":"string","required":true,"description":"The _id of the contract, proposal or invoice."},{"name":"entityType","type":"string","required":true,"description":"What kind of document."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":89},{"name":"plutio_create_person","title":"Create person","description":"WRITE: add a person (a client by default) to the workspace. Returns the new record with its _id. POST /people.","inputs":[{"name":"email","type":"string","required":false,"description":"Email address."},{"name":"firstName","type":"string","required":true,"description":"First name."},{"name":"lastName","type":"string","required":false,"description":"Last name."},{"name":"role","type":"string","required":false,"description":"Role: client (default) or one of your team roles."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":86},{"name":"plutio_create_company","title":"Create company","description":"WRITE: add a company, optionally linking existing people to it. Returns the new record. POST /companies.","inputs":[{"name":"industry","type":"string","required":false,"description":"Industry as Plutio's lowercase slug, e.g. design (a wrong value is rejected by Plutio)."},{"name":"personIds","type":"array","required":false,"description":"_ids of existing people who work there."},{"name":"title","type":"string","required":true,"description":"The company name."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":88},{"name":"plutio_create_project","title":"Create project","description":"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.","inputs":[{"name":"clientId","type":"string","required":false,"description":"_id of the client (a person or company) the project belongs to."},{"name":"clientType","type":"string","required":false,"description":"Whether clientId is a person (default) or a company."},{"name":"descriptionHTML","type":"string","required":false,"description":"Description as HTML."},{"name":"dueDate","type":"string","required":false,"description":"An ISO 8601 date or date-time, e.g. 2026-12-31 or 2026-12-31T17:00:00Z."},{"name":"name","type":"string","required":true,"description":"Project name."},{"name":"startDate","type":"string","required":false,"description":"An ISO 8601 date or date-time, e.g. 2026-12-31 or 2026-12-31T17:00:00Z."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":198},{"name":"plutio_create_task","title":"Create task","description":"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.","inputs":[{"name":"descriptionHTML","type":"string","required":false,"description":"Description as HTML."},{"name":"dueDate","type":"string","required":false,"description":"An ISO 8601 date or date-time, e.g. 2026-12-31 or 2026-12-31T17:00:00Z."},{"name":"projectId","type":"string","required":true,"description":"The project the task belongs to."},{"name":"taskBoardId","type":"string","required":true,"description":"The task board inside that project."},{"name":"taskGroupId","type":"string","required":false,"description":"Optional task group (column) on the board."},{"name":"title","type":"string","required":true,"description":"What the task is called."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":165},{"name":"plutio_update_task","title":"Update task","description":"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.","inputs":[{"name":"descriptionHTML","type":"string","required":false,"description":"New description as HTML."},{"name":"dueDate","type":"string","required":false,"description":"An ISO 8601 date or date-time, e.g. 2026-12-31 or 2026-12-31T17:00:00Z."},{"name":"id","type":"string","required":true,"description":"The task _id."},{"name":"status","type":"string","required":false,"description":null},{"name":"title","type":"string","required":false,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":128},{"name":"plutio_log_time","title":"Log time","description":"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.","inputs":[{"name":"personId","type":"string","required":true,"description":"Who did the work (a person _id)."},{"name":"projectId","type":"string","required":true,"description":"The task's own project."},{"name":"startedAt","type":"string","required":true,"description":"When the work started (ISO date-time)."},{"name":"stoppedAt","type":"string","required":true,"description":"When it stopped (ISO date-time)."},{"name":"taskId","type":"string","required":true,"description":"The task the time was spent on."},{"name":"time","type":"integer","required":true,"description":"Length in seconds."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":143},{"name":"plutio_create_comment","title":"Comment on a task","description":"WRITE: post a comment on a task, file or conversation. Visible to everyone who can see that record. Returns the new record. POST /comments.","inputs":[{"name":"bodyHTML","type":"string","required":true,"description":"The comment text as HTML."},{"name":"entityId","type":"string","required":true,"description":"The _id of that record."},{"name":"entityType","type":"string","required":true,"description":"Kind of record to comment on."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":82},{"name":"plutio_create_event","title":"Create event","description":"WRITE: add a calendar event. No invitations are sent. Returns the new record. POST /events.","inputs":[{"name":"descriptionHTML","type":"string","required":false,"description":null},{"name":"endDate","type":"string","required":false,"description":"End (ISO date-time)."},{"name":"isAllDay","type":"boolean","required":false,"description":null},{"name":"startDate","type":"string","required":true,"description":"Start (ISO date-time)."},{"name":"title","type":"string","required":true,"description":"Event title."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":83},{"name":"plutio_create_invoice","title":"Create draft invoice","description":"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.","inputs":[{"name":"clientId","type":"string","required":true,"description":"_id of the person or company to bill."},{"name":"clientType","type":"string","required":true,"description":"Whether clientId is a person or a company."},{"name":"currency","type":"string","required":true,"description":"Currency code, e.g. USD."},{"name":"dueDate","type":"string","required":false,"description":"Defaults to the due date in your invoice settings."},{"name":"name","type":"string","required":true,"description":"A name for the invoice."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":130},{"name":"plutio_add_invoice_items","title":"Add invoice line items","description":"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.","inputs":[{"name":"invoiceId","type":"string","required":true,"description":"The invoice _id."},{"name":"items","type":"array","required":true,"description":"The invoice lines."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":82}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-06T00:03:51.000Z","track":"remote","endpoint":"https://plutio.usefulapi.io/mcp","declaredUrl":null,"truncated":false,"tls":{"outcome":"valid","label":"Valid","version":"TLS 1.3","cipherSuite":"TLS_AES_128_GCM_SHA256","chainError":null,"certificates":[{"subject":"CN=usefulapi.io","issuer":"CN=WE1,O=Google Trust Services,C=US","notBefore":"2026-09-13T08:55:39Z","notAfter":"2026-12-12T09:54:12Z","keyType":"ECDSA","keyBits":256,"isCa":false},{"subject":"CN=WE1,O=Google Trust Services,C=US","issuer":"CN=GTS Root R4,O=Google Trust Services LLC,C=US","notBefore":"2023-12-13T09:00:00Z","notAfter":"2029-02-20T14:00:00Z","keyType":"ECDSA","keyBits":256,"isCa":true},{"subject":"CN=GTS Root R4,O=Google Trust Services LLC,C=US","issuer":"CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE","notBefore":"2023-11-15T03:43:21Z","notAfter":"2028-01-28T00:00:42Z","keyType":"ECDSA","keyBits":384,"isCa":true}]},"dnssec":{"result":"insecure","label":"Not signed","name":"plutio.usefulapi.io.","steps":[{"zone":".","outcome":"verified","label":"Verified"},{"zone":"io.","outcome":"verified","label":"Verified"},{"zone":"usefulapi.io.","outcome":"insecure_proven","label":"Unsigned (proven)"}]},"auth":{"outcome":"inconclusive","label":"Inconclusive","gate":null,"gateLabel":null,"status":302,"authorizationServers":[]},"httpsRedirect":{"outcome":"inconclusive","label":"Inconclusive","status":302},"transports":[{"transport":"streamable-http","outcome":"redirected","label":"Redirected","status":302,"followed":false}],"provenance":null,"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":null},"mismatches":[],"changelog":{"trackingSince":"2026-10-28","recent":[{"id":"chg_01a1ae2b-3b6d-72a9-b439-8d757b51f7fa","kind":"score.rubric_changed","summary":"We updated how we score, so this day's move reflects our rubric, not a change to the server","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-11-06","url":"https://verifymcp.io/servers/io-usefulapi-plutio/plutio#chg-chg_01a1ae2b-3b6d-72a9-b439-8d757b51f7fa"},{"id":"chg_01a19992-4f9b-7c5a-b5a0-45f11a0d9a2a","kind":"check.unverifiable","summary":"Stability (0.13 → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-plutio/plutio#chg-chg_01a19992-4f9b-7c5a-b5a0-45f11a0d9a2a"},{"id":"chg_01a19992-4f9d-739c-912a-db5d5252a346","kind":"check.unverifiable","summary":"Tool safety (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-plutio/plutio#chg-chg_01a19992-4f9d-739c-912a-db5d5252a346"},{"id":"chg_01a19992-4f9f-735e-8543-e399c5ae3442","kind":"check.unverifiable","summary":"Authorization (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-plutio/plutio#chg-chg_01a19992-4f9f-735e-8543-e399c5ae3442"},{"id":"chg_01a19992-4f9f-7838-81f5-9bf8c20fd691","kind":"check.unverifiable","summary":"Schema quality (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-plutio/plutio#chg-chg_01a19992-4f9f-7838-81f5-9bf8c20fd691"},{"id":"chg_01a19992-4f9f-7d71-9a1f-f6294417d73d","kind":"check.unverifiable","summary":"Capabilities (pass → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-plutio/plutio#chg-chg_01a19992-4f9f-7d71-9a1f-f6294417d73d"},{"id":"chg_01a19992-4fa3-7453-83b9-676899327814","kind":"check.unverifiable","summary":"Tool coverage (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-plutio/plutio#chg-chg_01a19992-4fa3-7453-83b9-676899327814"},{"id":"chg_01a19992-4fa4-79fa-a055-4d24ca759967","kind":"capture.status_changed","summary":"Endpoint reachability (reachable → not serving MCP)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-plutio/plutio#chg-chg_01a19992-4fa4-79fa-a055-4d24ca759967"},{"id":"chg_01a19992-4fa4-7efc-8933-ebf988a452ee","kind":"score.total_changed","summary":"Trust score (66 → 18)","materiality":"functional","direction":"regression","scoreDelta":-48,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-plutio/plutio#chg-chg_01a19992-4fa4-7efc-8933-ebf988a452ee"},{"id":"chg_01a1946b-5b7d-7c9b-b27f-d807eb3daae7","kind":"score.total_changed","summary":"Trust score (65 → 66)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-plutio/plutio#chg-chg_01a1946b-5b7d-7c9b-b27f-d807eb3daae7"},{"id":"chg_01a193fb-8206-725d-b80c-0e7e45c97f91","kind":"check.verdict","summary":"Authorization (partial → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-plutio/plutio#chg-chg_01a193fb-8206-725d-b80c-0e7e45c97f91"},{"id":"chg_01a193fb-8207-75b5-82aa-6f4eef6ab179","kind":"check.verdict","summary":"MCP protocol (fail → pass)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-plutio/plutio#chg-chg_01a193fb-8207-75b5-82aa-6f4eef6ab179"},{"id":"chg_01a193fb-8208-72bf-a468-08e063e982a1","kind":"prompt.added","summary":"New prompt “create_a_client_and_a_project”","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-plutio/plutio#chg-chg_01a193fb-8208-72bf-a468-08e063e982a1"},{"id":"chg_01a193fb-8208-7d5f-9498-f7f851d3db85","kind":"prompt.added","summary":"New prompt “prepare_a_draft_invoice_with_line_items”","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-plutio/plutio#chg-chg_01a193fb-8208-7d5f-9498-f7f851d3db85"},{"id":"chg_01a193fb-8209-7291-a656-30b835f14e9f","kind":"prompt.added","summary":"New prompt “read_a_proposal_or_contract”","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-plutio/plutio#chg-chg_01a193fb-8209-7291-a656-30b835f14e9f"},{"id":"chg_01a193fb-8209-7639-8cdf-1e5fc0becf0b","kind":"prompt.added","summary":"New prompt “record_time_against_a_task”","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-plutio/plutio#chg-chg_01a193fb-8209-7639-8cdf-1e5fc0becf0b"},{"id":"chg_01a193fb-820c-71df-b86b-614376bae921","kind":"prompt.added","summary":"New prompt “review_outstanding_invoices”","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-plutio/plutio#chg-chg_01a193fb-820c-71df-b86b-614376bae921"},{"id":"chg_01a193fb-820c-769e-8e99-f3a7f7eb36f0","kind":"prompt.added","summary":"New prompt “review_project_progress_and_overdue_tasks”","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-plutio/plutio#chg-chg_01a193fb-820c-769e-8e99-f3a7f7eb36f0"},{"id":"chg_01a193fb-820c-7d8d-a1e4-ba46bdd1f997","kind":"server.version_changed","summary":"Server version (1.6.0 → 1.8.0)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-plutio/plutio#chg-chg_01a193fb-820c-7d8d-a1e4-ba46bdd1f997"},{"id":"chg_01a193fb-820d-732a-9719-9af6ac3ecba4","kind":"protocol.version_changed","summary":"MCP protocol version (2025-06-18 → 2025-11-25)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-plutio/plutio#chg-chg_01a193fb-820d-732a-9719-9af6ac3ecba4"}],"truncated":true,"feedUrl":"https://verifymcp.io/servers/io-usefulapi-plutio/plutio/changelog.json"},"links":{"html":"https://verifymcp.io/servers/io-usefulapi-plutio/plutio","markdown":"https://verifymcp.io/servers/io-usefulapi-plutio/plutio.md","changelogJson":"https://verifymcp.io/servers/io-usefulapi-plutio/plutio/changelog.json","changelogRss":"https://verifymcp.io/servers/io-usefulapi-plutio/plutio.xml","external":[{"label":"Remote endpoint","href":"https://plutio.usefulapi.io/mcp"},{"label":"Repository","href":"https://github.com/m190/usefulapi-mcp"},{"label":"Website","href":"https://usefulapi.io/plutio/"}]}}