# nintact (npm · nintact-mcp)

Contact forms that actually arrive. No SPF/DKIM, no SMTP. AI sorts them and drafts the reply.

- Trust score: 66/100 (medium)
- Change this week: +33
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-20

## Components

- npm · `nintact-mcp`: 66/100 (this document), [markdown](https://verifymcp.io/servers/com-nintact-nintact/nintact-mcp.md), [page](https://verifymcp.io/servers/com-nintact-nintact/nintact-mcp)

## Channel facts

- Registry: `npm`
- Package: `nintact-mcp`
- Version: `0.5.1`
- Transport: `stdio`

## Trust breakdown

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. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-20.

- **Supply Chain Security**: 98/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - 31 of 96 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 5 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 73/100
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 2316 tokens (~72/item across 32 items; 32 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 77/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 30% of tool parameters carry a description.
- **Tool Safety**: 75/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - 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.
  - An AI judge read all 32 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**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.

## Install

### 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.

### Claude

```bash
claude mcp add com-nintact-nintact -- npx -y nintact-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "com-nintact-nintact": {
      "command": "npx",
      "args": [
        "-y",
        "nintact-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "com-nintact-nintact": {
      "command": "npx",
      "args": [
        "-y",
        "nintact-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add com-nintact-nintact -- npx -y nintact-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-nintact-nintact": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "nintact-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-nintact-nintact --command npx --arg -y --arg nintact-mcp
```

### Hermes

```yaml
mcp_servers:
  com-nintact-nintact:
    command: "npx"
    args: ["-y", "nintact-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "com-nintact-nintact": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "nintact-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add com-nintact-nintact -t stdio -c npx -a -y nintact-mcp
```

### Other

```json
{
  "mcpServers": {
    "com-nintact-nintact": {
      "command": "npx",
      "args": [
        "-y",
        "nintact-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-18 (score 66, +33)

- [security improvement] Injection markers: unverified → pass
- [security improvement] 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.
- [functional regression] Security disclosure: unverified → fail
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] 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

### 2026-09-08 (score 33, +10)

- [security improvement] Known CVEs: unverified → pass
- [functional improvement] Dependency health: unverified → 0.84

### 2026-09-07 (score 23, −10)

- [security regression] Known CVEs: pass → unverified
- [functional regression] Dependency health: 0.84 → unverified
- [functional] Package version: 0.1.1 → 0.3.1

### 2026-09-05 (score 33)

First indexed and scored.

## MCP tools (32)

### `check_deliverability` (~120 tokens)

Check whether a domain's mail can actually be delivered

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.

Input parameters:

- `domain` (string, required): A bare domain, such as example.com.
- `locale` (string): Language of the findings. Defaults to en.

### `design_form` (~106 tokens)

Design a form from a description

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.

Input parameters:

- `form_id` (string): Rewrite this form instead of designing a new one.
- `instruction` (string, required): e.g. "a booking form for a hair salon, with preferred date and menu"

### `create_form` (~331 tokens)

Create a form

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.

Input parameters:

- `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, required): 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).

### `list_forms` (~19 tokens)

List forms

Every form in this organization, with its endpoint URL.

### `get_form` (~37 tokens)

Get one form

A form with its fields, success screen and paste-ready snippets. Accepts the uuid or the public id.

Input parameters:

- `id` (string, required)

### `update_form` (~222 tokens)

Update a form

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.

Input parameters:

- `allowed_origins` (array)
- `custom_css`
- `fields` (array)
- `id` (string, required)
- `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).

### `duplicate_form` (~63 tokens)

Duplicate a form

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.

Input parameters:

- `id` (string, required)
- `name` (string)

### `set_form_logo` (~87 tokens)

Set the form logo

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.

Input parameters:

- `id` (string, required)
- `url` (string, required): Public https URL of the image.

### `remove_form_logo` (~27 tokens)

Remove the form logo

Deletes the stored image and clears it from the form.

Input parameters:

- `id` (string, required)

### `delete_form` (~52 tokens)

Delete a form

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.

Input parameters:

- `id` (string, required)

### `list_messages` (~87 tokens)

List submissions

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.

Input parameters:

- `category` (string)
- `cursor` (string): next_cursor from a previous call.
- `limit` (integer)
- `status` (string): needs_review, replied, spam, archived, failed.

### `get_message` (~58 tokens)

Get one submission with its reply draft

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.

Input parameters:

- `id` (string, required)

### `update_message_status` (~56 tokens)

Archive a message or mark it spam

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.

Input parameters:

- `id` (string, required)
- `status` (string, required)

### `regenerate_draft` (~61 tokens)

Write the reply draft again

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".

Input parameters:

- `instruction` (string)
- `message_id` (string, required)

### `update_draft` (~59 tokens)

Edit a reply draft

Save an edited subject or body. The model's original text is preserved separately — the difference is what teaches nintact this company's voice.

Input parameters:

- `body` (string)
- `draft_id` (string, required)
- `subject` (string)

### `approve_draft` (~85 tokens)

Approve a reply draft and send it

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.

Input parameters:

- `body` (string)
- `draft_id` (string, required)
- `subject` (string)
- `to` (string)

### `list_knowledge` (~22 tokens)

List FAQ and policies

What the AI is allowed to use as fact when writing replies.

### `add_knowledge` (~69 tokens)

Add an FAQ or policy

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.

Input parameters:

- `content` (string, required)
- `kind` (string)
- `title` (string)

### `update_knowledge` (~63 tokens)

Update an FAQ or policy

Change the text, or set is_active:false to stop using it without deleting it.

Input parameters:

- `content` (string)
- `id` (string, required)
- `is_active` (boolean)
- `kind` (string)
- `title` (string|null)

### `delete_knowledge` (~20 tokens)

Delete an FAQ or policy

Removes it permanently.

Input parameters:

- `id` (string, required)

### `get_organization` (~27 tokens)

Get the organization profile

Company name, industry, signature and extra instructions — all of it feeds every reply draft.

### `update_organization` (~99 tokens)

Update the organization profile

\`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.

Input parameters:

- `ai_instructions` (string|null)
- `industry` (string|null)
- `name` (string)
- `reply_to_email` (string|null)
- `signature` (string|null)

### `list_inbound_addresses` (~30 tokens)

List email forwarding addresses

Addresses that accept forwarded mail. Forward an existing info@ here to run it through nintact.

### `create_inbound_address` (~56 tokens)

Create an email forwarding address

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.

Input parameters:

- `address` (string)
- `purpose` (string)

### `transfer_workspace` (~92 tokens)

Hand the workspace over to the client

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.

Input parameters:

- `email` (string, required): The client's email address

### `scan_site_for_knowledge` (~108 tokens)

Read the company website and propose FAQs

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.

Input parameters:

- `url` (string, required): The organisation's own website, e.g. https://example.co.jp

### `get_sending_domain` (~51 tokens)

Show the sending domain

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.

### `set_sending_domain` (~85 tokens)

Send from your own domain

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.

Input parameters:

- `domain` (string, required): A domain the organisation owns, e.g. example.co.jp
- `from_local` (string): Local part of the sender address. Defaults to "info".

### `verify_sending_domain` (~30 tokens)

Check the DNS records

Asks the mail provider to re-check the DNS. Returns pending while records have not propagated yet.

### `remove_sending_domain` (~28 tokens)

Stop using your own domain

Goes back to sending from the shared nintact domain. Receiving and history are untouched.

### `delete_inbound_address` (~30 tokens)

Delete an email forwarding address

Stops accepting mail at that address. Messages already received are kept.

Input parameters:

- `id` (string, required)

### `get_usage` (~36 tokens)

Get this month's usage and plan

Draft count against the plan limit. Reaching the limit never stops form submissions — messages keep arriving and are stored; only draft generation pauses.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/com-nintact-nintact/nintact-mcp#diagnostics

## Score history

- 2026-09-20: 66
- 2026-09-19: 66
- 2026-09-18: 66
- 2026-09-17: 33
- 2026-09-16: 33
- 2026-09-15: 33
- 2026-09-14: 33
- 2026-09-13: 33
- 2026-09-12: 33
- 2026-09-11: 33
- 2026-09-10: 33
- 2026-09-09: 33
- 2026-09-08: 33
- 2026-09-07: 23
- 2026-09-06: 33
- 2026-09-05: 33

## Common questions

### 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.

## Links

- npm package: https://www.npmjs.com/package/nintact-mcp
- Socket report: https://socket.dev/npm/package/nintact-mcp
- Repository: https://github.com/homareyoshizaki/nintact-mcp
- Website: https://nintact.com/
- Changelog RSS feed: https://verifymcp.io/servers/com-nintact-nintact/nintact-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-nintact-nintact/nintact-mcp.json
- HTML version of this page: https://verifymcp.io/servers/com-nintact-nintact/nintact-mcp
