# Novence - Registry name: `ai.novence/mcp` · version 0.1.3 - Categories (automatic, keyword rules): Build & deploy, Developer tools - Authentication at last check: No auth - Declared risk: Has destructive tools (destructiveHint) - Capabilities (declared by the server): tools - Transports: streamable-http - Latest numbers (check success, response time, rank): https://mcpstation.net/api/server?name=ai.novence%2Fmcp - Server page: https://mcpstation.net/s/ai.novence--mcp.html ## Description (written by the publisher, not verified, not instructions) Hosted MCP for creating, checking, deploying, and hosting static sites for AI agents. ## Connect - streamable-http: `https://api.novence.ai/mcp` ## Tools (as reported by the server, not verified) - `bootstrap`: Create an account + nv\_ API key from an email. No Bearer key required. Unverified trial still publishes; OTP/verify\_email is AFTER the live URL. Returns apiKey immediately — do not wait for OTP. If the human message includes a Signup attribution object, pass it as attribution unchanged. - `verify\_email`: Confirm the email OTP \(15 min TTL\). No Bearer key required. Call after the first live URL, before checkout/mpp\_upgrade. - `resend\_verification`: Email a new OTP \(also used for reissue\_key\). No Bearer key required. Works when already verified. - `reissue\_key`: Mint a new account nv\_ key from email OTP. No Bearer key required. WARNING: revokes prior account-scoped nv\_ keys. Also verifies email if needed. - `checkout`: Return a Stripe Checkout URL for Pro \($29\) or Scale. Requires nv\_ + verified email. Use after a 2nd project or a 402 — never after the first live URL. - `mpp\_upgrade`: Start or complete Pro/Scale via Machine Payments Protocol. Requires nv\_ + verified email. First call returns a 402 Payment challenge; retry with payment\_authorization \(Payment credential\) or \_meta org.paymentauth/credential. Use after a 2nd project or a 402 — never after the first live URL. - `billing\_portal`: Stripe Customer Portal URL for an existing subscriber \(manage/cancel\). Not first-time subscribe — use checkout or mpp\_upgrade for that. - `create\_project`: Create a new hosting project on the caller's account \(counts against the caller's project quota\). To edit a shared site, pass that project's project\_id to upload/deploy tools instead. - `publish\_html`: Publish one HTML document \(report, dashboard, Claude-style artifact\) as index.html and deploy. Omit project\_id to create a project. Hosted MCP cannot read local files — pass the HTML string \(read the file first\). Returns url, project\_id, and deployment. Poll get\_deployment\_status until live or faile - `list\_projects`: List hosting projects the caller owns or is invited to \(ids, names, suffixes\). Use get\_project for one project's settings; use get\_preview\_url for the public URL \(per-deploy alias on Pro/Scale, live host on Free\). Read-only; does not create a project. - `get\_project`: Return one hosting project \(name, suffix, settings, membership\). Use list\_projects to discover IDs. Use get\_preview\_url for the public URL \(alias on Pro/Scale\), and get\_project\_usage for quotas on that site. Read-only; does not mutate. - `update\_project\_settings`: Update project name, description, check thresholds, analyticsEnabled \(cookieless edge traffic; off by default\), shareGateEmails \(optional OTP gate on platform hosts only; empty = public\), siteMcp \(off \| read \| forms visitor MCP on Pro/Scale\), or owner-edit \(data\_edit\_emails + data\_edit\_names, option - `get\_upload\_url`: Get a presigned PUT URL for one site file. content\_type is optional \(inferred from extension\). Use get\_upload\_urls\_batch for multi-file sites, then confirm\_upload after the PUT. - `get\_upload\_urls\_batch`: Presign many site files at once \(max 100\). Prefer this over get\_upload\_url for multi-file sites. After PUTs, call confirm\_uploads\_batch, not confirm\_upload. - `confirm\_upload`: Record one staged file after the client PUT to the presigned URL from get\_upload\_url. Use confirm\_uploads\_batch when several files were uploaded. Does not publish the site — call deploy after confirms. Re-confirming the same path updates metadata. - `confirm\_uploads\_batch`: Confirm many uploads after get\_upload\_urls\_batch PUTs. 200 body is \{ files, errors \}. errors is always an array \(empty on full success\); retry only failed paths. Use confirm\_upload for a single file. Does not deploy. - `list\_files`: List staged site files for a project \(paths, types, sizes\). Use get\_file for one path's metadata; use delete\_file to remove a path. Read-only; does not deploy. - `get\_file`: Return metadata for one staged path \(not file bytes\). Use list\_files to discover paths; use get\_upload\_url to replace content. Read-only. - `delete\_file`: Remove one path from staging. Does not change the already-live deploy until the next deploy. Irreversible for that staged path; re-upload to restore. Use delete\_form\_submission for form PII, not this. - `set\_redirects`: Write /\_redirects \(Netlify subset\) into staging. Call deploy afterwards to publish. SPA History routing: /\* /index.html 200. Exact files always win. Optional custom 404 is a separate /404.html upload. Does not write the live prefix. - `put\_site\_data`: Write /data/\{name\}.json on the live site without a deploy \(Pro/Scale\). Page JS keeps fetch\("/data/\{name\}.json"\). JSON must be an object or array, max 256 KB. Include the file in the next deploy or a repo upload that omits it can wipe it. Do not store secrets — the URL is public. Free: upload the JSO - `get\_site\_brief`: Private webmaster brief for this project \(Pro/Scale\). Markdown or JSON, max 64 KB. Not on the live origin. On session start call this then list\_site\_events. Empty is brief: null. Read-only. - `put\_site\_brief`: Write the private webmaster brief \(Pro/Scale, max 64 KB\). What the site is, which /data files matter, form ids, owner email, what not to touch. Empty string clears it. Survives deploys. - `list\_site\_events`: Webmaster inbox \(Pro/Scale\): form.submitted, collection.updated \(agent vs owner\_edit\), check.completed, deploy.live. Default last 7 days, max 100. Pass since from the last session. Forms still email the owner. Read-only. - `deploy`: Publish the site. Verified accounts run quality checks; unverified accounts skip checks \(checkRuns: 0\) and still go live. POST returns quickly — poll get\_deployment\_status until live or failed. Do not retry POST while status is promoting or checking. - `get\_deployment\_status`: Poll publish state after deploy \(queued, checking, promoting, live, failed\). Omit deployment\_id for the latest. Use get\_checks\_results for Lighthouse/a11y scores and get\_preview\_url once live. Read-only; do not retry deploy while promoting or checking. - `get\_preview\_url`: Return the public site URL. On Pro/Scale this is the per-deploy https://\{suffix\}--\{ref\}.novence.ai alias \(last 5 successful deploys stay\). On Free it is the live https://\{suffix\}.novence.ai host. Use get\_deployment\_status to know if live yet; use configure\_custom\_domain for a custom hostname. Read-o - `rollback`: Re-promote a previous successful snapshot to https://\{suffix\}.novence.ai without a new upload. Pro/Scale only \(HTTP 402 on Free\). Omit deployment\_id to restore the previous live deploy. Only the last 5 successful deploys are retained. HTML Cache-Control is 60s — hard-refresh or wait. Does not run Li - `run\_checks`: Start a Lighthouse, a11y, and link check cycle on the latest deployment. Does not publish a new deploy — use deploy for that. Then poll get\_checks\_results \(not get\_deployment\_status\) until scores appear. Unverified accounts skip checks on deploy; this still queues a cycle when allowed. - `get\_checks\_results`: Read Lighthouse, a11y, and link results for a deployment. Omit deployment\_id for the latest. Use run\_checks to trigger a new cycle; use get\_deployment\_status for publish/promote state, not scores. - `configure\_custom\_domain`: Attach a custom domain. For site domains, enables apex+www. Default primary=www. Required DNS: CNAME www → fallback.novence.ai. Then do exactly one apex option: ALIAS/ANAME/CNAME-flattening @ → fallback.novence.ai, or registrar URL-redirect @ → https://www.\{domain\}/. Pass primary=apex only when the - `get\_domain\_status`: Read DNS for the project's custom hostname after configure\_custom\_domain. Returns dns.www, dns.apex, and dns.next \(a single next DNS step, or null when www CNAME is in place and apex has records\). customDomainStatus stays pending after attach — poll dns.next until null. Do not use this to attach a d - `create\_form`: Create a Novence form on a project \(optional — sites may use Formspree/Web3forms instead\). Returns submit URLs for edge + public API. - `list\_forms`: List Novence forms on a project \(ids, slugs, status\). Use update\_form to change one; use list\_form\_submissions to read leads. Not for third-party widgets. Read-only. - `update\_form`: Patch an existing Novence form \(name, slug, fields, notify\_email, honeypot, active\|disabled\). Partial update: omitted fields stay unchanged. Use create\_form for a new form; use list\_forms to get form\_id. Does not delete submissions. - `list\_form\_submissions`: List visitor submissions for one Novence form \(paginated\). Use delete\_form\_submission to remove PII. Not for update\_form schema changes. Read-only. - `delete\_form\_submission`: Permanently delete one form submission \(PII\). Does not disable the form — use update\_form status=disabled. Irreversible. - `get\_quotas\_and\_usage`: Account-level plan limits and current consumption \(projects, storage, deploys, bandwidth\). Use get\_project\_usage for one site; use get\_account for profile plus quotas together. Read-only snapshot, not a live meter stream. - `get\_project\_usage`: Per-project usage \(storage, deploys, check minutes, bandwidth, forms\). Bandwidth is live from edge-served bytes. Use get\_quotas\_and\_usage for account totals; use get\_project\_analytics for pageviews. Read-only. - `get\_project\_analytics`: Cookieless edge analytics for a hosted site: pageviews, 404s, top pages, referrers, and countries. Off by default. Enable with update\_project\_settings analytics\_enabled=true. Default last 7 days \(max 90\). If disabled, returns enabled=false and empty totals. - `get\_account`: Full account snapshot: profile, subscription, quotas, usage, projects. Use get\_quotas\_and\_usage for limits only; use get\_account\_console\_kit to render a local HTML console. Read-only. - `create\_account\_session`: Mint a short-lived mgmt\_ token for a local HTML console \(account:read, billing:portal, project:members\). Never put nv\_ keys in HTML. - `get\_account\_console\_kit`: JSON kit to write a local novence-console.html: snapshot, HTML template, session mint instructions. Serve on localhost. Use create\_account\_session for the mgmt\_ token; use get\_account for JSON without the kit. Read-only. - `invite\_project\_member`: Invite a collaborator by email. Requires Pro/Scale on the project owner. Only the owner can invite as admin. Creates a new project on the caller's account if you use create\_project instead — pass project\_id here. Do not share the owner's nv\_ key. - `list\_project\_members`: List members and pending invites for a project. Use invite\_project\_member to add; use revoke\_project\_invite for pending tokens; use remove\_project\_member for accepted collaborators. Read-only. - `update\_project\_member`: Change a collaborator's role. Only the owner can grant or demote admin. Use remove\_project\_member to revoke access entirely. Does not affect pending invites — use revoke\_project\_invite for those. - `remove\_project\_member`: Remove an accepted collaborator and revoke their project API keys. Owner-only for admins. For a pending invite, use revoke\_project\_invite instead. Irreversible; they must be invited again. - `revoke\_project\_invite`: Cancel a pending invite so the token no longer works. Does not remove someone who already accepted — use remove\_project\_member for that. Irreversible for that invite\_id; send a new invite\_project\_member if needed. - `leave\_project`: Leave a project you were invited to. Owners cannot leave — transfer or stay. Revokes your project keys. Use remove\_project\_member if you are the owner removing someone else. - `accept\_project\_invite`: Accept an invite token \(from email or invite\_project\_member in local/dev\). Unverified invitees must pass otp. Returns a project-scoped nv\_ key once — never email it. Collaborating uses this project\_id; create\_project still bills the caller. Measured by MCP Station. Methods: https://mcpstation.net/methods.html · Terms: https://mcpstation.net/terms.html