Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Plate

REMOTE · PLATE.TO · SCANNED SEP 20

Minimal project management for teams and AI agents.

Available components

0 this week 94 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security94
Transport & Reachability100
Schema Quality & AI Usability79
  • AI-judged instruction clarity (excellent).Pass
  • Tool/resource definitions use about 2429 tokens (~86/item across 28 items; 28 tools + 0 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 4 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 28 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

How do I install the Plate MCP server?

Plate is a hosted endpoint at https://plate.to/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · plate.to

# add to Claude Code
claude mcp add --transport http to-plate-mcp 'https://plate.to/mcp'
// .cursor/mcp.json
{
  "mcpServers": {
    "to-plate-mcp": {
      "url": "https://plate.to/mcp"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "to-plate-mcp": {
      "type": "http",
      "url": "https://plate.to/mcp"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.to-plate-mcp]
url = "https://plate.to/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "to-plate-mcp": {
      "type": "remote",
      "url": "https://plate.to/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add to-plate-mcp --url 'https://plate.to/mcp' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  to-plate-mcp:
    url: "https://plate.to/mcp"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "to-plate-mcp": {
      "Transport": "http",
      "Url": "https://plate.to/mcp"
    }
  }
}
# add to Vellum
assistant mcp add to-plate-mcp -t streamable-http -u 'https://plate.to/mcp'
// mcp.json
{
  "mcpServers": {
    "to-plate-mcp": {
      "type": "http",
      "url": "https://plate.to/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 26 Aug 26 +1
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 25 Aug 26 0
    • Stability: 0.97 → pass security
  • 24 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 11 Aug 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 31 Jul 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 30 Jul 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 27 Jul 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 26 Jul 26 0

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Probed https://plate.to/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=plate.to CN=WR3,O=Google Trust Services,C=US 6 Aug 2026 4 Nov 2026 RSA 2048 SHA256-RSA 6c41dad6a373292812d98a7aa8d8421c
SANs: plate.to
CN=WR3,O=Google Trust Services,C=US (CA) CN=GTS Root R1,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 RSA 2048 SHA256-RSA 7ff005a91568d63abc22861684aa4b5a
CN=GTS Root R1,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 19 Jun 2020 28 Jan 2028 RSA 4096 SHA256-RSA 77bd0d6cdb36f91aea210fc4f058d30d
CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 1 Sept 1998 28 Jan 2028 RSA 2048 SHA1-RSA 40000000001154b5ac394

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of plate.to. Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
to. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication Enforced and verified

The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.

Result Enforced and verified
Enforced On tool calls
HTTP status 200

WWW-Authenticate challenge Bearer resource_metadata="https://plate.to/.well-known/oauth-protected-resource", error="unauthorized"

Bearer resource_metadata="https://plate.to/.well-known/oauth-protected-resource", error="unauthorized"
Header Value
strict-transport-security max-age=31556926

Protected resource metadata

Document https://plate.to/.well-known/oauth-protected-resource
Retrieved Yes
Resource https://plate.to/mcp
Authorisation server https://plate.to

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://plate.to/mcp Verified 200
http (plaintext) http://plate.to/mcp HTTPS enforced 301 https://plate.to/mcp
MCP tools · 28 exposed · ~2,429 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
complete_task ~132

Mark an existing task as completed or reopen it. Use this instead of create_task when the task already exists and you only need to change its completion state. The taskId is the internal document ID from list_tasks — NOT the public task number (e.g. SCD-408). To resolve a public number to an internal ID, call list_tasks with workspaceId + number first.

NameTypeReqDescription
isCompletedbooleanTrue to complete, false to reopen (default: true)
taskIdstringyesInternal task ID (from list_tasks `id` field, not the public SCD-XXX number)
NameTypeReqDescription
idstringyes
isCompletedbooleanyes

No examples provided.

complete_tasks ~72

Mark multiple tasks as completed in one action. Use this instead of calling complete_task multiple times. Already-completed tasks are left as-is.

NameTypeReqDescription
isCompletedbooleanTrue to complete, false to reopen (default: true)
taskIdsarrayyesInternal task IDs to complete (1–100)
NameTypeReqDescription
itemsarrayyes

No examples provided.

create_comment ~106

Add a comment to a task. The taskId is the internal document ID from list_tasks — NOT the public task number (e.g. SCD-408).

NameTypeReqDescription
taskIdstringyesInternal task ID (from list_tasks `id` field, not the public SCD-XXX number)
textstringyesComment text. Supports markdown: # headings, - bullets, 1. numbered lists, **bold**, *italic*, `code`, > blockquote.
NameTypeReqDescription
idstringyes

No examples provided.

create_comments ~41

Add multiple comments to tasks in one action. Use this instead of calling create_comment multiple times.

NameTypeReqDescription
commentsarrayyesComments to create (1–50)
NameTypeReqDescription
itemsarrayyes

No examples provided.

create_project ~83

Create a new project in a workspace. If a project with the same name already exists in the workspace, returns the existing project instead of creating a duplicate — check the `created` field in the response to tell the two cases apart.

NameTypeReqDescription
descriptionstringProject description
namestringyesProject name
workspaceIdstringyesWorkspace ID
NameTypeReqDescription
createdbooleanyestrue if a new project was created, false if an existing project with this name was returned
defaultListIdyes
idstringyes

No examples provided.

create_section ~77

Create a new section (column) in a project. If a section with the same name already exists in the project, returns the existing section instead of creating a duplicate — check the `created` field in the response to tell the two cases apart.

NameTypeReqDescription
namestringyesSection name
projectIdstringyesProject ID
NameTypeReqDescription
createdbooleanyestrue if a new section was created, false if an existing section with this name was returned
idstringyes

No examples provided.

create_sections ~52

Create multiple sections in a project in one action. Use this instead of calling create_section multiple times.

NameTypeReqDescription
projectIdstringyesProject ID
sectionsarrayyesSections to create (1–30)
NameTypeReqDescription
itemsarrayyes

No examples provided.

create_task ~170

Create a new task in a project section. Only call this tool when creating a brand-new task that does not yet exist. To change the name, status, assignee, or description of an existing task, call update_task instead. To mark an existing task as done, call complete_task instead. If unsure whether a task already exists, call list_tasks first.

NameTypeReqDescription
assigneeIdstringAssignee user ID
labelsarrayLabel IDs or names (from list_labels). Names match case-insensitively. Labels are never created automatically — an unknown one is an error.
listIdstringyesSection ID
namestringyesTask name
projectIdstringyesProject ID
statusIdstringInitial status ID
NameTypeReqDescription
idstringyes
numbernumberyes

No examples provided.

create_tasks ~100

Create multiple tasks in a project in one action. Use this instead of calling create_task multiple times when the user asks to create several tasks at once. All tasks are created atomically — if validation fails for any item, nothing is created.

NameTypeReqDescription
listIdstringDefault section ID for all tasks (can be overridden per task)
projectIdstringyesProject ID
tasksarrayyesTasks to create (1–50)
NameTypeReqDescription
itemsarrayyes

No examples provided.

delete_comment ~25

Delete a comment from a task.

NameTypeReqDescription
commentIdstringyesComment ID
NameTypeReqDescription
deletedbooleanyes
idstringyes

No examples provided.

delete_comments ~50

Delete multiple comments in one action. Use this instead of calling delete_comment multiple times. All comments are validated before any are deleted.

NameTypeReqDescription
commentIdsarrayyesComment IDs to delete (1–50)
NameTypeReqDescription
itemsarrayyes

No examples provided.

delete_task ~75

Permanently delete a task. Comments and attachments are removed automatically. The taskId is the internal document ID from list_tasks — NOT the public task number (e.g. SCD-408).

NameTypeReqDescription
taskIdstringyesInternal task ID (from list_tasks `id` field, not the public SCD-XXX number)
NameTypeReqDescription
deletedbooleanyes
idstringyes

No examples provided.

delete_tasks ~53

Permanently delete multiple tasks in one action. Use this instead of calling delete_task multiple times. All tasks are validated before any are deleted.

NameTypeReqDescription
taskIdsarrayyesInternal task IDs to delete (1–50)
NameTypeReqDescription
itemsarrayyes

No examples provided.

get_task ~178

Get full details of a task. You can look up by internal taskId OR by public task identifier. To resolve a public ID like 'TES-1' or 'SCD-409', pass it as taskId — the prefix is used to find the correct workspace automatically. Alternatively, pass workspaceId + number (digits only).

NameTypeReqDescription
numbernumberPublic task number (digits only — e.g. 409 from SCD-409). Requires workspaceId unless taskId contains the prefix.
taskIdstringInternal task ID OR full public task identifier (e.g. 'TES-1', 'SCD-409'). When a prefixed ID is passed, the prefix is used to locate the correct workspace automatically.
workspaceIdstringWorkspace ID. Used when looking up by number without a prefix.
NameTypeReqDescription
assigneeIdyes
createdAtyes
descriptionyes
descriptionTextyesDescription converted to Markdown — use this for reading and displaying the description.
idstringyes
isCompletedbooleanyes
labelsarrayyes
listIdstringyes
namestringyes
numberyes
ownerIdyes
projectIdstringyes
statusIdyes
workspaceIdstringyes

No examples provided.

list_activity ~232

List task activity history (status changes, assignments, moves, etc.) over a time range. Use it for time-based questions like which tasks were completed last week or what someone did. Filters: from/to (ISO 8601 dates), actorId (who made the change — get userIds from list_members), type ('task_status_changed', or 'completed' for transitions into a Done status), and projectId. Each row gives the task identifier, the status change, who did it, and the task's owner and assignee.

NameTypeReqDescription
actorIdstringOnly changes made by this userId
fromstringStart of range, ISO 8601 (e.g. 2026-06-01)
limitnumberMax rows (default 100, max 500)
projectIdstringLimit to one project
tostringEnd of range, ISO 8601
typestringEvent type, e.g. 'task_status_changed' or 'completed'
workspaceIdstringyesWorkspace ID
NameTypeReqDescription
itemsarrayyes

No examples provided.

list_comments ~66

List a task's comments, oldest first. The taskId is the internal document ID from list_tasks — NOT the public SCD-XXX number.

NameTypeReqDescription
taskIdstringyesInternal task ID (from list_tasks `id` field, not the public SCD-XXX number)
NameTypeReqDescription
itemsarrayyes

No examples provided.

list_labels ~43

List task labels for a workspace. Use the returned IDs (or names) as `labels` when creating or updating tasks.

NameTypeReqDescription
workspaceIdstringyesWorkspace ID
NameTypeReqDescription
itemsarrayyes

No examples provided.

list_members ~46

List workspace members with their userId, name, email, and role. Use userId as assigneeId when creating or updating tasks.

NameTypeReqDescription
workspaceIdstringyesWorkspace ID
NameTypeReqDescription
itemsarrayyes

No examples provided.

list_projects ~24

List projects in a workspace.

NameTypeReqDescription
workspaceIdstringyesWorkspace ID
NameTypeReqDescription
itemsarrayyes

No examples provided.

list_sections ~27

List sections (columns) in a project.

NameTypeReqDescription
projectIdstringyesProject ID
NameTypeReqDescription
itemsarrayyes

No examples provided.

list_statuses ~39

List workflow statuses for a workspace. Use the returned IDs as statusId when creating or updating tasks.

NameTypeReqDescription
workspaceIdstringyesWorkspace ID
NameTypeReqDescription
itemsarrayyes

No examples provided.

list_tasks ~283

List tasks in a project, or look up a specific task by its public number. To resolve a public ID like 'TES-1': pass taskPrefix='TES' and number=1 — the prefix locates the correct workspace automatically (do NOT hardcode workspaceId when the prefix belongs to a different workspace). Alternatively pass workspaceId + number when you are certain of the workspace.

NameTypeReqDescription
includeCompletedbooleanInclude completed tasks (default: false)
limitnumberMax number of tasks to return (default: 100, max: 500)
listIdstringFilter by section ID
numbernumberLook up a task by its public number (digits only — e.g. 1 from TES-1). Requires either taskPrefix or workspaceId. projectId is ignored when number is provided.
projectIdstringProject ID. Required unless number is provided.
statusIdstringFilter by status ID
taskPrefixstringTask prefix (e.g. 'TES' from TES-1). When provided with number, the workspace is located by prefix automatically — use this instead of workspaceId when the prefix is known.
workspaceIdstringWorkspace ID. Use when searching by number and you know the workspace. Ignored when taskPrefix is provided.
NameTypeReqDescription
itemsarrayyes

No examples provided.

list_workspaces ~21

List all Plate workspaces the user is a member of.

Input schema present but exposes no named parameters.

NameTypeReqDescription
itemsarrayyes

No examples provided.

update_project ~48

Rename a project or update its description.

NameTypeReqDescription
descriptionNew project description (null to clear)
namestringNew project name
projectIdstringyesProject ID
NameTypeReqDescription
idstringyes

No examples provided.

update_section ~32

Rename a section.

NameTypeReqDescription
namestringyesNew section name
sectionIdstringyesSection ID
NameTypeReqDescription
idstringyes

No examples provided.

update_sections ~39

Rename multiple sections in one action. Use this instead of calling update_section multiple times.

NameTypeReqDescription
sectionsarrayyesSections to update (1–30)
NameTypeReqDescription
itemsarrayyes

No examples provided.

update_task ~258

Update one or more fields on an existing task. Use this instead of create_task when the task already exists. The taskId is the internal document ID from list_tasks — NOT the public task number (e.g. SCD-408). To resolve a public number to an internal ID, call list_tasks with workspaceId + number first.

NameTypeReqDescription
assigneeIdNew assignee user ID (null to unassign)
descriptionstringNew description. Supports markdown: # headings, - bullets, 1. numbered lists, **bold**, *italic*, `code`, > blockquote.
labelsarrayReplace the task's labels with these IDs or names (from list_labels). Names match case-insensitively; pass [] to clear. This REPLACES the list, it does not append. Labels are never created automatica…
listIdstringMove to a different section (must belong to the same project)
namestringNew task name
statusIdstringNew status ID
taskIdstringyesInternal task ID (from list_tasks `id` field, not the public SCD-XXX number)
NameTypeReqDescription
idstringyes

No examples provided.

update_tasks ~57

Update multiple existing tasks in one action. Use this instead of calling update_task multiple times when the user asks to change several tasks at once. All updates are applied atomically.

NameTypeReqDescription
tasksarrayyesTasks to update (1–50)
NameTypeReqDescription
itemsarrayyes

No examples provided.

Common questions

What is the Plate MCP server?

Plate is an MCP server listed in the public MCP registry as to.plate/mcp. Minimal project management for teams and AI agents. This page covers its hosted endpoint (https://plate.to/mcp).

Is the Plate MCP server safe to use?

Plate scores 94 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Plate MCP server expose?

Plate exposes 28 tools: list_workspaces, list_projects, list_tasks, list_sections, get_task, and 23 more. Their descriptions and schemas cost roughly 2,429 tokens of context every time the server is loaded.

Does the Plate MCP server require authentication?

Yes. Plate asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

Is the Plate MCP server still maintained?

Plate is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.