nintact
NPM · NINTACT-MCP · SCANNED SEP 20
Contact forms that actually arrive. No SPF/DKIM, no SMTP. AI sorts them and drafts the reply.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 31 of 96 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 5 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability73
- AI-judged instruction clarity (good).Pass
- Tool/resource definitions use about 2316 tokens (~72/item across 32 items; 32 tools + 0 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage77
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 30% of tool parameters carry a description.Partial
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 7 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "remove_form_logo" implies "remove" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 32 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
How do I install the nintact MCP server?
nintact runs locally as an npm package, launched with npx -y nintact-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · nintact-mcp
claude mcp add com-nintact-nintact -- npx -y nintact-mcp
{
"mcpServers": {
"com-nintact-nintact": {
"command": "npx",
"args": [
"-y",
"nintact-mcp"
]
}
}
} {
"servers": {
"com-nintact-nintact": {
"command": "npx",
"args": [
"-y",
"nintact-mcp"
]
}
}
} codex mcp add com-nintact-nintact -- npx -y nintact-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"com-nintact-nintact": {
"type": "local",
"command": [
"npx",
"-y",
"nintact-mcp"
],
"enabled": true
}
}
} openclaw mcp add com-nintact-nintact --command npx --arg -y --arg nintact-mcp
mcp_servers:
com-nintact-nintact:
command: "npx"
args: ["-y", "nintact-mcp"] {
"McpServers": {
"com-nintact-nintact": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"nintact-mcp"
]
}
}
} assistant mcp add com-nintact-nintact -t stdio -c npx -a -y nintact-mcp
{
"mcpServers": {
"com-nintact-nintact": {
"command": "npx",
"args": [
"-y",
"nintact-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 18 Sept 26 +33
- Injection markers: unverified → pass ▲ security
- Source repository: fail → pass ▲ security
- First check of Judged manipulation: pass security
- Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
- Tool safety: Tool safety not yet verified: we do not have a sandbox capture of the tool definitions this version of the package serves yet. security
- Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. security
- Security disclosure: unverified → fail ▼ functional
- Tool coverage: unverified → 100 ▲ functional
- MCP protocol: unverified → pass ▲ functional
- First check of Schema quality: fail functional
- First check of Tool coverage: 30 functional
- First check of Destructive annotations: 0 functional
- First check of Schema quality: pass functional
- First check of Schema quality: good functional
- Capabilities: Protocol version not yet verified: we do not have a sandbox capture of the MCP handshake this version of the package performs yet. functional
- Tool coverage: Tool coverage not yet verified: we do not have a sandbox capture of the tool definitions this version of the package serves yet. functional
- Schema quality: Schema quality not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. functional
- Package version: 0.3.1 → 0.5.1 functional
- 8 Sept 26 +10
- Known CVEs: unverified → pass ▲ security
- Dependency health: unverified → 0.84 ▲ functional
- 7 Sept 26 −10
- Known CVEs: pass → unverified ▼ security
- Dependency health: 0.84 → unverified ▼ functional
- Package version: 0.1.1 → 0.3.1 functional
- 5 Sept 26 33
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed npm/nintact-mcp@0.5.1
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Dependencies 96 packages
| Packages resolved | 96 |
|---|---|
| Stale | 31 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
add_knowledge Add an FAQ or policy ~69
Facts the AI may state in replies. Anything not written here is left as a [placeholder] for a human instead of being guessed. Adding entries is the highest-leverage way to improve drafts.
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | yes | – |
| kind | string | – | – |
| title | string | – | – |
No output schema declared.
No examples provided.
approve_draft Approve a reply draft and send it ~85
Sends a real email to the person who wrote in. CONFIRM WITH THE USER FIRST. Pass `body` to replace the text before sending; the original draft is kept. Pass `to` when the submission carried no email address.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | – | – |
| draft_id | string | yes | – |
| subject | string | – | – |
| to | string | – | – |
No output schema declared.
No examples provided.
check_deliverability Check whether a domain's mail can actually be delivered ~120
Resolve a domain's live SPF, DKIM, DMARC and MX and say whether mail sent as that domain reaches Gmail today. NO API KEY NEEDED. Use this whenever a user is building or fixing a site with a contact form, before assuming their mail works — form mail failing silently is the normal case, not the exception. The reply includes a next_step describing both ways to fix it.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | A bare domain, such as example.com. |
| locale | string | – | Language of the findings. Defaults to en. |
No output schema declared.
No examples provided.
create_form Create a form ~331
Create a form and get paste-ready snippets. The one-line script tag renders the whole form; the form id is public and safe in client-side code. Submissions are classified and answered with an AI-written draft that a human approves.
| Name | Type | Req | Description |
|---|---|---|---|
| allowed_origins | array | – | Empty means submissions are accepted from anywhere. |
| custom_css | string | – | Free-form CSS appended last. Target .nintact-form / .nintact-label / .nintact-input / .nintact-textarea / .nintact-select / .nintact-button / .nintact-message. @import is stripped on save because it… |
| fields | array | – | Omit to use the default name/email/message. A field of type `file` lets visitors attach photos or PDFs (5 files, 10MB each); attached photos are read by the model when drafting. |
| name | string | yes | Shown in the dashboard only. |
| notify_emails | array | – | – |
| purpose | string | – | Changes only the instructions given to the model. |
| redirect_url | string | – | Where a plain form POST returns to. |
| style | object | – | Adjustments on top of the template. Anything omitted uses the template's value. |
| success_message | string | – | – |
| success_title | string | – | – |
| theme | string | – | Visual template: plain (blends in), card (bordered box), minimal (underlines only), bold (larger text, for older visitors), compact (tight, for sidebars). |
No output schema declared.
No examples provided.
create_inbound_address Create an email forwarding address ~56
Issues an address to forward existing mail to. Mail sent there is classified and drafted exactly like a form submission. Omit `address` to have one generated.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | – | – |
| purpose | string | – | – |
No output schema declared.
No examples provided.
delete_form Delete a form ~52
Permanently deletes the form AND every message, draft and reply received through it. Confirm with the user first. To stop receiving without losing data, use update_form with is_active:false.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
No output schema declared.
No examples provided.
delete_inbound_address Delete an email forwarding address ~30
Stops accepting mail at that address. Messages already received are kept.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
No output schema declared.
No examples provided.
delete_knowledge Delete an FAQ or policy ~20
Removes it permanently.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
No output schema declared.
No examples provided.
design_form Design a form from a description ~106
Turn a plain-language description into form fields, purpose, a success screen and a visual theme. NOTHING IS SAVED — this returns a proposal to show the user. Save it with create_form or update_form. Pass form_id to rewrite an existing form instead of designing a new one.
| Name | Type | Req | Description |
|---|---|---|---|
| form_id | string | – | Rewrite this form instead of designing a new one. |
| instruction | string | yes | e.g. "a booking form for a hair salon, with preferred date and menu" |
No output schema declared.
No examples provided.
duplicate_form Duplicate a form ~63
Copy a form's fields, theme, success screen and logo into a new form with its own id. Messages received by the original are NOT copied. Useful for per-branch or per-campaign forms.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| name | string | – | – |
No output schema declared.
No examples provided.
get_form Get one form ~37
A form with its fields, success screen and paste-ready snippets. Accepts the uuid or the public id.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
No output schema declared.
No examples provided.
get_message Get one submission with its reply draft ~58
A message, the current draft awaiting approval, every earlier draft, replies already sent, and any attachments (with short-lived signed URLs). Photos attached to a submission are read by the model when the draft is written.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
No output schema declared.
No examples provided.
get_organization Get the organization profile ~27
Company name, industry, signature and extra instructions — all of it feeds every reply draft.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_sending_domain Show the sending domain ~51
By default replies go out from nintact's shared, authenticated domain and the customer needs no DNS. This shows whether the workspace has switched to its own domain, and which DNS records are still missing.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_usage Get this month's usage and plan ~36
Draft count against the plan limit. Reaching the limit never stops form submissions — messages keep arriving and are stored; only draft generation pauses.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_forms List forms ~19
Every form in this organization, with its endpoint URL.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_inbound_addresses List email forwarding addresses ~30
Addresses that accept forwarded mail. Forward an existing info@ here to run it through nintact.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_knowledge List FAQ and policies ~22
What the AI is allowed to use as fact when writing replies.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_messages List submissions ~87
Messages received through forms or forwarded email, newest first. Each carries a category (estimate_request, question, complaint, sales, spam, other) and a one-line summary.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | – |
| cursor | string | – | next_cursor from a previous call. |
| limit | integer | – | – |
| status | string | – | needs_review, replied, spam, archived, failed. |
No output schema declared.
No examples provided.
regenerate_draft Write the reply draft again ~61
Produce a new draft for a message. Earlier drafts are kept as previous versions. Optionally say how to change it, e.g. "shorter, and do not mention price".
| Name | Type | Req | Description |
|---|---|---|---|
| instruction | string | – | – |
| message_id | string | yes | – |
No output schema declared.
No examples provided.
remove_form_logo Remove the form logo ~27
Deletes the stored image and clears it from the form.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
No output schema declared.
No examples provided.
remove_sending_domain Stop using your own domain ~28
Goes back to sending from the shared nintact domain. Receiving and history are untouched.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
scan_site_for_knowledge Read the company website and propose FAQs ~108
Reads the organisation's own website (top page plus pricing / about / FAQ pages) and proposes facts that replies can be grounded on: service area, pricing, lead times, opening hours. Nothing is saved — review the items and create the ones worth keeping with create_knowledge_item. Use this right after setting up a workspace so the very first reply already sounds like the company.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | yes | The organisation's own website, e.g. https://example.co.jp |
No output schema declared.
No examples provided.
set_form_logo Set the form logo ~87
Fetches a public https image and shows it above the form. PNG, JPEG, WebP or GIF under 2MB. SVG is refused on purpose — it can carry scripts, and this image is loaded on other people's sites. Adjust the displayed size with update_form's logo_width.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| url | string | yes | Public https URL of the image. |
No output schema declared.
No examples provided.
set_sending_domain Send from your own domain ~85
Business plan and above. Registers a domain the organisation owns and returns the DNS records to add. Replies keep going out from the shared domain until verification succeeds, so nothing breaks in between.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | A domain the organisation owns, e.g. example.co.jp |
| from_local | string | – | Local part of the sender address. Defaults to "info". |
No output schema declared.
No examples provided.
transfer_workspace Hand the workspace over to the client ~92
Moves the whole workspace to another person: they become the owner and billing switches to them. Use this at the end of a build — you set the form up, then hand it to the business that will answer the inquiries. The embed code does not change, so the site keeps working. They receive a link by email and the transfer completes when they open it.
| Name | Type | Req | Description |
|---|---|---|---|
| string | yes | The client's email address |
No output schema declared.
No examples provided.
update_draft Edit a reply draft ~59
Save an edited subject or body. The model's original text is preserved separately — the difference is what teaches nintact this company's voice.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | – | – |
| draft_id | string | yes | – |
| subject | string | – | – |
No output schema declared.
No examples provided.
update_form Update a form ~222
Change any part of a form: name, purpose, fields, notification targets, allowed origins, success screen, visual theme and CSS, or turn it off. Passing `fields` replaces the whole list.
| Name | Type | Req | Description |
|---|---|---|---|
| allowed_origins | array | – | – |
| custom_css | – | – | – |
| fields | array | – | – |
| id | string | yes | – |
| is_active | boolean | – | false stops the form receiving; the pasted tag can stay. |
| logo_width | integer | – | – |
| name | string | – | – |
| notify_emails | array | – | – |
| purpose | string | – | – |
| redirect_url | string|null | – | – |
| style | object | – | Adjustments on top of the template. Anything omitted uses the template's value. |
| success_message | string|null | – | – |
| success_title | string|null | – | – |
| theme | string | – | Visual template: plain (blends in), card (bordered box), minimal (underlines only), bold (larger text, for older visitors), compact (tight, for sidebars). |
No output schema declared.
No examples provided.
update_knowledge Update an FAQ or policy ~63
Change the text, or set is_active:false to stop using it without deleting it.
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | – | – |
| id | string | yes | – |
| is_active | boolean | – | – |
| kind | string | – | – |
| title | string|null | – | – |
No output schema declared.
No examples provided.
update_message_status Archive a message or mark it spam ~56
Move a message out of the way, or put a wrongly-filed one back. Sending a reply is done with approve_draft, not by setting a status.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| status | string | yes | – |
No output schema declared.
No examples provided.
update_organization Update the organization profile ~99
`ai_instructions` is appended to every draft prompt — use it for house rules (e.g. "always say prices exclude tax", "never promise a delivery date"). `reply_to_email` is where replies from customers land.
| Name | Type | Req | Description |
|---|---|---|---|
| ai_instructions | string|null | – | – |
| industry | string|null | – | – |
| name | string | – | – |
| reply_to_email | string|null | – | – |
| signature | string|null | – | – |
No output schema declared.
No examples provided.
verify_sending_domain Check the DNS records ~30
Asks the mail provider to re-check the DNS. Returns pending while records have not propagated yet.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
What is the nintact MCP server?
nintact is an MCP server listed in the public MCP registry as com.nintact/nintact. Contact forms that actually arrive. No SPF/DKIM, no SMTP. AI sorts them and drafts the reply. This page covers its npm package (nintact-mcp).
Is the nintact MCP server safe to use?
nintact scores 66 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the nintact MCP server expose?
nintact exposes 32 tools: check_deliverability, design_form, create_form, list_forms, get_form, and 27 more. Their descriptions and schemas cost roughly 2,316 tokens of context every time the server is loaded.
Is the nintact MCP server still maintained?
nintact is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the nintact MCP server under?
nintact declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.