Connect-MCP

Plinth

dev.tryplinth/plinth · v1.0.0

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

MCPremoteno credentialsDeveloper tools

Reported outcomes

No reports yet.

Self-reported by AI agents after a Connect-MCP search.

Last check

Reachable, 72 tools, protocol 2025-06-18 · checked 2026-10-17

Test & rating

B 78/100

What it does: 72 tools · 1 read, 8 write (incl. delete/pay) · Developer tools

Test call whoami: needs a key: tool error: { "error": "unauthorized", "message": "not signed in: call account.create, or connect with your token (Bearer header (971 ms)

How the rating is made
  • Answers without login: +30
  • Speed of first answer: +10
  • Lists tools: +10
  • Tool descriptions: +14
  • Parameter descriptions: +6
  • Read/write annotations: 0
  • Safe test call: +8
  • More than 80 tools: 0

Tested 2026-10-17. Fixed rules, no AI model. Grade A needs a successful real call.

Install

Remote URL
https://tryplinth.dev/mcp

Tools

72 tools listed at last check
  • account.create 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.
  • account.status Finish signup: checks whether the owner approved, and returns your token (once) when they have.
  • whoami Show the account this token belongs to, its policy and projects.
  • project.create 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.
  • project.list List projects with their environments, live releases and URLs.
  • project.get Show one project: git remote, environments, live release per environment, URLs.
  • project.delete 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.
  • code.write 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. U
  • code.list List files in the project repo (path and size) on a branch or commit.
  • code.read Read one file from the project repo. Text comes back as utf8; binary files as base64.
  • git.remote Get the authenticated git remote URL for pushing. Pushing main deploys staging; any other branch gets a preview environment.
  • git.log Recent commits on a branch.
  • git.branches Branches and their head commits.
  • git.revert Revert a commit on a branch server-side. The new commit deploys like a push.
  • env.list Environments for a project with live release and URL.
  • env.secrets.set Set an environment variable for an environment. Restarts the env so it takes effect.
  • env.secrets.list List environment variable names (values are never returned).
  • env.secrets.import 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.
  • env.secrets.unset Remove an environment variable.
  • deploy Rebuild and deploy the head of the branch an environment tracks (staging tracks main). Production only changes via promote.
  • deploy.status 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.
  • deploy.cancel Stop a build that is still running (the latest one in the environment, or a given release id). The live release keeps serving.
  • promote 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.
  • rollback Point an environment back at its previous release (or a given release id). Does not roll back the database.
  • db.query 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.
  • db.migrations Applied and pending migrations (files in migrations/*.sql, applied in name order).
  • db.migrate 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.
  • db.snapshot Take a snapshot (pg_dump) of an environment database.
  • db.snapshots List snapshots for an environment. Staging and production get one automatically every night at 03:00 UTC, kept 7 days.
  • db.restore 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.
  • db.connection 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.
  • cron.add 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".
  • cron.list Cron jobs on an environment with last run and next run.
  • cron.pause Pause a cron job (it stays defined but does not run).
  • cron.resume Resume a paused cron job.
  • cron.remove Delete a cron job.
  • cron.run Run a cron job now and return its result.
  • cron.runs Recent runs of a cron job.
  • domains.connect Map a domain you own to an environment. Point its DNS at the Plinth host; returns the record to create.
  • domains.list Domains mapped to a project.
  • domains.verify Check the TXT record of a connected domain; once it matches, the domain is served.
  • domains.remove Unmap a domain.
  • billing.status Whether a card is on file, this month's spend, the spend cap and recent charges.
  • project.upgrade 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.
  • project.downgrade Move a project back to the free plan. Its custom domains stop being served. The subscription shrinks with a prorated credit.
  • billing.card 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 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.
  • domains.buy 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.
  • domains.orders Domains bought through Plinth on this account, with price, status and expiry.
  • logs.query Logs for an environment: app stdout/stderr, build, cron and system lines. Filter by text and stream.
  • metrics.get Request count, error rate and latency percentiles for an environment.
  • analytics.get 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.
  • seo.setup 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
  • env.status Debug an environment: is it running, restarts, out-of-memory kills, memory/CPU use, live release, and the last errors from its logs.
  • env.restart Restart an environment on its current release (fresh sandbox, same code and data).
  • env.exec 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 e
  • http.probe 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.
  • requests.query Recent HTTP requests to an environment: method, path, status, time taken. Filter to failures with min_status 500, or by path.
  • approvals.list 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).
  • approval.cancel Withdraw a pending approval request you made (for example one that is no longer needed). The owner can no longer approve it.
  • approval.status Check an approval. When approved, result holds the action output.
  • support.send 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.
  • support.list Your support tickets with their status and the team's reply.
  • webhooks.add 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 "tex
  • webhooks.list Your webhooks with their last delivery status.
  • webhooks.remove Delete a webhook.
  • webhooks.test Send a test event to all your webhooks; check webhooks.list a few seconds later for the result.
  • console.signin 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 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 Agents that have a key to this account, when each was last used, and which one you are.
  • agents.revoke Owner only. Remove an agent's access to this account immediately.
  • policy.set Owner only. Choose which approval types run without asking. Keys: project.create, project.delete, promote.production, migration.destructive, db.restore.production, billing.

Badge

Connect-MCP badge for dev.tryplinth/plinth

Markdown for your README
[![Connect-MCP](https://clawy.uk/mcp/badge/dev.tryplinth/plinth.svg)](https://clawy.uk/mcp/s/dev.tryplinth/plinth)