- Brand
- Unknown
- Category
- Pending
- Primary Subcategory
- Pending
Integration details
Description
juudd puts an AI-written project online without a second account to sign up for. Ask it to deploy, and you get a live site on your own subdomain with a Postgres database of its own — no build pipeline to configure, no dashboard to learn. Bring a project you already have: juudd accepts the files, serves them, and hands back a URL you can share. Custom domains, permanent versions with one-step rollback, and a plain record of every action taken on your account are included. Built for people who can direct an AI to write a working site but have never deployed one.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Category
- Pending
- Primary Subcategory
- Pending
- Secondary Subcategories
- None listed
- Brand
- Unknown
- Access
- Account required
- First tracked
- 2026-09-30
- Tool count
- 22
- Geography
- US
The broad Category that contains the Primary Subcategory.
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
ChatGPT Plugin discovery is coming soon
ChatGPT can surface a Plugin when it matches a user's request.Your Plugin Discovery Score measures how often yours appears.
No spam. Unsubscribe any time.
What discovery looks like

Get alerts for juudd
Get updates when juudd’s Discoverability Score or category rank changes.
Competitive lineup
22 tools agents can invoke
Declares a secret a site’s functions will read as env.<NAME> — an API key, a webhook signing secret, anything that must not be in deployed code, because deployed code is public — and returns a link where the customer pastes the value themselves. The value never comes through this connection, on purpose: a key in a tool call is a key in this transcript and in every log between here and there, so no tool here takes one. Write the code that reads env.<NAME> and deploy it; the route that needs the key fails until the value is set, and starts working when it is. Names are uppercase with underscores, like STRIPE_SECRET_KEY. DATABASE_URL is not one of these: the database binding is made and carried by deploy_site. The site has to have been deployed at least once before a value can be set, because the value is written by republishing the site’s current version with one more binding. Once set, every later deploy carries the value forward without anyone reading it. Tell the customer which name to set and where.
request_secret
Builds a project a framework needs building — React or Vue with Vite, Next.js with output: 'export', Nuxt — from its source, on this platform, and stores the result as a version of the site; publish_deploy then puts it live. Send the source: package.json, the framework config, src/, app/, pages/, public/, index.html — text as text, images as base64. Nothing is installed from package.json: the build runs against a toolchain this platform pins, and a dependency outside it is refused by name with the whole list in the reply. Server code is not built: files under functions/ pass through as plain-JavaScript functions, by the rules deploy_site states. The reply names a job; a quick build finishes inside the reply, a longer one says to call build_status. Source is bounded at 4 MB as sent; one build at a time per account; at most 3 a minute. The first build for an account takes a minute or two longer while the toolchain is installed. For a project that is already built, or a site that is already plain HTML, this is the wrong tool: request_upload and deploy_site respectively.
start_build
Reports a build start_build started: still running, done with the stored version, or failed with the last lines the build printed. A build takes ten seconds to a few minutes; call this once, wait, and call it again rather than looping. When it is done, publish_deploy with the site puts the version live.
build_status
Answers where a claimed domain has got to, and moves it forward when it is ready. This is the tool that answers questions about a domain — claim_domain acts, this one reports, and calling claim_domain twice will not help. Call it after the customer says they have added the DNS record. Call it again later if the answer is still pending; a check costs nothing but does not make DNS propagate faster, so leave real time between calls rather than looping. Two separate things have to be true before a domain serves: the domain has to be proven to point here, and a certificate has to be issued for it. This reports both, because a domain that resolves without a certificate fails in the browser with a security warning rather than a 404. When both are done the domain starts serving within moments, not instantly — a first request that misses is worth one retry before it means anything. If the customer later points their DNS somewhere else, nothing tells us — this tool is how that is found, and it stops the domain serving when it finds it.
domain_status
Creates a Postgres database for a site. Use apply_sql to create tables in it and read them back. One per site: calling again returns the existing one rather than making a second. It does not return a connection string and cannot: the owner credential is shown to the person in the browser panel, not handed to an assistant. You do not need it — apply_sql already runs against this database, and the site’s own functions are given a separate, restricted connection string automatically at deploy time as env.DATABASE_URL. Tell the customer where it is rather than asking them for it. Every table needs row-level security before the site can be deployed against it, and deploy_site says exactly what to run if any is missing.
create_database
Says whether a site has a database and whether this platform still holds it.
database_status
Stores a recoverable bundle of a site — files, subdomain and version — in the artifact store, then publishes it and returns the live URL. On a control plane with no deploy target configured it stores the bundle and publishes nothing; the reply says which of the two happened, and this tool is offered either way because storing a recoverable bundle is worth doing on its own. Give each file either text or base64: text for HTML, CSS and JavaScript, base64 for images, fonts, icons and anything else that is not text. Add `functions` for server-side code — a file at functions/api/orders.js answers /api/orders, and every other URL is served from `files`. A bundle is bounded at 4 MB of content as sent (text plus base64 together); a larger site is refused with nothing changed, so keep images small or fetch big assets from elsewhere. One account may deploy at most 12 times a minute. A project built by a framework — React or Vue with Vite, Next.js, Nuxt, SvelteKit, Astro — is deployed as its build output, built where the code is; nothing is built here. For that, call request_upload instead of carrying the output through this call: it returns a link and a script that posts the built folder.
deploy_site
Returns a one-time link and a short Node script that posts a built folder to it, for a project a framework built — React or Vue with Vite, Next.js, Nuxt, SvelteKit, Astro. Nothing is built here: build the project where its code is, then send the output folder (dist, out, .output/public). The post stores a version under this site exactly as deploy_site would; it publishes nothing, so call publish_deploy afterwards to put it live. Use this instead of deploy_site whenever the files were produced by a build rather than written by you — a built site is too large to carry through a tool call. The same bound applies: 4 MB as sent, text and base64 together. Server code is not part of a build: framework API routes and server rendering do not come across, and plain-JavaScript functions under functions/ are sent beside the folder with --functions. The link works once, for 15 minutes; a failed post spends it, and calling again gives a fresh one. At most 12 a minute.
request_upload
Writes a connection string onto a deployed site, as env.DATABASE_URL. It exists for one situation and refuses the rest: after transfer_database the customer owns the database, and the only copy of the credential their site is using is a write-only binding on the site itself — this platform cannot read it, copy it or work it out. Change that password and the site loses its database with nothing anywhere able to put it back. This is what puts it back. While the database is still held by this platform there is nothing to do here, and it will say so: deploy_site provisions a restricted role that row-level security applies to and binds it for you, whereas a hand-written string goes around that role — the owner’s above all, which reads and writes every row past every policy. If a site whose database is still held here cannot reach it because that role was dropped or re-passworded by hand, reset_database_credential is the repair instead: it rebuilds the role and rebinds the site, without anyone choosing what credential a public script carries. This tool takes effect by republishing the site’s current stored version: the same files, unchanged, with a different binding. The value is not stored, not read back and not tested, so check it by loading the site. Copies of the site may keep serving with the previous credential after this returns, for a length of time nothing here can promise, so do not drop the old password at the database’s end until the site has been answering on the new one.
set_database_url
Returns a one-time URL that moves the database into the customer’s own account, after which this platform loses all access to it. 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.
transfer_database
Returns a greeting and the account this connection is acting as. Proves the connection works end to end, and says which account owns anything deployed through it.
hello
Lists the secret names a site’s functions can read as env.<NAME>, and whether each has been given a value yet. Never a value: this platform writes them onto the site and cannot read them back. Use it to check whether a key the customer was asked to set has arrived before debugging the route that reads it.
list_secrets
Lists the sites this account owns, or every stored version of one of them, newest last. This is the same vocabulary a disaster recovery uses.
list_deploys
Lists what this account has been told no about, newest first, each in the exact words the caller was given. Covers every site the account owns and the acts that concern no site — a refused deploy, a site owned by somebody else, SQL against a database that has been handed over. Refusals only: what succeeded is not here, because list_deploys already derives it. Read this before retrying something that failed in an earlier conversation.
list_refusals
Claims a domain the customer already owns for one of their sites, and returns the exact DNS record they must create. This platform does not register domains; the customer brings one they hold. A person has to do the middle step. If their DNS provider supports it, this returns a link they click to approve the record at their own provider; otherwise it returns the CNAME for them to add by hand. Either way, hand it over, wait for them, then call domain_status — do not call this tool again and do not poll in a loop. DNS takes as long as their provider’s TTLs take, which is minutes to hours and is nothing either of us controls; "not ready yet" for a long time is normal. The site keeps its existing <site> address as well. Both serve the same site, neither redirects to the other. One domain belongs to one site: if another site already claims it, this says so and changes nothing. www.example.com and example.com are separate claims. Two domains cannot be onboarded, and it is cheaper to say so now than to let a customer wait for a validation that never completes. A bare apex (example.com, no www) works only if the customer’s DNS provider flattens CNAMEs or offers ALIAS/ANAME records — otherwise use www.example.com and let them redirect the apex at their own provider. And a domain already served through another CDN cannot be validated at all while that CDN is in front of it.
claim_domain
Publishes a version that is already in the artifact store. Rolling back is publishing an earlier version — the same code path, which is also what a disaster recovery runs.
publish_deploy
Reads back what was deployed: the file list of a stored version, or the contents of one file. This is how a site written in an earlier conversation is changed in a later one — call it with no `path` to see what is there, again with a `path` for each file to change, then deploy_site with the edited files. Read before editing: a deploy replaces a version rather than patching it, so a file left out of the next deploy_site is a file removed from the site. Text comes back as text; binary files are listed with their size and fetched from the site itself, not through here.
read_site
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. That password exists in exactly one place, a write-only binding on the deployed site, and this platform cannot read it back, so nothing is recoverable and nothing needs to be: the role is created again in SQL 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 — the same files, unchanged, with a different binding. Use it only for a database still held here. After transfer_database the customer owns the database and only they can make a credential, so set_database_url is the tool instead; for a site that was never bound, an ordinary deploy_site provisions and binds without rotating anything. Both of those are refused here, by name. Be sure of the diagnosis before calling: nothing on this side can tell a wrong password from a right one, because no catalog holds the password the site is carrying and this platform keeps no copy — so a site failing for some other reason will be rotated for nothing, and a rotation takes a working site down. A dropped role and a role without LOGIN are the exception and need no call at all: a deploy sees those in pg_roles and repairs them on its own. This is a rotation, so the old password stops working immediately while copies of the site may keep serving with it for a length of time nothing here can promise. The reply says what the database looked like before it ran.
reset_database_credential
Runs SQL against a site’s database as the owner — this is how tables, policies and seed data get made, and how you read them back. Every statement runs in one transaction: if any of them fails, none of them applied. Create each table and its row-level security policy 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.
apply_sql
Gives up a claimed domain: it stops serving immediately, the registration is removed, and the domain becomes claimable again — by anyone, including another account. Use it when a customer is moving a domain to a different site of theirs, or away from this platform entirely. It removes the mapping and nothing else: the site, its files, its deploy history and its database are untouched, and the site keeps its original address. Nothing is deleted at the customer’s registrar either — their DNS record still points here until they change it, and it will stop resolving to anything useful until they do, so tell them to remove it.
release_domain
Takes a site off the air: visitors stop getting it, immediately. Nothing is deleted — every version stays in the artifact store, the database is untouched, the site id stays yours, and publish_deploy puts it back on the version that was live. Use it when the customer wants their site off the internet: a shop that has closed, a page that went out wrong, a launch that has to wait. Deploying a page that says "closed" is a different thing, because the old page is still reachable to anyone holding the URL. Two things do not survive: the values of any secrets, which live on the script this removes and which this platform cannot read or copy, so they have to be set again before the site works properly afterwards — the reply lists them by name; and, on a site whose database was handed over or set by hand, the only copy of its connection string, which is why that one case refuses unless you pass accept_credential_loss. A custom domain keeps pointing here and answers 404 while the site is off. Tell the customer what stops and what it takes to come back, before calling this.
unpublish_site
Lists which of this account’s sites have failed in front of visitors recently, or, given a site, which routes failed, when, and how many times — the runtime’s own verdict: 503 means the request was stopped at a resource limit, 500 means the code threw or made too many outbound requests, and those two cannot be told apart from here. It is not what the function printed; there is still no way to read that, so write functions to answer with the thing that went wrong. The record is best-effort and short-lived, and the result says how far back it reaches. Read this before read_site when a customer says a route stopped working, and after a deploy to see whether it is still failing.
site_errors
How do I improve a ChatGPT Plugin's discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.