# Plinth (remote · tryplinth.dev)

App hosting your agent runs: git, deploys, staging/production, Postgres. Owner approves risky steps.

- Trust score: 64/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-17

## Components

- remote · `tryplinth.dev`: 64/100 (this document), [markdown](https://verifymcp.io/servers/dev-tryplinth-plinth/tryplinth.md), [page](https://verifymcp.io/servers/dev-tryplinth-plinth/tryplinth)

## Channel facts

- Endpoint: `https://tryplinth.dev/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

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. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-17.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 72 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 67/100
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 4593 tokens (~63/item across 72 items; 72 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 7/100
  - Stability observed for 2 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 91/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 74% of tool parameters carry a description.
- **Tool Safety**: 75/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - 0 of 14 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "project.delete" implies "delete" and declares no destructiveHint at all, which the MCP spec reads as destructive by default.
  - An AI judge read all 73 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the Plinth MCP server?

Plinth is a hosted endpoint at https://tryplinth.dev/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.

### Claude

```bash
claude mcp add --transport http dev-tryplinth-plinth 'https://tryplinth.dev/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "dev-tryplinth-plinth": {
      "url": "https://tryplinth.dev/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "dev-tryplinth-plinth": {
      "type": "http",
      "url": "https://tryplinth.dev/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.dev-tryplinth-plinth]
url = "https://tryplinth.dev/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "dev-tryplinth-plinth": {
      "type": "remote",
      "url": "https://tryplinth.dev/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add dev-tryplinth-plinth --url 'https://tryplinth.dev/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  dev-tryplinth-plinth:
    url: "https://tryplinth.dev/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "dev-tryplinth-plinth": {
      "Transport": "http",
      "Url": "https://tryplinth.dev/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add dev-tryplinth-plinth -t streamable-http -u 'https://tryplinth.dev/mcp'
```

### Other

```json
{
  "mcpServers": {
    "dev-tryplinth-plinth": {
      "type": "http",
      "url": "https://tryplinth.dev/mcp"
    }
  }
}
```

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

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-17 (score 64, +1)

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

### 2026-10-16 (score 63, 0)

- [functional improvement] Stability: unverified → 0.03

### 2026-10-15 (score 63)

First indexed and scored.

## MCP tools (72)

### `account.create` (~87 tokens)

Create a Plinth account for your human owner (or join theirs if their email already has one). Plinth emails them a link to approve; then call account.status with the returned signup_id and poll to collect your token.

Input parameters:

- `agent` (string): Your name, e.g. Claude
- `email` (string, required): Owner email
- `project` (string): Optional first project name

### `account.status` (~49 tokens)

Finish signup: checks whether the owner approved, and returns your token (once) when they have.

Input parameters:

- `poll` (string, required): From account.create
- `signup_id` (string, required): From account.create

### `whoami` (~21 tokens)

Show the account this token belongs to, its policy and projects.

### `project.create` (~79 tokens)

Create a project: a git repo plus production and staging environments, each with its own Postgres database. May return pending_approval: the owner is emailed a link to approve; tell them it is waiting, then poll approval.status.

Input parameters:

- `name` (string, required): Lowercase name, 3-40 chars, e.g. acme-crm

### `project.list` (~19 tokens)

List projects with their environments, live releases and URLs.

### `project.get` (~33 tokens)

Show one project: git remote, environments, live release per environment, URLs.

Input parameters:

- `project` (string, required): Project name

### `project.delete` (~58 tokens)

Delete a project, its repo, environments and databases. Irreversible. May return pending_approval: the owner is emailed a link to approve; tell them it is waiting, then poll approval.status.

Input parameters:

- `project` (string, required): Project name

### `code.write` (~128 tokens)

Commit files to the project without git: for agents that cannot run git or the CLI (e.g. Claude or ChatGPT in the cloud). Writes and deletes files on a branch (main deploys to staging; other branches get preview environments) and starts the deploy. Send whole files; text as utf8, binary as base64. Up to 5 MB per file.

Input parameters:

- `branch` (string): Default main
- `delete` (array): Paths to remove
- `files` (array)
- `message` (string): Commit message
- `project` (string, required): Project name

### `code.list` (~59 tokens)

List files in the project repo (path and size) on a branch or commit.

Input parameters:

- `prefix` (string): Only files under this folder
- `project` (string, required): Project name
- `ref` (string): Branch or commit, default main

### `code.read` (~58 tokens)

Read one file from the project repo. Text comes back as utf8; binary files as base64.

Input parameters:

- `path` (string, required)
- `project` (string, required): Project name
- `ref` (string): Branch or commit, default main

### `git.remote` (~41 tokens)

Get the authenticated git remote URL for pushing. Pushing main deploys staging; any other branch gets a preview environment.

Input parameters:

- `project` (string, required): Project name

### `git.log` (~39 tokens)

Recent commits on a branch.

Input parameters:

- `branch` (string): Default main
- `limit` (number)
- `project` (string, required): Project name

### `git.branches` (~25 tokens)

Branches and their head commits.

Input parameters:

- `project` (string, required): Project name

### `git.revert` (~53 tokens)

Revert a commit on a branch server-side. The new commit deploys like a push.

Input parameters:

- `branch` (string): Default main
- `commit` (string, required)
- `project` (string, required): Project name

### `env.list` (~28 tokens)

Environments for a project with live release and URL.

Input parameters:

- `project` (string, required): Project name

### `env.secrets.set` (~67 tokens)

Set an environment variable for an environment. Restarts the env so it takes effect.

Input parameters:

- `env` (string, required): Environment: production, staging, or a preview name
- `key` (string, required)
- `project` (string, required): Project name
- `value` (string, required)

### `env.secrets.list` (~46 tokens)

List environment variable names (values are never returned).

Input parameters:

- `env` (string, required): Environment: production, staging, or a preview name
- `project` (string, required): Project name

### `env.secrets.import` (~113 tokens)

Set many environment variables at once from .env text (KEY=value lines; # comments, quotes and "export" are fine). One restart at the end. Keys starting with VITE_/NEXT_PUBLIC_/PUBLIC_ also reach the build.

Input parameters:

- `dotenv` (string, required): Contents of a .env file
- `env` (string, required): Environment: production, staging, or a preview name
- `project` (string, required): Project name
- `replace` (boolean): Remove variables not in the file (default false)

### `env.secrets.unset` (~49 tokens)

Remove an environment variable.

Input parameters:

- `env` (string, required): Environment: production, staging, or a preview name
- `key` (string, required)
- `project` (string, required): Project name

### `deploy` (~72 tokens)

Rebuild and deploy the head of the branch an environment tracks (staging tracks main). Production only changes via promote.

Input parameters:

- `commit` (string): Optional commit sha; defaults to branch head
- `env` (string): Environment: production, staging, or a preview name
- `project` (string, required): Project name

### `deploy.status` (~91 tokens)

Releases for an environment, newest first, with status and build log of the latest. Pass log_from (a character offset) to get only the log written since; build_log_length tells you where to continue.

Input parameters:

- `env` (string): Environment: production, staging, or a preview name
- `limit` (number)
- `log_from` (number)
- `project` (string, required): Project name

### `deploy.cancel` (~68 tokens)

Stop a build that is still running (the latest one in the environment, or a given release id). The live release keeps serving.

Input parameters:

- `env` (string, required): Environment: production, staging, or a preview name
- `project` (string, required): Project name
- `release` (string)

### `promote` (~80 tokens)

Promote the release running on one environment to another (default staging to production). Applies pending migrations first. May return pending_approval: the owner is emailed a link to approve; tell them it is waiting, then poll approval.status.

Input parameters:

- `from` (string): Default staging
- `project` (string, required): Project name
- `to` (string): Default production

### `rollback` (~62 tokens)

Point an environment back at its previous release (or a given release id). Does not roll back the database.

Input parameters:

- `env` (string, required): Environment: production, staging, or a preview name
- `project` (string, required): Project name
- `release` (string)

### `db.query` (~116 tokens)

Run SQL against an environment database. Returns up to 500 rows. On production, reads (SELECT, WITH, SHOW, EXPLAIN) run in a read-only transaction; any write needs owner approval. May return pending_approval: the owner is emailed a link to approve; tell them it is waiting, then poll approval.status.

Input parameters:

- `env` (string, required): Environment: production, staging, or a preview name
- `params` (array)
- `project` (string, required): Project name
- `sql` (string, required)

### `db.migrations` (~51 tokens)

Applied and pending migrations (files in migrations/*.sql, applied in name order).

Input parameters:

- `env` (string, required): Environment: production, staging, or a preview name
- `project` (string, required): Project name

### `db.migrate` (~81 tokens)

Apply pending migrations from the live release now (deploys do this automatically). Takes a snapshot first. May return pending_approval: the owner is emailed a link to approve; tell them it is waiting, then poll approval.status.

Input parameters:

- `env` (string, required): Environment: production, staging, or a preview name
- `project` (string, required): Project name

### `db.snapshot` (~53 tokens)

Take a snapshot (pg_dump) of an environment database.

Input parameters:

- `env` (string, required): Environment: production, staging, or a preview name
- `label` (string)
- `project` (string, required): Project name

### `db.snapshots` (~62 tokens)

List snapshots for an environment. Staging and production get one automatically every night at 03:00 UTC, kept 7 days.

Input parameters:

- `env` (string, required): Environment: production, staging, or a preview name
- `project` (string, required): Project name

### `db.restore` (~86 tokens)

Restore an environment database from a snapshot. Takes a safety snapshot first. Production needs owner approval. May return pending_approval: the owner is emailed a link to approve; tell them it is waiting, then poll approval.status.

Input parameters:

- `env` (string, required): Environment: production, staging, or a preview name
- `project` (string, required): Project name
- `snapshot` (string, required)

### `db.connection` (~80 tokens)

Get the DATABASE_URL for an environment (the same one the app receives). Production needs owner approval. May return pending_approval: the owner is emailed a link to approve; tell them it is waiting, then poll approval.status.

Input parameters:

- `env` (string, required): Environment: production, staging, or a preview name
- `project` (string, required): Project name

### `cron.add` (~159 tokens)

Schedule a job: Plinth POSTs to path on the environment at each tick (5-field cron, UTC), with the header x-plinth-cron-secret. Paths under /api/cron/ refuse any other caller. Outside production jobs start paused unless enabled is true. Jobs can also be declared in plinth.json "crons".

Input parameters:

- `enabled` (boolean)
- `env` (string, required): Environment: production, staging, or a preview name
- `name` (string, required)
- `path` (string, required): e.g. /api/cron/digest
- `project` (string, required): Project name
- `schedule` (string, required): e.g. "0 9 * * 1" or "*/5 * * * *"

### `cron.list` (~46 tokens)

Cron jobs on an environment with last run and next run.

Input parameters:

- `env` (string, required): Environment: production, staging, or a preview name
- `project` (string, required): Project name

### `cron.pause` (~54 tokens)

Pause a cron job (it stays defined but does not run).

Input parameters:

- `env` (string, required): Environment: production, staging, or a preview name
- `name` (string, required)
- `project` (string, required): Project name

### `cron.resume` (~47 tokens)

Resume a paused cron job.

Input parameters:

- `env` (string, required): Environment: production, staging, or a preview name
- `name` (string, required)
- `project` (string, required): Project name

### `cron.remove` (~46 tokens)

Delete a cron job.

Input parameters:

- `env` (string, required): Environment: production, staging, or a preview name
- `name` (string, required)
- `project` (string, required): Project name

### `cron.run` (~51 tokens)

Run a cron job now and return its result.

Input parameters:

- `env` (string, required): Environment: production, staging, or a preview name
- `name` (string, required)
- `project` (string, required): Project name

### `cron.runs` (~49 tokens)

Recent runs of a cron job.

Input parameters:

- `env` (string, required): Environment: production, staging, or a preview name
- `name` (string, required)
- `project` (string, required): Project name

### `domains.connect` (~72 tokens)

Map a domain you own to an environment. Point its DNS at the Plinth host; returns the record to create.

Input parameters:

- `env` (string, required): Environment: production, staging, or a preview name
- `host` (string, required): e.g. crm.acme.co
- `project` (string, required): Project name

### `domains.list` (~23 tokens)

Domains mapped to a project.

Input parameters:

- `project` (string, required): Project name

### `domains.verify` (~42 tokens)

Check the TXT record of a connected domain; once it matches, the domain is served.

Input parameters:

- `host` (string, required)
- `project` (string, required): Project name

### `domains.remove` (~29 tokens)

Unmap a domain.

Input parameters:

- `host` (string, required)
- `project` (string, required): Project name

### `billing.status` (~26 tokens)

Whether a card is on file, this month's spend, the spend cap and recent charges.

### `project.upgrade` (~75 tokens)

Move a project to Pro ($19/month per project): own domains and more room. Charges the owner's card now (prorated) after they approve. May return pending_approval: the owner is emailed a link to approve; tell them it is waiting, then poll approval.status.

Input parameters:

- `project` (string, required): Project name

### `project.downgrade` (~46 tokens)

Move a project back to the free plan. Its custom domains stop being served. The subscription shrinks with a prorated credit.

Input parameters:

- `project` (string, required): Project name

### `billing.card` (~69 tokens)

Ask the owner to add or replace the payment card. Returns an approve_url; approving opens a Stripe page where the owner enters the card. Plinth never sees card numbers. May return pending_approval: the owner is emailed a link to approve; tell them it is waiting, then poll approval.status.

### `domains.search` (~73 tokens)

Check if domains can be bought here, with price. Pass a name ("acme" checks acme.com, .dev, .app, .io, .co, .net, .ai, .org) or a full domain.

Input parameters:

- `query` (string, required): e.g. acme or acme.dev

### `domains.buy` (~128 tokens)

Buy a domain and connect it to an environment: registers it, points DNS at Plinth, issues HTTPS. Always shows the owner the exact price first. Standard registrations only. May return pending_approval: the owner is emailed a link to approve; tell them it is waiting, then poll approval.status.

Input parameters:

- `domain` (string, required): e.g. acme.dev (run domains.search first)
- `env` (string, required): Environment: production, staging, or a preview name
- `project` (string, required): Project name
- `years` (number): 1-10, default 1

### `domains.orders` (~24 tokens)

Domains bought through Plinth on this account, with price, status and expiry.

### `logs.query` (~114 tokens)

Logs for an environment: app stdout/stderr, build, cron and system lines. Filter by text and stream.

Input parameters:

- `env` (string, required): Environment: production, staging, or a preview name
- `grep` (string)
- `limit` (number)
- `project` (string, required): Project name
- `since` (string): 30s, 15m, 2h, 7d (default 15m)
- `stream` (string): stdout, stderr, build, cron, system

### `metrics.get` (~54 tokens)

Request count, error rate and latency percentiles for an environment.

Input parameters:

- `env` (string, required): Environment: production, staging, or a preview name
- `project` (string, required): Project name
- `since` (string)

### `analytics.get` (~92 tokens)

Visitors and page views per day, top pages, where visitors come from, and phone vs desktop. No cookies; visitors are counted per day. Free shows today; Pro up to 90 days.

Input parameters:

- `days` (number): Default 30 (Pro) or 1 (Free)
- `env` (string): Environment: production, staging, or a preview name
- `project` (string, required): Project name

### `seo.setup` (~100 tokens)

Check how search engines see an environment (title, description, robots.txt, sitemap, noindex) and get the steps to connect OpenSEO (openseo.so), an open-source SEO tool your agent uses over MCP: keyword research, rank tracking, backlinks, site audits. The owner signs up on OpenSEO; Plinth does not share any data with it.

Input parameters:

- `env` (string): Default production
- `project` (string, required): Project name

### `env.status` (~66 tokens)

Debug an environment: is it running, restarts, out-of-memory kills, memory/CPU use, live release, and the last errors from its logs.

Input parameters:

- `env` (string, required): Environment: production, staging, or a preview name
- `project` (string, required): Project name

### `env.restart` (~50 tokens)

Restart an environment on its current release (fresh sandbox, same code and data).

Input parameters:

- `env` (string, required): Environment: production, staging, or a preview name
- `project` (string, required): Project name

### `env.exec` (~143 tokens)

Production needs owner approval. Run a shell command inside the environment's running sandbox (same code, env vars, network and limits as the app), e.g. "node -e '...'", "ls", "env | sort". 30s timeout, 20 KB of output. Code is read-only; /tmp is writable. May return pending_approval: the owner is emailed a link to approve; tell them it is waiting, then poll approval.status.

Input parameters:

- `command` (string, required)
- `env` (string, required): Environment: production, staging, or a preview name
- `project` (string, required): Project name
- `timeout_seconds` (number)

### `http.probe` (~108 tokens)

Send one HTTP request to the environment from inside Plinth and return status, headers, timing and the first 8 KB of the body. Use it to reproduce a failing route.

Input parameters:

- `body` (string)
- `env` (string, required): Environment: production, staging, or a preview name
- `headers` (object)
- `method` (string)
- `path` (string): e.g. /api/orders?id=3
- `project` (string, required): Project name

### `requests.query` (~92 tokens)

Recent HTTP requests to an environment: method, path, status, time taken. Filter to failures with min_status 500, or by path.

Input parameters:

- `env` (string, required): Environment: production, staging, or a preview name
- `limit` (number)
- `min_status` (number)
- `path` (string)
- `project` (string, required): Project name
- `since` (string)

### `approvals.list` (~78 tokens)

Approvals requested by this account, newest first. status: pending, approved, denied, cancelled, superseded (default all). Pending ones include approve_url, which the signed-in owner can approve at (the owner also gets each request by email).

Input parameters:

- `status` (string): pending, approved, denied, cancelled, superseded (default all)

### `approval.cancel` (~40 tokens)

Withdraw a pending approval request you made (for example one that is no longer needed). The owner can no longer approve it.

Input parameters:

- `id` (string, required)

### `approval.status` (~28 tokens)

Check an approval. When approved, result holds the action output.

Input parameters:

- `id` (string, required)

### `support.send` (~109 tokens)

Send the Plinth team a bug report, feature request or question. Include what you tried and what happened. Recent errors for the project are attached automatically. Replies show up in support.list.

Input parameters:

- `body` (string, required): Details: steps, expected vs actual, commands, error text
- `env` (string): Optional environment
- `kind` (string, required): bug, feature, question or other
- `project` (string): Optional project it is about
- `title` (string, required): One line

### `support.list` (~19 tokens)

Your support tickets with their status and the team's reply.

### `webhooks.add` (~145 tokens)

Send Plinth events to a URL (your bot, Slack, Discord, Telegram, Zapier...). Events: deploy.succeeded, deploy.failed, approval.requested, approval.decided, app.down, app.up, support.created, support.replied, charge.succeeded, signup.approved. Leave events empty for all. Payloads are JSON with a "text" summary and an x-plinth-signature HMAC header; Slack/Discord webhook URLs and Telegram sendMessage URLs work as-is.

Input parameters:

- `authorization` (string): Optional Authorization header value, e.g. "Bearer abc". Stored encrypted.
- `events` (array)
- `url` (string, required): https URL

### `webhooks.list` (~18 tokens)

Your webhooks with their last delivery status.

### `webhooks.remove` (~20 tokens)

Delete a webhook.

Input parameters:

- `id` (string, required)

### `webhooks.test` (~31 tokens)

Send a test event to all your webhooks; check webhooks.list a few seconds later for the result.

### `console.signin` (~71 tokens)

Get the owner into the web console. Plinth emails the owner a sign-in link; approving it signs that browser in for 12 hours. The agent never receives a session. May return pending_approval: the owner is emailed a link to approve; tell them it is waiting, then poll approval.status.

### `token.rotate` (~43 tokens)

Replace your own agent token with a new one; the old one stops working immediately. Save the new token in ~/.plinth/config.json (the CLI does this for you).

### `agents.list` (~29 tokens)

Agents that have a key to this account, when each was last used, and which one you are.

### `agents.revoke` (~29 tokens)

Owner only. Remove an agent's access to this account immediately.

Input parameters:

- `id` (string, required)

### `policy.set` (~49 tokens)

Owner only. Choose which approval types run without asking. Keys: project.create, project.delete, promote.production, migration.destructive, db.restore.production, billing.

Input parameters:

- `auto_approve` (array, required)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/dev-tryplinth-plinth/tryplinth#diagnostics

## Score history

- 2026-10-17: 64
- 2026-10-16: 63
- 2026-10-15: 63

## Common questions

### What is the Plinth MCP server?

Plinth is an MCP server listed in the public MCP registry as dev.tryplinth/plinth. App hosting your agent runs: git, deploys, staging/production, Postgres. Owner approves risky steps. This page covers its hosted endpoint (https://tryplinth.dev/mcp).

### Is the Plinth MCP server safe to use?

Plinth scores 64 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 Plinth MCP server expose?

Plinth exposes 72 tools: account.create, account.status, whoami, project.create, project.list, and 67 more. Their descriptions and schemas cost roughly 4,541 tokens of context every time the server is loaded.

### Does the Plinth MCP server require authentication?

No. We connected to Plinth without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the Plinth MCP server still maintained?

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

## Links

- Remote endpoint: https://tryplinth.dev/mcp
- Website: https://tryplinth.dev/
- Changelog RSS feed: https://verifymcp.io/servers/dev-tryplinth-plinth/tryplinth.xml
- Changelog JSON feed: https://verifymcp.io/servers/dev-tryplinth-plinth/tryplinth.json
- HTML version of this page: https://verifymcp.io/servers/dev-tryplinth-plinth/tryplinth
