10 tools, one connector

The ten tools

Add the connector once and these sit beside everything else your assistant can do. Each one is listed by the name it is called by and by what its code actually does.

This page is for whoever is wiring it up. It is the reference, not the pitch, and it names things by the strings a machine matches on. The landing page makes the same argument in plain words.

connector url10 tools
https://mcp.juudd.com/mcp

A tool appears only when the thing behind it exists. A control plane with no deploy target or no database provider offers fewer, and the tool list is the clearest signal a client gets about what is configured. All ten are listed here.

The connection

One tool that takes no site, and therefore the only one with nothing to authorise.

hello

Hello

Returns a greeting and the account this connection is acting as. It proves the connection works end to end, and it names the account that owns anything deployed through it. Every refusal anywhere else is about that account, and this is the one place you can read it.

Deploys

Every version is kept. Publishing an older one is how a rollback happens, and it is the same code path a recovery runs.

deploy_site

Deploy a site

Stores a recoverable bundle of a site, its files, subdomain and version, in the artifact store, then publishes it and returns the live URL. Each file arrives as text or as base64: text for HTML, CSS and JavaScript, base64 for images, fonts, icons and anything else that is not text. Server code goes in functions, where the path spells the URL, so functions/api/orders.js answers /api/orders and every other URL is served from the files. Routing can be given as static or spa, and when it is not given it is inferred; the reply says which was used. Publishing reads the bundle back out of the store rather than reusing what is in memory, so what gets served is what can be recovered.

publish_deploy

Publish a stored deploy

Publishes a version that is already in the artifact store, the newest one by default or any earlier one by name. Rolling back is publishing an earlier version, which is the same code path a disaster recovery runs, so the rollback is exercised every time anyone deploys.

list_deploys

List deploys

With no argument, lists the sites this account owns. With a site id, lists every stored version of that site, newest last, marking which one is current. Sites belonging to another account are not listed and cannot be read.

The database

One Postgres database per site. A table without a row-level security policy cannot be deployed against, and the exit is one call with no deadline on it.

create_database

Create a database

Creates a Postgres database for a site. One per site: calling again returns the existing one rather than making a second. It returns the owner connection string, for anyone who has a terminal, and that string must not go into the site files or into a function, because deployed code is public. The site's own functions are given a separate, restricted connection string automatically at deploy time, as env.DATABASE_URL.

apply_sql

Run SQL on a site's database

Runs SQL against a site's database as the owner. This is how tables, policies and seed data get made, and how they are read back. Every statement runs in one transaction: if any of them fails, none of them applied. Each table and its row-level security policy belong in the same call, because a table without one cannot be deployed against. The reply says what every statement returned and what the deploy gate would still refuse.

database_status

Database status

Says whether a site has a database, and whether this platform still holds it.

transfer_database

Hand the database over to its owner

Returns a one-time URL that moves the database into your own account, after which this platform loses all access to it: it can no longer read the database, back it up, or get it back. This is the exit door and it has no deadline. A new URL can be minted whenever it is asked for, however old the database is, so an expired link is not a window you missed.

set_database_url

Give a site a new database connection string

Writes a connection string onto a deployed site as env.DATABASE_URL, by republishing the site's current stored version: the same files, unchanged, with a different binding. It exists for one situation and refuses the rest. After transfer_database you own the database, and the only copy of the credential your site is using is a write-only binding on the site itself, which this platform cannot read, copy or work out. This is what puts it back. The value is not stored, not read back and not tested, so check it by loading the site.

reset_database_credential

Rebuild a site's database credential

Repairs a site that can no longer reach the database this platform holds for it, because the restricted role its functions connect as, juudd_app, was dropped or re-passworded by hand from a terminal. The role is created again with NOBYPASSRLS, given a fresh password, granted only what the schema gate allows over the tables that exist right now, and the site's current stored version is republished to carry it. It is a rotation, so the old password stops working immediately, and nothing on this side can tell a wrong password from a right one. Be sure of the diagnosis first.

That is all ten. Now point your assistant at them.

The connector goes into Claude Code, Claude Desktop, Cursor, VS Code, or anything else that speaks remote MCP. It signs you in on the first call.

Connect your assistant