ContactZapp
Server Details
Keeps your contacts in sync across Google, Microsoft, Apple and CardDAV, and cleans up duplicates.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- contactzapp/contactzapp-mcp
- GitHub Stars
- 0
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 7 tools
Each tool targets a clearly distinct resource and action: key inspection, contact create/change/find/read, event listing, and sync start. The only superficially similar pair, contact_find and contact_read, is cleanly separated by search/list vs. lookup by id. An agent can select the right tool from the names and descriptions without meaningful overlap.
All tools use snake_case with a predictable resource_action pattern: contact_create, contact_change, contact_find, contact_read, event_list, sync_start, and api_key_check. The only minor variation is the three-token api_key_check, but it still follows the same convention. Naming is highly consistent and readable.
Seven tools is well-scoped for a contact automation API surface. Each tool covers a distinct operation and none appears redundant or gratuitous. The count is within the typical concise range for an integration-oriented MCP server.
The set covers contact create, read, update, find/list, event polling, API key checking, and sync initiation. However, there is no contact delete tool, and despite repeated references to Review duplicates and merges, there is no explicit tool to resolve or dismiss a pending review. These are notable lifecycle gaps, though core automation workflows remain possible.
Available Tools
7 toolsapi_key_checkAPI key – CheckARead-onlyInspect
Returns the user the key acts for, the user's plan and the key's scopes. Any live key can call it, so call it to test a key.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuinely new context: the authorization rule that any live key may invoke it and the shape of what comes back. However, it says nothing about what happens with an invalid or revoked key (error vs. empty result), which is the main behavioral question a caller testing a key would have.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler; the return payload comes first and the usage trigger second. Nothing is repeated from the title or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing return values and does so in one clause. The remaining gap is failure semantics for an invalid key, which matters for a tool whose stated purpose is validating keys.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter meaning to convey and the baseline of 4 applies. The description correctly focuses its words on return content instead of inventing parameter detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete return payload (acting user, plan, key scopes) so an agent knows this is an identity/introspection call rather than a mutation. It is clearly distinct from the unrelated siblings (contact_*, event_list, sync_start), though it never explicitly contrasts itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Call it to test a key" gives a direct usage trigger, and "Any live key can call it" establishes the access precondition. No alternatives are named, but none of the listed siblings offer overlapping functionality, so the guidance is effectively complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contact_changeContact – ChangeADestructiveInspect
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The contact's `id` or its `publicId` (`CS-0042`). | |
| body | Yes | The body of a contact create or update: the contact fields a read shows that a write can change, under the same names and in the same shapes, and nothing else. A field the body carries that is not one of them is refused with a 400 `unknown_field`, and nothing is written. That includes the read-only `id`, `publicId`, `displayName` and `updatedAt`, so writing back a whole contact as a read returned it answers 400 `unknown_field`: send only the fields you change. A create writes the fields the body carries. An update is change-only: a field the body does not carry keeps its value, a field it carries empty (`""`, `[]`, or a date whose year, month and day are all `0`) is cleared, and a list it carries replaces the stored list. `"birthday": null` clears the birthday too, and a birthday the body does not carry is kept. Fields ContactZapp keeps that a read does not show are never changed by an update. | |
| Idempotency-Key | No | Any string of 1 to 255 bytes you choose for this write, such as a UUID. Repeat the request with the same key and body within 24 hours, and you get the first result back and nothing is written twice. The same key with a different body is a 422. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the readOnlyHint=false / destructiveHint=true annotations: it discloses fan-out to every two-way account but never read-only ones, that history attributes the change to the user and names the API key, the 409 pending-review block, and retry safety via Idempotency-Key. These are exactly the side effects an agent cannot infer from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short paragraphs, front-loaded with the edit semantics and then ordered by consequence (scope, history, error, retry). Dense but every paragraph carries usable information; only the opening UI analogy is slightly expendable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nested-body mutation with no output schema, it covers side effects, error behavior, and idempotency well. The main gap is that it never says what the successful response contains (the updated contact, or nothing), which an agent may need after the call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already carries detailed meaning for `id`, `body` fields, clearing semantics, and `Idempotency-Key`. The description's partial-update rule is valuable but largely duplicates the `body` schema text, so it adds little beyond the structured data.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Changes a contact, as editing it in ContactZapp does" gives a specific verb and resource, and immediately distinguishes it from contact_create and contact_read by anchoring it to editing an existing record. The first sentence alone lets an agent route correctly among the siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly establishes the partial-update contract ("Only the fields you send change") and the blocking condition (a contact pending Review duplicates returns 409 `contact_pending_review`), plus when to attach an Idempotency-Key. What's missing is an explicit pointer to contact_create for new contacts, but the verb makes the split obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contact_createContact – CreateAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The body of a contact create or update: the contact fields a read shows that a write can change, under the same names and in the same shapes, and nothing else. A field the body carries that is not one of them is refused with a 400 `unknown_field`, and nothing is written. That includes the read-only `id`, `publicId`, `displayName` and `updatedAt`, so writing back a whole contact as a read returned it answers 400 `unknown_field`: send only the fields you change. A create writes the fields the body carries. An update is change-only: a field the body does not carry keeps its value, a field it carries empty (`""`, `[]`, or a date whose year, month and day are all `0`) is cleared, and a list it carries replaces the stored list. `"birthday": null` clears the birthday too, and a birthday the body does not carry is kept. Fields ContactZapp keeps that a read does not show are never changed by an update. | |
| Idempotency-Key | No | Any string of 1 to 255 bytes you choose for this write, such as a UUID. Repeat the request with the same key and body within 24 hours, and you get the first result back and nothing is written twice. The same key with a different body is a 422. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It discloses substantial behavior beyond the annotations: Auto-Merge may add values to an existing contact, each 200/201 outcome is explained, possible duplicates enter review, and the storage account and subsequent sync behavior are specified. It also explains that over-limit contacts are retained frozen without syncing and recommends an idempotency key for safe retries, exposing important side effects and operational consequences.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description front-loads the core action and possible outcomes, using bullets effectively for the merge/create branches. The following short paragraphs each cover a distinct, consequential behavior, and the final retry sentence is concise; there is no filler despite the density.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Combined with the fully documented nested schema, the description supplies enough context to invoke a complex create operation correctly, and its status outcomes are especially useful because there is no output schema. Minor gaps remain around explicit sibling routing, what happens when no eligible two-way account exists, and the response payload beyond the named statuses and `contact.frozen`.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already thoroughly documents the body fields, update/clearing semantics, and idempotency-key behavior. The description's recommendation to send `Idempotency-Key` on retries is useful operational emphasis but largely repeats the schema; most other description text concerns operation-level behavior rather than additional parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening "Adds a contact" states a clear verb and resource, while the `merged`, `created`, and `needs_review` outcomes clarify that the operation does not always produce a new record. It does not explicitly distinguish this tool from the sibling `contact_change`, so sibling differentiation remains incomplete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides practical context for creation, automatic merging, duplicate review, account selection, plan-limit handling, and safe retries. It does not state when not to use the tool or direct updates to `contact_change` and lookups to `contact_find`, but the intended creation context is otherwise clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contact_findContact – FindARead-onlyInspect
Finds the user's contacts by email address, phone number or text. Give at most one of email, phone and query:
emailfinds the contacts with that address. Case does not matter.phonefinds the contacts with that number, however it is formatted.querysearches 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.
| Name | Required | Description | Default |
|---|---|---|---|
| No | |||
| limit | No | Page size; 50 when omitted. | |
| phone | No | ||
| query | No | ||
| cursor | No | The previous page's `nextCursor`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/non-destructive, and the description adds real value beyond them: deleted and merged contacts are never returned, results are newest-first by default, and pagination is cursor-based with the last page lacking `nextCursor`. Return shape is described only at a high level (no field list), which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then a bulleted per-parameter breakdown, then pagination rules. Every sentence carries distinct information with no repetition of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search tool with no output schema and no required parameters, it covers matching semantics, default behavior, exclusion rules, ordering, and the full pagination loop. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 40%, but the description compensates fully for the undocumented parameters: `email` is case-insensitive, `phone` matches regardless of formatting, `query` mirrors the Contacts screen search, and `cursor` must be the prior page's `nextCursor` with the same filter. Only `limit` is left to the schema, which already documents it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Finds the user's contacts') plus the exact matching keys (email, phone, query). This clearly separates it from contact_read (single-contact lookup) and contact_change/create without needing to name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly constrains usage: 'Give at most one of email, phone and query' and explains the no-argument behavior ('every contact is listed, newest first'). It doesn't route the agent to sibling tools like contact_read for direct ID lookups, so not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contact_readContact – ReadARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a safe read operation, and the description adds real value on top: deleted or merged contacts return 404, and another user's contact also returns 404, which tells the agent that access is owner-scoped and that not-found masks permission. It stops short of saying whether the 404 is distinguishable or what the returned object contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with what is returned, followed by the identifier contract and the failure modes. No redundant restatement of the title or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool this covers the identifier formats and the failure semantics, which is most of what an agent needs. With no output schema, the description could have sketched the returned contact's shape, but the gap is minor for a standard lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the burden for the single parameter, and it does: `id` accepts either the internal id or the publicId formatted like `CS-0042`. That is meaningful format guidance absent from the schema, though it does not clarify whether the two forms are interchangeable in all cases.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Returns one contact" gives a specific verb and resource with an explicit singular scope, which implicitly separates it from the list-style sibling contact_find. It never names contact_find or contact_change, so differentiation is left to inference rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes clear this is the single-record lookup keyed by an identifier, but it never says when to prefer it over contact_find (search by other criteria) or contact_change (mutate). Usage is implied by the required `id` rather than stated as guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
event_listEvent – ListARead-onlyInspect
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.mergedandaccount.needs_attentioncome from History, and are kept as long as History keeps them.match.needs_reviewlists each contact flagged as a possible duplicate and not yet merged. Itsidchanges 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
| Name | Required | Description | Default |
|---|---|---|---|
| event | Yes | The events the API reports, as polling triggers. - `contact.created`: a contact was added. - `contact.updated`: a contact was changed. - `contacts.merged`: contacts were merged into one. - `match.needs_review`: a contact is flagged as a possible duplicate and waits in Review duplicates. - `account.needs_attention`: a linked account needs the user to look at it. | |
| limit | No | Page size; 50 when omitted. | |
| cursor | No | The previous page's `nextCursor`, to read further back. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the supplied readOnlyHint/destructiveHint, the description discloses the key behavioral contract: ids are stable across polls, and new items arrive on top so consumers must dedupe. It also discloses retention differences per event family (History-backed events versus match.needs_review, whose id changes when flagged again), which directly affects polling logic.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the one-line purpose, then a poll/dedupe paragraph, then two scoped bullet lists for event families and item payloads. Every section is load-bearing, though "what an automation needs, with no second call" is slightly promotional phrasing rather than specification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and mostly discharges it: item id stability, null contact fields after deletion/merge, absorbed-contact ids, and account attention reasons. It stops short of naming the concrete payload fields or the response envelope, leaving the exact shape partly unspecified for a tool an automation will parse.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the enum descriptions: retention lifetime for History-sourced events and the id-instability of match.needs_review. It says nothing extra about limit or cursor beyond what the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Lists the events of one type, newest first" gives a specific verb, resource and ordering in the first sentence, and the polling-automation framing makes the tool's role unmistakable. None of the siblings (contact_*, sync_start, api_key_check) overlap with event retrieval, so the agent can route here without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the intended usage pattern concretely: poll repeatedly, keep the ids you have seen, skip the rest, and use cursor to read further back. It does not name a when-not-to-use case or point at an alternative tool for other needs, which keeps it short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sync_startSync – StartAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say it is a non-read-only, non-destructive mutation, which is thin for a write-ish operation. The description adds real behavioral context: it is recorded in history as a manual run, it returns HTTP 202 with state 'queued' or 'running', and it is idempotent while a sync is in flight. It does not mention permissions or failure modes, so it stops short of full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each carrying distinct information: purpose, side effect on history, and return/state behavior. Purpose is front-loaded and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully explains the response (202 plus state value) and the no-duplicate-start behavior. Given a zero-parameter, no-output-schema tool, this is nearly complete; only error/failure behavior is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description correctly implies no inputs are required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Starts a sync') and anchors it to a known UI action ('the same as Sync now in ContactZapp'), so the agent knows exactly what operation this is. No sibling tool in the list covers sync, so the operation is unambiguous within the toolset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a clear trigger condition (the agent wants a sync to run) and explicitly resolves the main alternative scenario: if a sync is already running, you get that one back instead of starting a second. There is no explicit when-not guidance or prerequisite statement, but the deduplication note covers the most likely ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
17 tool updates
- Added
api_key_check - Added
contact_change - Added
contact_create - Added
contact_find - Added
contact_read - Removed
createV1Contact - Removed
createV1Webhook - Added
event_list - Removed
getV1Contact - Removed
getV1Me - Removed
listV1Accounts - Removed
listV1Contacts - Removed
listV1TriggerEvents - Removed
listV1Webhooks - Removed
postV1Sync - Added
sync_start - Removed
updateV1Contact
10 tool updates
- First observed
createV1Contact - First observed
createV1Webhook - First observed
getV1Contact - First observed
getV1Me - First observed
listV1Accounts - First observed
listV1Contacts - First observed
listV1TriggerEvents - First observed
listV1Webhooks - First observed
postV1Sync - First observed
updateV1Contact
Publisher details
- Operator
- ContactZapp · Publisher source
- Operator website
- https://contactz.app
- Vendor relationship
- Not applicable
- Documentation
- https://dev.contactz.app/developers
- Trust center
- Not available
- Restrictions
- Not applicable
Related MCP Connectors
Connect Apple iCloud and Microsoft 365 mail, calendars, contacts and tasks to AI.
An AI-first personal CRM you run in natural language: contacts, reminders, notes, and more.
Outlook.com, Microsoft 365, Google, iCloud, CalDAV: free time, events, invites, bookings, polls.
Personal CRM for Claude. Contacts live as plain-text files in your own Google Drive.
Related MCP Servers
- AlicenseAqualityAmaintenanceRead and write CardDAV address books: contacts, groups and photos over the open standard17107 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage contacts with full CRUD, dedup, merge, import/export, sync with Google/Apple/CardDAV, and git-backed rollback.4 npmAGPL 3.0
- AlicenseAqualityDmaintenanceProvides comprehensive Google Contacts management including creating, searching, and updating contacts with 25+ fields, managing contact groups, and accessing Google Workspace directories.191MIT
- AlicenseNot gradedqualityDmaintenanceGives AI assistants access to Google Contacts, supporting listing, searching, creating, updating, and deleting contacts, as well as searching Google Workspace directories.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.