{"name":"ai.novence/mcp","slug":"novence-mcp","title":"Novence","description":"Hosted MCP for creating, checking, deploying, and hosting static sites for AI agents.","url":"https://mcp.market/server/novence-mcp","rating":null,"grade":"A","score":85,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":26,"stars":1,"forks":0,"downloads_week":null,"last_push_at":"2026-09-18T00:51:38.000Z","license":"MIT"},"uptime":{"percent":100,"checks":8,"ok":8,"last_checked_at":"2026-09-21T07:00:52.722Z","last_ok_at":"2026-09-21T07:00:52.722Z","latency_ms":279},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/Novence-ai/mcp","website":"https://novence.ai/mcp","version":"0.1.3","remotes":[{"type":"streamable-http","url":"https://api.novence.ai/mcp","headers":[{"description":"Optional to start. Call bootstrap(email) for an nv_ key, then Bearer nv_… for authenticated tools (checkout / mpp_upgrade need verified email).","isSecret":true,"name":"Authorization"}]}],"packages":[],"tools":[{"name":"accept_project_invite","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"token":{"type":"string","description":"Invite token from the invitation email (or invite_project_member in local/dev)."},"otp":{"type":"string","description":"Email OTP required when the invitee is not yet verified. Optional if already verified."}},"required":["token"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"billing_portal","description":"Stripe Customer Portal URL for an existing subscriber (manage/cancel). Not first-time subscribe — use checkout or mpp_upgrade for that.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"return_url":{"type":"string","format":"uri","description":"Browser URL after leaving the Stripe portal. Optional."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"bootstrap","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"email":{"type":"string","format":"email","description":"Account email. Receives the OTP after the first live URL."}},"required":["email"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"checkout","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"plan":{"type":"string","enum":["pro","scale"],"default":"pro","description":"Paid plan to subscribe. Defaults to pro."},"success_url":{"type":"string","format":"uri","description":"Browser return URL after successful payment. Optional."},"cancel_url":{"type":"string","format":"uri","description":"Browser return URL if the customer cancels Checkout. Optional."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"configure_custom_domain","description":"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).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid","description":"Hosting project UUID from create_project or list_projects."},"hostname":{"type":"string","description":"Custom hostname (e.g. example.com or www.example.com)."},"primary":{"type":"string","enum":["www","apex"],"description":"Which host is canonical. Default www."},"redirect":{"type":"boolean","description":"If true, redirect the non-primary host to the primary. Default true."}},"required":["project_id","hostname"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"confirm_upload","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid","description":"Hosting project UUID from create_project or list_projects."},"path":{"type":"string","description":"Site-relative path (e.g. index.html or css/app.css). No leading slash required."},"content_type":{"type":"string","description":"MIME type for the file. Optional; inferred from the path extension when omitted."}},"required":["project_id","path"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"confirm_uploads_batch","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid","description":"Hosting project UUID from create_project or list_projects."},"files":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"Site-relative path (e.g. index.html or css/app.css). No leading slash required."},"content_type":{"type":"string","description":"MIME type for the file. Optional; inferred from the path extension when omitted."}},"required":["path"],"additionalProperties":false},"description":"Same paths that were presigned and PUT."}},"required":["project_id","files"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"create_account_session","description":"Mint a short-lived mgmt_ token for a local HTML console (account:read, billing:portal, project:members). Never put nv_ keys in HTML.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"create_form","description":"Create a Novence form on a project (optional — sites may use Formspree/Web3forms instead). Returns submit URLs for edge + public API.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid","description":"Hosting project UUID from create_project or list_projects."},"name":{"type":"string","description":"Display name for the form in the account."},"slug":{"type":"string","description":"URL slug. Optional; generated from name if omitted."},"fields":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"HTML field name submitted with the form."},"type":{"type":"string","enum":["text","email","tel","url","textarea","number","select","checkbox","hidden"],"description":"Input type rendered in the hosted form."},"required":{"type":"boolean","description":"Whether the visitor must fill this field."},"label":{"type":"string","description":"Visible label. Defaults to name if omitted."},"options":{"type":"array","items":{"type":"string"},"description":"Choices for type=select."}},"required":["name","type"],"additionalProperties":false},"default":[],"description":"Field definitions. Empty array allowed; add fields later with update_form."},"notify_email":{"anyOf":[{"anyOf":[{"not":{}},{"type":"string","format":"email"}]},{"type":"null"}],"description":"Where to email new submissions. Optional."},"honeypot_field":{"type":"string","description":"Hidden field name used as a spam honeypot. Optional."}},"required":["project_id","name"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"create_project","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string","description":"Human-readable project name."},"description":{"type":"string","description":"Optional notes stored on the project. Not shown on the live site."}},"required":["name"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"delete_file","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid","description":"Hosting project UUID from create_project or list_projects."},"path":{"type":"string","description":"Site-relative path (e.g. index.html or css/app.css). No leading slash required."}},"required":["project_id","path"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"delete_form_submission","description":"Permanently delete one form submission (PII). Does not disable the form — use update_form status=disabled. Irreversible.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid","description":"Hosting project UUID from create_project or list_projects."},"form_id":{"type":"string","format":"uuid","description":"Form UUID from create_form or list_forms."},"submission_id":{"type":"string","format":"uuid","description":"Submission UUID from list_form_submissions."}},"required":["project_id","form_id","submission_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"deploy","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid","description":"Hosting project UUID from create_project or list_projects."},"force":{"type":"boolean","description":"If true, publish even when quality checks would block. Optional; default false."}},"required":["project_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_account","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"get_account_console_kit","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"get_checks_results","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid","description":"Hosting project UUID from create_project or list_projects."},"deployment_id":{"type":"string","format":"uuid","description":"Specific deployment UUID. Omit to use the project's latest deployment."}},"required":["project_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_deployment_status","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid","description":"Hosting project UUID from create_project or list_projects."},"deployment_id":{"type":"string","format":"uuid","description":"Specific deployment UUID. Omit to use the project's latest deployment."}},"required":["project_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_domain_status","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid","description":"Hosting project UUID from create_project or list_projects."}},"required":["project_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_file","description":"Return metadata for one staged path (not file bytes). Use list_files to discover paths; use get_upload_url to replace content. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid","description":"Hosting project UUID from create_project or list_projects."},"path":{"type":"string","description":"Site-relative path (e.g. index.html or css/app.css). No leading slash required."}},"required":["project_id","path"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_preview_url","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid","description":"Hosting project UUID from create_project or list_projects."}},"required":["project_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_project","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid","description":"Hosting project UUID from create_project or list_projects."}},"required":["project_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_project_analytics","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid","description":"Hosting project UUID from create_project or list_projects."},"from":{"type":"string","description":"Inclusive start date (ISO). Optional; default 7 days ago."},"to":{"type":"string","description":"Inclusive end date (ISO). Optional; default today. Range max 90 days."}},"required":["project_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_project_usage","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid","description":"Hosting project UUID from create_project or list_projects."}},"required":["project_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_quotas_and_usage","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"get_upload_url","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid","description":"Hosting project UUID from create_project or list_projects."},"path":{"type":"string","description":"Site-relative path (e.g. index.html or css/app.css). No leading slash required."},"content_type":{"type":"string","description":"MIME type for the file. Optional; inferred from the path extension when omitted."}},"required":["project_id","path"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_upload_urls_batch","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid","description":"Hosting project UUID from create_project or list_projects."},"files":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"Site-relative path (e.g. index.html or css/app.css). No leading slash required."},"content_type":{"type":"string","description":"MIME type for the file. Optional; inferred from the path extension when omitted."}},"required":["path"],"additionalProperties":false},"description":"Files to presign, max 100. Each needs a site-relative path."}},"required":["project_id","files"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"invite_project_member","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid","description":"Hosting project UUID from create_project or list_projects."},"email":{"type":"string","format":"email","description":"Invitee's email. They accept with accept_project_invite."},"role":{"type":"string","enum":["viewer","editor","admin"],"default":"editor","description":"Access level. Default editor. Only the owner can grant admin."}},"required":["project_id","email"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"leave_project","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid","description":"Hosting project UUID from create_project or list_projects."}},"required":["project_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_files","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid","description":"Hosting project UUID from create_project or list_projects."}},"required":["project_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_form_submissions","description":"List visitor submissions for one Novence form (paginated). Use delete_form_submission to remove PII. Not for update_form schema changes. Read-only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid","description":"Hosting project UUID from create_project or list_projects."},"form_id":{"type":"string","format":"uuid","description":"Form UUID from create_form or list_forms."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Page size, 1–100. Optional."},"offset":{"type":"integer","minimum":0,"description":"Number of submissions to skip. Optional; default 0."}},"required":["project_id","form_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_forms","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid","description":"Hosting project UUID from create_project or list_projects."}},"required":["project_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_project_members","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid","description":"Hosting project UUID from create_project or list_projects."}},"required":["project_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_projects","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"mpp_upgrade","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"plan":{"type":"string","enum":["pro","scale"],"default":"pro","description":"Paid plan to start. Defaults to pro."},"payment_authorization":{"type":"string","description":"Payment credential from settling the 402 challenge. Omit on the first call."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"publish_html","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"html":{"type":"string","description":"Full HTML document to publish as /index.html. If you have a local file, read it and pass the contents here."},"title":{"type":"string","description":"Project display name when creating a project. Optional; defaults to artifact."},"project_id":{"type":"string","format":"uuid","description":"Hosting project UUID from create_project or list_projects."},"force":{"type":"boolean","description":"If true, publish even when quality checks would block. Optional; default false."}},"required":["html"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"put_site_data","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid","description":"Hosting project UUID from create_project or list_projects."},"name":{"type":"string","description":"Collection name only (e.g. menu). Becomes /data/menu.json. Letters, digits, _ or -."},"json":{"anyOf":[{"type":"string"},{"type":"object","additionalProperties":{}},{"type":"array","items":{}}],"description":"JSON object/array, or a JSON string of the same."}},"required":["project_id","name","json"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"reissue_key","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"email":{"type":"string","format":"email","description":"Account email that owns the key."},"code":{"type":"string","description":"OTP from resend_verification or the latest verification email."}},"required":["email","code"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"remove_project_member","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid","description":"Hosting project UUID from create_project or list_projects."},"account_id":{"type":"string","format":"uuid","description":"Collaborator account UUID from list_project_members."}},"required":["project_id","account_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"resend_verification","description":"Email a new OTP (also used for reissue_key). No Bearer key required. Works when already verified.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"email":{"type":"string","format":"email","description":"Account email to receive a new OTP."}},"required":["email"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"revoke_project_invite","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid","description":"Hosting project UUID from create_project or list_projects."},"invite_id":{"type":"string","format":"uuid","description":"Pending invite UUID from list_project_members."}},"required":["project_id","invite_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"rollback","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid","description":"Hosting project UUID from create_project or list_projects."},"deployment_id":{"type":"string","format":"uuid","description":"Specific deployment UUID. Omit to use the project's latest deployment."}},"required":["project_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"run_checks","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid","description":"Hosting project UUID from create_project or list_projects."}},"required":["project_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"set_redirects","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid","description":"Hosting project UUID from create_project or list_projects."},"body":{"type":"string","description":"Contents of /_redirects. Example: /*    /index.html   200"}},"required":["project_id","body"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"update_form","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid","description":"Hosting project UUID from create_project or list_projects."},"form_id":{"type":"string","format":"uuid","description":"Form UUID from create_form or list_forms."},"name":{"type":"string","description":"New display name. Omit to leave unchanged."},"slug":{"type":"string","description":"New URL slug. Omit to leave unchanged."},"fields":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"HTML field name submitted with the form."},"type":{"type":"string","enum":["text","email","tel","url","textarea","number","select","checkbox","hidden"],"description":"Input type rendered in the hosted form."},"required":{"type":"boolean","description":"Whether the visitor must fill this field."},"label":{"type":"string","description":"Visible label. Defaults to name if omitted."},"options":{"type":"array","items":{"type":"string"},"description":"Choices for type=select."}},"required":["name","type"],"additionalProperties":false},"description":"Replacement field list when provided. Omit to leave the current schema unchanged."},"notify_email":{"anyOf":[{"anyOf":[{"not":{}},{"type":"string","format":"email"}]},{"type":"null"}],"description":"Notification inbox. Pass null to clear. Omit to leave unchanged."},"honeypot_field":{"type":"string","description":"Spam honeypot field name. Omit to leave unchanged."},"status":{"type":"string","enum":["active","disabled"],"description":"active accepts submissions; disabled rejects them. Omit to leave unchanged."}},"required":["project_id","form_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"update_project_member","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid","description":"Hosting project UUID from create_project or list_projects."},"account_id":{"type":"string","format":"uuid","description":"Collaborator account UUID from list_project_members."},"role":{"type":"string","enum":["viewer","editor","admin"],"description":"New role. Only the owner can set admin."}},"required":["project_id","account_id","role"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"update_project_settings","description":"Update project name, description, check thresholds, analyticsEnabled (cookieless edge traffic; off by default), shareGateEmails (optional OTP gate on platform hosts only; empty = public), or siteMcp (off | read | forms visitor MCP on Pro/Scale).","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","format":"uuid","description":"Hosting project UUID from create_project or list_projects."},"name":{"type":"string","description":"New display name. Omit to leave unchanged."},"description":{"type":"string","description":"New internal notes. Omit to leave unchanged."},"check_thresholds":{"type":"object","additionalProperties":{},"description":"Quality-check threshold overrides. Omit to leave unchanged."},"analytics_enabled":{"type":"boolean","description":"Enable cookieless edge analytics. Required true before get_project_analytics returns totals."},"share_gate_emails":{"type":"array","items":{"type":"string"},"maxItems":5,"description":"Up to 5 client emails. Non-empty turns on email OTP on *.novence.ai and /p/{suffix}/ only. Custom domains stay public. Empty array turns the gate off. Saving the list does not send mail."},"site_mcp":{"type":"string","enum":["off","read","forms"],"description":"Visitor Site MCP. off (default), read (list_pages + get_site_data), or forms (also list_forms + submit_form). Pro/Scale. Cannot enable while share_gate_emails is set. Control plane stays /mcp with nv_."}},"required":["project_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"verify_email","description":"Confirm the email OTP (15 min TTL). No Bearer key required. Call after the first live URL, before checkout/mpp_upgrade.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"email":{"type":"string","format":"email","description":"Same email used with bootstrap."},"code":{"type":"string","description":"One-time code from the verification email (about 15 minutes TTL)."}},"required":["email","code"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}],"scan":{"score":85,"grade":"A","scanned_at":"2026-09-20T11:38:44.299Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T11:38:44.228Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1305ms"]},"poisoning":{"score":15,"max":15,"notes":["47 tool descriptions checked"]},"auth":{"score":8,"max":15,"notes":["API key sent as a header"]},"maintenance":{"score":15,"max":15,"notes":["last push 2 days ago"]},"identity":{"score":6,"max":10,"notes":["namespace and repository owner differ","website matches verified namespace"]}},"findings":[],"inputs":{"probes":[{"url":"https://api.novence.ai/mcp","reachable":true,"authRequired":false,"latencyMs":1305,"serverInfo":{"name":"Novence","version":"0.1.0"}}],"packages":[],"repo":{"found":true,"owner":"Novence-ai","repo":"mcp","archived":false,"pushedAt":"2026-09-18T00:51:38Z","stars":1,"forks":0,"openIssues":0,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/321527009?v=4","ownerCreatedAt":"2026-08-26T19:01:51Z","license":"MIT"},"icon":{"url":"https://novence.ai/apple-icon.png","source":"site","width":1024,"height":1024},"presence":{"stars":1,"forks":0,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-09-18T00:51:38.000Z","score":26}}}},"grade_history":[],"reviews":[]}