Skip to content

Novence

by novence.ai · remote · no sign-in to list tools · v0.1.3 · published by ai.novence

Hosted MCP for creating, checking, deploying, and hosting static sites for AI agents.

Deletes · 6Final · 5Changes · 21

50 tools: 6 can delete or cancel things, 5 do something that can't be undone, 21 change things and 18 only read.

Scanned Oct 21, 2026

4 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http novence https://api.novence.ai/mcp

Findings

Matches of fixed checks, with the text they matched.

2 warn2 info
  • The server marks "get_upload_url" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}; The name "get_upload_url" says "get": a word for reading.

    What this check looks for
  • The server marks "get_upload_urls_batch" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}; The name "get_upload_urls_batch" says "get": a word for reading.

    What this check looks for
  • The description mentions "credential".

    Matched text

    description: "...try with payment_authorization (Payment credential) or _meta org.paymentauth/credential. U..."

    What this check looks for
  • The input schema at properties.payment_authorization.description mentions "credential".

    Matched text

    inputSchema.properties.payment_authorization.description: "Payment credential from settling the 402 challenge. Omit o..."

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

50 tools

Deletes or cancels 6Claude Code: deny
  • delete_fileRemove one path from staging.No findings

    Why it is in this group

    • The name "delete_file" says "delete": a word for removing or ending something.
    • The description says "Irreversible".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • delete_form_submissionPermanently delete one form submission (PII).No findings

    Why it is in this group

    • The name "delete_form_submission" says "delete": a word for removing or ending something.
    • The description says "Permanently delete".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Permanently delete one form submission (PII). Does not disable the form — use update_form status=disabled. Irreversible.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • leave_projectLeave a project you were invited to.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • reissue_keyMint a new account nv_ key from email OTP.No findings

    Why it is in this group

    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • remove_project_memberRemove an accepted collaborator and revoke their project API keys.No findings

    Why it is in this group

    • The name "remove_project_member" says "remove": a word for removing or ending something.
    • The description says "Irreversible".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • revoke_project_inviteCancel a pending invite so the token no longer works.No findings

    Why it is in this group

    • The name "revoke_project_invite" says "revoke": a word for removing or ending something.
    • The description says "Irreversible".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
Can't be undone 5Claude Code: ask
  • accept_project_inviteAccept an invite token (from email or invite_project_member in local/dev).No findings

    Why it is in this group

    • The name "accept_project_invite" says "invite": a word for sending, and what is sent cannot be taken back.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • deployPublish the site.No findings

    Why it is in this group

    • The name "deploy" says "deploy": a word for a change.
    • The description's first verb is "publish": a word for a change that another call does not undo.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: true
  • invite_project_memberInvite a collaborator by email.No findings

    Why it is in this group

    • The name "invite_project_member" says "invite": a word for sending, and what is sent cannot be taken back.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • publish_htmlPublish one HTML document (report, dashboard, Claude-style artifact) as index.html and deploy.No findings

    Why it is in this group

    • The name "publish_html" says "publish": a word for a change that another call does not undo.
    Description, as the server wrote it
    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 failed. For multi-file sites use the upload + deploy loop instead. Re-call with the same project_id to replace the live page.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: true
  • resend_verificationEmail a new OTP (also used for reissue_key).No findings

    Why it is in this group

    • The name "resend_verification" says "resend": a word for sending, and what is sent cannot be taken back.
    Description, as the server wrote it
    Email a new OTP (also used for reissue_key). No Bearer key required. Works when already verified.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
Changes things 21Claude Code: ask
  • billing_portalStripe Customer Portal URL for an existing subscriber (manage/cancel).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Stripe Customer Portal URL for an existing subscriber (manage/cancel). Not first-time subscribe — use checkout or mpp_upgrade for that.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: true
  • bootstrapCreate an account + nv_ API key from an email.No findings

    Why it is in this group

    • The description's first verb is "create": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • checkoutReturn a Stripe Checkout URL for Pro ($29) or Scale.No findings

    Why it is in this group

    • The name "checkout" says "checkout": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: true
  • configure_custom_domainAttach a custom domain.No findings

    Why it is in this group

    • The description's first verb is "attach": a word for a change.
    Description, as the server wrote it
    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 apex must serve (ALIAS required; URL-redirect would loop).

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: true
  • confirm_uploadRecord one staged file after the client PUT to the presigned URL from get_upload_url.No findings

    Why it is in this group

    • The name "confirm_upload" says "upload": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • confirm_uploads_batchConfirm many uploads after get_upload_urls_batch PUTs.No findings

    Why it is in this group

    • The name "confirm_uploads_batch" says "upload": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • create_account_sessionMint a short-lived mgmt_ token for a local HTML console (account:read, billing:portal, project:members).No findings

    Why it is in this group

    • The name "create_account_session" says "create": a word for a change.
    Description, as the server wrote it
    Mint a short-lived mgmt_ token for a local HTML console (account:read, billing:portal, project:members). Never put nv_ keys in HTML.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • create_formCreate a Novence form on a project (optional — sites may use Formspree/Web3forms instead).No findings

    Why it is in this group

    • The name "create_form" says "create": a word for a change.
    Description, as the server wrote it
    Create a Novence form on a project (optional — sites may use Formspree/Web3forms instead). Returns submit URLs for edge + public API.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: true
  • create_projectCreate a new hosting project on the caller's account (counts against the caller's project quota).No findings

    Why it is in this group

    • The name "create_project" says "create": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • get_upload_urlGet a presigned PUT URL for one site file.1 finding

    Why it is in this group

    • The name "get_upload_url" says "get": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "get_upload_url" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}; The name "get_upload_url" says "get": a word for reading.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • get_upload_urls_batchPresign many site files at once (max 100).1 finding

    Why it is in this group

    • The name "get_upload_urls_batch" says "get": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "get_upload_urls_batch" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}; The name "get_upload_urls_batch" says "get": a word for reading.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • mpp_upgradeStart or complete Pro/Scale via Machine Payments Protocol.2 findings

    Why it is in this group

    • The description's first verb is "start": a word for a change.

    Findings

    • Info

      The description mentions "credential".

      Matched text

      description: "...try with payment_authorization (Payment credential) or _meta org.paymentauth/credential. U..."

      What this check looks for
    • Info

      The input schema at properties.payment_authorization.description mentions "credential".

      Matched text

      inputSchema.properties.payment_authorization.description: "Payment credential from settling the 402 challenge. Omit o..."

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: true
  • put_site_briefWrite the private webmaster brief (Pro/Scale, max 64 KB).No findings

    Why it is in this group

    • The name "put_site_brief" says "put": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • put_site_dataWrite /data/{name}.json on the live site without a deploy (Pro/Scale).No findings

    Why it is in this group

    • The name "put_site_data" says "put": a word for a change.
    Description, as the server wrote it
    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 JSON and call deploy instead.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • rollbackRe-promote a previous successful snapshot to https://{suffix}.novence.ai without a new upload.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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 Lighthouse or increment deploys_count.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • run_checksStart a Lighthouse, a11y, and link check cycle on the latest deployment.No findings

    Why it is in this group

    • The name "run_checks" says "run": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • set_redirectsWrite /_redirects (Netlify subset) into staging.No findings

    Why it is in this group

    • The name "set_redirects" says "set": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • update_formPatch an existing Novence form (name, slug, fields, notify_email, honeypot, active|disabled).No findings

    Why it is in this group

    • The name "update_form" says "update": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • update_project_memberChange a collaborator's role.No findings

    Why it is in this group

    • The name "update_project_member" says "update": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • update_project_settingsUpdate project name, description, check thresholds, analyticsEnabled (cookieless edge traffic; off by default), shareGateEmails (optional OTP gate on platform hosts only; empty = p…No findings

    Why it is in this group

    • The name "update_project_settings" says "update": a word for a change.
    Description, as the server wrote it
    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, optional data_edit_path; Pro/Scale, off by default).

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • verify_emailConfirm the email OTP (15 min TTL).No findings

    Why it is in this group

    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    Description, as the server wrote it
    Confirm the email OTP (15 min TTL). No Bearer key required. Call after the first live URL, before checkout/mpp_upgrade.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
Only reads 18Claude Code: allow
  • get_accountFull account snapshot: profile, subscription, quotas, usage, projects.No findings

    Why it is in this group

    • The name "get_account" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_account_console_kitJSON kit to write a local novence-console.html: snapshot, HTML template, session mint instructions.No findings

    Why it is in this group

    • The name "get_account_console_kit" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_checks_resultsRead Lighthouse, a11y, and link results for a deployment.No findings

    Why it is in this group

    • The name "get_checks_results" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_deployment_statusPoll publish state after deploy (queued, checking, promoting, live, failed).No findings

    Why it is in this group

    • The name "get_deployment_status" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_domain_statusRead DNS for the project's custom hostname after configure_custom_domain.No findings

    Why it is in this group

    • The name "get_domain_status" says "get": a word for reading.
    Description, as the server wrote it
    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 domain. Read-only.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_fileReturn metadata for one staged path (not file bytes).No findings

    Why it is in this group

    • The name "get_file" says "get": a word for reading.
    Description, as the server wrote it
    Return metadata for one staged path (not file bytes). Use list_files to discover paths; use get_upload_url to replace content. Read-only.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_preview_urlReturn the public site URL.No findings

    Why it is in this group

    • The name "get_preview_url" says "get": a word for reading.
    Description, as the server wrote it
    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-only.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_projectReturn one hosting project (name, suffix, settings, membership).No findings

    Why it is in this group

    • The name "get_project" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_project_analyticsCookieless edge analytics for a hosted site: pageviews, 404s, top pages, referrers, and countries.No findings

    Why it is in this group

    • The name "get_project_analytics" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_project_usagePer-project usage (storage, deploys, check minutes, bandwidth, forms).No findings

    Why it is in this group

    • The name "get_project_usage" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_quotas_and_usageAccount-level plan limits and current consumption (projects, storage, deploys, bandwidth).No findings

    Why it is in this group

    • The name "get_quotas_and_usage" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_site_briefPrivate webmaster brief for this project (Pro/Scale).No findings

    Why it is in this group

    • The name "get_site_brief" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_filesList staged site files for a project (paths, types, sizes).No findings

    Why it is in this group

    • The name "list_files" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_form_submissionsList visitor submissions for one Novence form (paginated).No findings

    Why it is in this group

    • The name "list_form_submissions" says "list": a word for reading.
    Description, as the server wrote it
    List visitor submissions for one Novence form (paginated). Use delete_form_submission to remove PII. Not for update_form schema changes. Read-only.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_formsList Novence forms on a project (ids, slugs, status).No findings

    Why it is in this group

    • The name "list_forms" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_project_membersList members and pending invites for a project.No findings

    Why it is in this group

    • The name "list_project_members" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_projectsList hosting projects the caller owns or is invited to (ids, names, suffixes).No findings

    Why it is in this group

    • The name "list_projects" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_site_eventsWebmaster inbox (Pro/Scale): form.submitted, collection.updated (agent vs owner_edit), check.completed, deploy.live.No findings

    Why it is in this group

    • The name "list_site_events" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 0.1.3. Values in angle brackets are yours to fill in.

claude mcp add --transport http novence https://api.novence.ai/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__novence__list_projects",
      "mcp__novence__get_project",
      "mcp__novence__list_files",
      "mcp__novence__get_file",
      "mcp__novence__get_site_brief",
      "mcp__novence__list_site_events",
      "mcp__novence__get_deployment_status",
      "mcp__novence__get_preview_url",
      "mcp__novence__get_checks_results",
      "mcp__novence__get_domain_status",
      "mcp__novence__list_forms",
      "mcp__novence__list_form_submissions",
      "mcp__novence__get_quotas_and_usage",
      "mcp__novence__get_project_usage",
      "mcp__novence__get_project_analytics",
      "mcp__novence__get_account",
      "mcp__novence__get_account_console_kit",
      "mcp__novence__list_project_members"
    ],
    "ask": [
      "mcp__novence__bootstrap",
      "mcp__novence__verify_email",
      "mcp__novence__resend_verification",
      "mcp__novence__checkout",
      "mcp__novence__mpp_upgrade",
      "mcp__novence__billing_portal",
      "mcp__novence__create_project",
      "mcp__novence__publish_html",
      "mcp__novence__update_project_settings",
      "mcp__novence__get_upload_url",
      "mcp__novence__get_upload_urls_batch",
      "mcp__novence__confirm_upload",
      "mcp__novence__confirm_uploads_batch",
      "mcp__novence__set_redirects",
      "mcp__novence__put_site_data",
      "mcp__novence__put_site_brief",
      "mcp__novence__deploy",
      "mcp__novence__rollback",
      "mcp__novence__run_checks",
      "mcp__novence__configure_custom_domain",
      "mcp__novence__create_form",
      "mcp__novence__update_form",
      "mcp__novence__create_account_session",
      "mcp__novence__invite_project_member",
      "mcp__novence__update_project_member",
      "mcp__novence__accept_project_invite"
    ],
    "deny": [
      "mcp__novence__reissue_key",
      "mcp__novence__delete_file",
      "mcp__novence__delete_form_submission",
      "mcp__novence__remove_project_member",
      "mcp__novence__revoke_project_invite",
      "mcp__novence__leave_project"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as novence. Review it before you use it.