ContactZapp

app.contactzPublished by contactz.appOfficial publisherv1.0.5Updated Nov 7, 2026

Keeps your contacts in sync across Google, Microsoft, Apple and CardDAV, and cleans up duplicates.

Overview

AI-generated overview

ContactZapp keeps contacts synced across Google, Microsoft, Apple and CardDAV, letting an assistant find, read, create and edit contacts and poll contact…

What you can do
  • Find contacts by email address, phone number or text search
  • Read a single contact by its id or publicId
  • Create contacts, with automatic merging into an existing person when the user's Auto-Merge level matches
  • Change contact fields, propagating edits to every two-way account the contact belongs to
  • Start a sync, the same as Sync now in ContactZapp
  • List events of one type, newest first, for polling automations
When to use it
Useful when an assistant should look up, add or update people in a user's address book that spans several providers, or when an automation needs to react to contact created, updated or deleted events by polling.
Requirements
A remote MCP endpoint at app.contactz.app over streamable HTTP. Requires a ContactZapp API key, created in Settings › Advanced, sent in the Authorization header with a value starting with Bearer. No environment variables or local packages.
Before you install
The API key is a secret sent in the Authorization header and grants the scopes it was issued with. Creating and changing contacts writes real data: changes propagate to every two-way synced account, and a create may merge into an existing contact. Sync runs and edits are recorded in history under the user's name and the key or app used. Contact data is exchanged with the connected Google, Microsoft, Apple and CardDAV accounts.

Installation

In SourceWeft

  1. Open ContactZapp in the dashboard and add it to a workspace.
  2. Connect Authorization token credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/app.contactz%2Fcontactzapp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "contactzapp": {
      "type": "http",
      "url": "https://app.contactz.app/api/v1/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

README

This repository has no README.

Tools

7

api_key_check

API key – Check

Returns the user the request acts for, the user's plan and the scopes of the API key or connected app that made it. Any live key or access token can call it, so call it to test one.

Takes no parameters.

contact_find

Contact – Find

Finds the user's contacts by email address, phone number or text. Give at most one of `email`, `phone` and `query`: - `email` finds the contacts with that address. Case does not matter. - `phone` finds the contacts with that number, however it is formatted. - `query` searches the way the Contacts screen's search does. - With none of them, every contact is listed, newest first. Deleted and merged contacts are never returned. For the next page, send the `nextCursor` you got as `cursor`, with the same filter. The last page has no `nextCursor`.

Parametersemaillimitphonequerycursor

contact_create

Contact – Create

Adds a contact. If the user already has this person, the values may go to that contact instead: - If the user's Auto-Merge level covers the match, the values are added to the existing contact: 200, `merged`. - Otherwise a new contact is created: 201, `created`. If it may be a duplicate, it also waits in Review duplicates: 201, `needs_review`. ContactZapp saves the contact in one two-way account: the first one the user linked that keeps an address book and is not paused. The next sync copies it to the user's other two-way accounts, never to a read-only one. A create is never refused for the plan's contact limit. Over the limit, the contact is created frozen and `contact.frozen` is true. ContactZapp keeps a frozen contact but does not sync it until the user upgrades or frees a place. Send an `Idempotency-Key` header to make a retry safe.

ParametersbodyrequiredIdempotency-Key

contact_read

Contact – Read

Returns one contact. `id` is the contact's `id` or its `publicId`, such as `CS-0042`. A deleted or merged contact is a 404, and so is another user's contact.

Parametersidrequired

contact_change

Contact – Change

Changes a contact, as editing it in ContactZapp does. Only the fields you send change. A field you leave out keeps its value. The change goes to every two-way account the contact is in, never to a read-only one. History records it as the user's change and names the API key or the connected app that made it. A contact waiting in Review duplicates cannot be changed until the review is decided: 409, `contact_pending_review`. Send an `Idempotency-Key` header to make a retry safe.

ParametersidrequiredbodyrequiredIdempotency-Key

sync_start

Sync – Start

Starts a sync, the same as Sync now in ContactZapp. History shows it as a manual run. The answer is 202 with the sync's state, `queued` or `running`. If a sync is already going, you get that one back and no second one starts.

Takes no parameters.

event_list

Event – List

Lists the events of one type, newest first. Zapier, Make and n8n poll this to start an automation. Each item's `id` never changes. Poll again and the items you already have come back with the same ids, with new ones on top. Skip the ids you have seen. - `contact.created`, `contact.updated`, `contacts.merged` and `account.needs_attention` come from History, and are kept as long as History keeps them. - `match.needs_review` lists each contact flagged as a possible duplicate and not yet merged. Its `id` changes when the flag is raised again. Each item carries what an automation needs, with no second call: - the contact's fields, or null once the contact is deleted or merged - for a merge, the ids of the contacts it absorbed - for an account, the account and why it needs attention

Parameterseventrequiredlimitcursor

Version history

4
  1. v1.0.5LatestNov 5, 2026
  2. v1.0.4Nov 4, 2026
  3. v1.0.2Nov 3, 2026
  4. v1.0.1Nov 3, 2026

Score

83% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts

    Declare a GitHub repository with a README, or serve resource_documentation in the OAuth protected-resource metadata.

  • LicenseNot applicable

    A hosted service is used under its provider's terms, so no license is expected here. This check is left out of the percentage.