Biz-Email Docs
Integrations

AI assistant integration (MCP)

Let an MCP-capable AI assistant add contacts to Biz-Email.

Biz-Email exposes an MCP (Model Context Protocol) server. Connect an MCP-capable AI assistant and a request like "import the contacts from this business card" can add them to Biz-Email for you.

A request from you passes through an AI assistant and reaches Biz-Email's contact data only after OAuth consent; the path that skips authorization is blocked

Connect

The endpoint is:

https://www.biz-email-powered.site/api/mcp

With Claude Code, for example, register it like this:

claude mcp add --transport http biz-email https://www.biz-email-powered.site/api/mcp

Registering alone grants no access. The first time the assistant tries to use a tool, you are taken through sign-in and consent.

How authorization works

The assistant acts as you, and only within what you allowed. Your password is never given to the assistant.

Nothing beyond what you consented to

A call that lacks the permissions shown on the consent screen is rejected even with a valid sign-in. Nothing beyond importing contacts and listing your organizations is possible.

What it can do

ToolWhat it does
contacts_importImport contacts in bulk (up to 100 per call)
organizations_listList the organizations you belong to, oldest membership first

Neither modifies nor deletes existing contacts. Addresses that already exist are skipped as duplicates, so repeating the same request does not add them twice.

When contacts are imported, the basis for emailing them is always recorded alongside. Importing without a basis is not possible.

RecordedContent
BasisThe recipient opted in, or a legal exception that allows sending without prior consent applies
Obtained atWhen consent was given, or when the qualifying relationship began. Time zone required; future dates rejected
SourceA description such as "business cards exchanged at a trade show"

All three are given as the default for the whole call. A contact can carry its own record to override the default for that row, and when every row carries one the call-level default can be omitted (this is what reading an exported CSV back in looks like).

A row with neither the call-level default nor its own record is not imported. It comes back in the result as invalid, with the reason.

For the reasoning behind this, see How delivery works.

Which organization contacts land in

Contacts are separated per organization. The destination is decided in this order:

  1. The organization named in the request, if any (your membership is verified at that moment)
  2. Otherwise, the default import destination chosen in settings
  3. If no default is set, or it is no longer valid (for example after removal), the oldest organization you belong to

The default is changed on the organization settings screen in the app. The organization currently open in your browser has no effect. Requests from an AI assistant arrive over a separate path from the browser screen.

Reading the import result

Each contact is reported as one of:

ResultMeaning
ImportedNewly registered
Skipped duplicateAlready registered, or repeated within the same request (this is not an error)
InvalidCould not be registered — for example a malformed address (a reason is given)

Addresses are stored lower-cased, so addresses differing only in case are treated as the same person.

Last updated on

On this page