{
  "data": {
    "a": {
      "slug": "contactsplus",
      "name": "ContactsPlus",
      "vendor": "Contacts Plus LLC",
      "vendorUrl": "https://www.contactsplus.com",
      "kind": "http-api",
      "category": "contacts",
      "summary": "ContactsPlus (Contacts+) is a contact manager that syncs, deduplicates and enriches address books across Google, iCloud and Outlook. Agents reach it through an OAuth REST Contacts API with webhooks and a remote MCP server for Premium users.",
      "url": "https://www.anchorterminal.com/tools/contactsplus",
      "markdownUrl": "https://www.anchorterminal.com/tools/contactsplus.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/contactsplus.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/contactsplus.json",
      "license": "Proprietary service under the ContactsPlus Terms of Use (version 2.0, 26 June 2026). The old Node and Clojure API clients are archived",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.contactsplus.com/api/v1",
      "packages": [
        {
          "registry": "npm",
          "name": "contacts-api-node"
        }
      ],
      "auth": "oauth",
      "authNotes": "The REST API uses OAuth 2.0 with an app registered at ui.contactsplus.com/apps, a client ID and secret, and 10 comma-separated scopes (account.read, contacts.read, contacts.write, tags.read, tags.write, teams.read and team variants). Refresh tokens are long-lived. The MCP server at https://mcp.contactsplus.com/mcp uses OAuth with PKCE (S256) and dynamic client registration, and the user picks Read only or Full access when connecting.",
      "pricing": "freemium",
      "pricingNotes": "Free plan at $0 with no credit card (1 synced account, 1,000 contacts, daily sync). Premium from $9.99 a month billed annually or $13.99 monthly (5 accounts, 25,000 contacts). Teams from $12.99 a user a month annually or $17.99 monthly. The MCP integration needs Premium. The developer page says the API is free to start and names no API price (https://www.contactsplus.com/pricing/, checked 2026-10-14).",
      "priceSummary": "$9.99 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the developer pages, the MCP page or the pricing page (checked 2026-10-14).",
        "endpoints": []
      },
      "toolCount": 7,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 13,
        "pypiWeekly": null,
        "asOf": "2026-10-14"
      },
      "docsUrl": "https://www.contactsplus.com/developers/contacts-api/",
      "llmsTxt": "https://www.contactsplus.com/llms.txt",
      "capabilities": [
        "contacts.read",
        "contacts.write",
        "contacts.search",
        "contacts.sync",
        "contacts.groups"
      ],
      "tags": [
        "hosted",
        "freemium",
        "mcp",
        "oauth",
        "webhooks",
        "llms-txt",
        "consumer"
      ],
      "lastRelease": "2026-09-28",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 42.4,
        "grade": "E",
        "agentReady": false,
        "rank": 966,
        "ranked": true,
        "rankOf": 1076,
        "categoryRank": 3,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 42,
          "maintenance": 25,
          "payments": 30,
          "reliability": 28,
          "schema": 38,
          "security": 71,
          "transparency": 62
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-14"
        },
        "negative": 0,
        "verdict": "An address book that already merges Google, iCloud and Outlook contacts, reachable through OAuth scopes split by read and write and an MCP server that cannot delete or export and holds edits for the owner's approval. The REST reference has no rate limits, error codes or changelog, and its client libraries were archived in 2023.",
        "bestFor": "Agents serving one person or a small team whose contacts are spread across Google, iCloud and Outlook.",
        "strengths": [
          "One API over contacts synced from Google, iCloud and Outlook",
          "MCP server can't delete or export, and edits wait for the owner's approval",
          "Read only or Full access chosen at connection, with OAuth PKCE and dynamic client registration",
          "Separate read and write scopes for contacts, tags and team data",
          "Free plan with no card, and webhooks for contact changes"
        ],
        "weaknesses": [
          "No rate limits, error responses or changelog in the API reference",
          "No OpenAPI spec, and MCP tool schemas aren't public",
          "Node and Clojure clients last released in 2020 and archived",
          "Status page is a static page last updated 26 June 2026",
          "MCP access needs the Premium plan"
        ],
        "agentNotes": [
          "Pass the contact's current etag on update and delete, or the call will be refused",
          "Use contacts.scroll with includeDeletedContacts to keep a copy in step, or subscribe to webhooks",
          "Tell the user that MCP edits land in Suggestions and need their approval",
          "Ask only for contacts.read and tags.read when the task is lookup",
          "Search with field criteria such as company:Acme AND title:CTO to keep results small"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "E",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 42.4
          }
        ],
        "editorialScores": {
          "ergonomics": 42,
          "maintenance": 25,
          "payments": 30,
          "reliability": 28,
          "schema": 38,
          "security": 71,
          "transparency": 48
        },
        "provenanceScore": 75
      },
      "connect": {
        "http": "curl -X POST https://api.contactsplus.com/api/v1/contacts.search \\\n  -H \"Authorization: Bearer $access_token\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"searchQuery\": \"company:Contacts+\"}'",
        "config": {
          "mcpServers": {
            "contactsplus": {
              "url": "https://mcp.contactsplus.com/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/contacts.read",
        "tool": "https://letme.dev/contactsplus"
      },
      "area": "everyday",
      "unitPrices": [
        {
          "item": "Premium plan",
          "unit": "month",
          "usd": 9.99,
          "note": "Billed annually ($119.88 a year), or $13.99 monthly. Needed for the MCP integration"
        },
        {
          "item": "Teams plan",
          "unit": "seat-month",
          "usd": 12.99,
          "note": "Billed annually, or $17.99 monthly, up to 50 members"
        }
      ],
      "provenance": {
        "legalEntity": "Contacts Plus LLC",
        "domain": "contactsplus.com",
        "domainRegistered": "1998-02-25",
        "endpointOnVendorDomain": true,
        "terms": "https://www.contactsplus.com/terms/",
        "privacy": "https://www.contactsplus.com/privacy/",
        "statusPage": "https://www.contactsplus.com/status/",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-10-14",
        "notes": [
          "The terms (version 2.0, 26 June 2026) name Contacts Plus LLC, a Delaware limited liability company at 3636 S. Geyer Road, Suite 100, Saint Louis, MO 63127.",
          "www.contactsplus.com/.well-known/security.txt answers with an HTML page, not a security.txt file. The security page names security@contactsplus.com and OpenBugBounty.",
          "The REST API answers at api.contactsplus.com and the MCP server at mcp.contactsplus.com.",
          "The API clients on npm and GitHub sit under the fullcontact organisation, and the GitHub repository was archived in 2023.",
          "RDAP gives contactsplus.com a registration date of 1998-02-25."
        ],
        "score": 75
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/contactsplus.json",
      "live": {
        "slug": "contactsplus",
        "probe": {
          "target": "https://api.contactsplus.com/api/v1",
          "method": "get",
          "lastAt": "2026-10-14T09:41:47.032434985Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 337,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 337,
          "p95ms24h": 416,
          "samples24h": 17,
          "samples30d": 17,
          "days": [
            {
              "date": "2026-10-14",
              "probes": 17,
              "ok": 17
            }
          ]
        },
        "vendorStatus": {
          "page": "https://www.contactsplus.com/status",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-14T08:52:59.734792189Z"
        },
        "updatedAt": "2026-10-14T09:41:47.032434985Z"
      }
    },
    "answer": "Microsoft Graph People and Contacts API scores 64.6 (B) on agent readiness against ContactsPlus's 42.4 (E), and leads in every scored category.",
    "b": {
      "slug": "microsoft-graph-people",
      "name": "Microsoft Graph People and Contacts API",
      "vendor": "Microsoft",
      "vendorUrl": "https://learn.microsoft.com/en-us/graph/outlook-contacts-concept-overview",
      "kind": "http-api",
      "category": "contacts",
      "summary": "Microsoft Graph endpoints for a user's Outlook personal contacts and contact folders, with delta sync, and the people API, which ranks the people most relevant to a user and supports fuzzy search.",
      "url": "https://www.anchorterminal.com/tools/microsoft-graph-people",
      "markdownUrl": "https://www.anchorterminal.com/tools/microsoft-graph-people.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/microsoft-graph-people.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/microsoft-graph-people.json",
      "repo": "https://github.com/microsoftgraph/msgraph-sdk-javascript",
      "license": "MIT (SDKs)",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://graph.microsoft.com/v1.0",
      "packages": [
        {
          "registry": "npm",
          "name": "@microsoft/microsoft-graph-client"
        },
        {
          "registry": "pypi",
          "name": "msgraph-sdk"
        }
      ],
      "auth": "oauth",
      "authNotes": "OAuth 2.0 tokens from Microsoft Entra ID. Contacts use Contacts.Read or Contacts.ReadWrite, delegated (work, school or personal Microsoft account) or application. The people API uses People.Read with user consent, or People.Read.All, which needs admin consent, to read people relevant to another user. Application permissions reach every mailbox in a tenant unless RBAC for Applications limits them.",
      "pricing": "byo-plan",
      "pricingNotes": "Contacts and people endpoints aren't metered. Work accounts need an Exchange Online mailbox through a Microsoft 365 or Exchange licence. Personal Outlook.com accounts work with delegated permissions at no cost (checked 2026-10-14).",
      "priceSummary": "Your plan",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the Graph contacts or people docs (checked 2026-10-14).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 834,
        "npmWeekly": 2321990,
        "pypiWeekly": 1639437,
        "asOf": "2026-10-14"
      },
      "docsUrl": "https://learn.microsoft.com/en-us/graph/outlook-contacts-concept-overview",
      "openapi": "https://raw.githubusercontent.com/microsoftgraph/msgraph-metadata/master/openapi/v1.0/openapi.yaml",
      "capabilities": [
        "contacts.read",
        "contacts.write",
        "contacts.search",
        "contacts.sync"
      ],
      "tags": [
        "hosted",
        "official",
        "oauth",
        "openapi",
        "webhooks",
        "typescript",
        "python",
        "enterprise"
      ],
      "lastRelease": "2026-03-12",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 64.6,
        "grade": "B",
        "agentReady": false,
        "rank": 369,
        "ranked": true,
        "rankOf": 1076,
        "categoryRank": 2,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 83,
          "maintenance": 76,
          "payments": 35,
          "reliability": 60,
          "schema": 83,
          "security": 72,
          "transparency": 69
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-14"
        },
        "negative": -4,
        "negativeNotes": [
          "2026-06-16: a fix for a token leak through URL userinfo host confusion was merged into msgraph-sdk-javascript and the version bumped to 3.0.8, but on 14 October 2026 npm still serves 3.0.7 from September 2023 and the repository has no published advisory. Exploiting it needs an attacker-influenced URL passed to the client (https://github.com/microsoftgraph/msgraph-sdk-javascript/commit/5438ae90f50ef15d3656f0cf9c5485deee351f19, https://registry.npmjs.org/@microsoft/microsoft-graph-client/latest)"
        ],
        "verdict": "Covers Outlook personal contacts with delta sync and a people API that ranks the people a user works with and supports fuzzy search, all under separate read and write permissions. Contact creates have no idempotency key, the status page needs JavaScript, and Microsoft has no current MCP server for contacts.",
        "bestFor": "Agents working in Microsoft 365 tenants or with Outlook.com address books, especially to find who a user works with.",
        "strengths": [
          "People API ranks contacts and colleagues by relevance and supports fuzzy name search",
          "Delta queries per contact folder return only what changed",
          "Contacts.Read and People.Read keep read-only agents away from writes",
          "Works for Microsoft 365 work accounts and personal Microsoft accounts",
          "Graph activity logs record every request with app, user, IP and status"
        ],
        "weaknesses": [
          "No idempotency key on contact creation, so retries can duplicate",
          "4 concurrent requests per app per mailbox",
          "The npm JavaScript client is 3.0.7 from September 2023, without the June 2026 token-leak fix",
          "The only MCP option, the User server, is kept for backward compatibility",
          "Status page renders only with JavaScript"
        ],
        "agentNotes": [
          "Use /me/people?$search= for fuzzy lookups and /me/contacts for the saved address book, since they return different sets",
          "Keep the @odata.deltaLink from the contact delta function and call it on the next run",
          "Check for an existing contact with $filter on emailAddresses before creating one",
          "Honour Retry-After on 429 and keep to 4 parallel calls per mailbox",
          "Ask for Contacts.Read and People.Read unless the task must change contacts"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 64.6
          }
        ],
        "editorialScores": {
          "ergonomics": 83,
          "maintenance": 76,
          "payments": 35,
          "reliability": 60,
          "schema": 83,
          "security": 72,
          "transparency": 52
        },
        "provenanceScore": 85
      },
      "connect": {
        "http": "curl \"https://graph.microsoft.com/v1.0/me/people?\\$search=adele\u0026\\$top=10\u0026\\$select=displayName,scoredEmailAddresses\" \\\n  -H \"Authorization: Bearer $MS_GRAPH_TOKEN\""
      },
      "letme": {
        "capability": "https://letme.dev/contacts.read",
        "tool": "https://letme.dev/microsoft-graph-people"
      },
      "sameCompany": [
        "azure-foundry-fine-tuning",
        "azure-ai-content-safety",
        "azure-speech-to-text",
        "azure-text-to-speech",
        "microsoft-agent-framework",
        "microsoft-execution-containers",
        "microsoft-entra-agent-id",
        "azure-key-vault",
        "azure-document-intelligence",
        "azure-devops-mcp",
        "microsoft-learn-mcp",
        "playwright-mcp",
        "azure-mcp",
        "azure-maps",
        "azure-translator",
        "microsoft-graph-calendar",
        "azure-blob-storage",
        "onedrive-sharepoint",
        "microsoft-teams",
        "dynamics-365-sales",
        "power-automate",
        "foundry-local",
        "microsoft-decision-1",
        "microsoft-advertising-api",
        "microsoft-excel-graph",
        "outlook-mail-graph"
      ],
      "area": "everyday",
      "provenance": {
        "legalEntity": "Microsoft Corporation",
        "domain": "microsoft.com",
        "domainRegistered": "1991-05-02",
        "endpointOnVendorDomain": true,
        "terms": "https://learn.microsoft.com/en-us/legal/microsoft-apis/terms-of-use",
        "privacy": "https://privacy.microsoft.com/en-us/privacystatement",
        "statusPage": "https://status.cloud.microsoft",
        "changelog": "https://developer.microsoft.com/en-us/graph/changelog",
        "securityTxt": "expired",
        "checked": "2026-10-14",
        "notes": [
          "The endpoint is on graph.microsoft.com. www.microsoft.com/.well-known/security.txt still carried an Expires date of 2026-09-23 on 2026-10-14.",
          "The Microsoft service health page at status.cloud.microsoft needs JavaScript to show anything, per the Graph listings' earlier checks.",
          "The people API overview page is dated 2019-04-09 and the contact resource page 2026-02-27."
        ],
        "score": 85
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/microsoft-graph-people.json",
      "live": {
        "slug": "microsoft-graph-people",
        "probe": {
          "target": "https://graph.microsoft.com/v1.0",
          "method": "get",
          "lastAt": "2026-10-14T09:41:58.368018459Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 3,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 4,
          "p95ms24h": 40,
          "samples24h": 17,
          "samples30d": 17,
          "days": [
            {
              "date": "2026-10-14",
              "probes": 17,
              "ok": 17
            }
          ]
        },
        "updatedAt": "2026-10-14T09:41:58.368018459Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Contacts Plus LLC",
        "b": "Microsoft",
        "name": "Vendor"
      },
      {
        "a": "https://api.contactsplus.com/api/v1",
        "b": "https://graph.microsoft.com/v1.0",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth",
        "b": "OAuth",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Your plan",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under the ContactsPlus Terms of Use (version 2.0, 26 June 2026). The old Node and Clojure API clients are archived",
        "b": "MIT (SDKs)",
        "name": "Licence"
      },
      {
        "a": "7",
        "b": "none",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "2026-09-28",
        "b": "2026-03-12",
        "name": "Last release"
      },
      {
        "a": "2026-06-26",
        "b": "2025-10-01",
        "name": "Terms last updated"
      },
      {
        "a": "2026-06-26",
        "b": "2026-09-01",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "13 npm/wk",
        "b": "834 stars, 2.3M npm/wk, 1.6M PyPI/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Microsoft Graph People and Contacts API scores 64.6 (B) on agent readiness against ContactsPlus's 42.4 (E), and leads in every scored category.",
        "question": "Which is better for AI agents, ContactsPlus or Microsoft Graph People and Contacts API?"
      },
      {
        "answer": "Both use an OAuth sign-in.",
        "question": "Do ContactsPlus and Microsoft Graph People and Contacts API need an API key?"
      },
      {
        "answer": "Yes. ContactsPlus has a hosted endpoint at https://api.contactsplus.com/api/v1 and Microsoft Graph People and Contacts API at https://graph.microsoft.com/v1.0.",
        "question": "Can an agent call ContactsPlus and Microsoft Graph People and Contacts API without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": null,
        "also": [
          "No incidents deducted, where Microsoft Graph People and Contacts API loses 4 points for them"
        ],
        "goodFor": "Agents serving one person or a small team whose contacts are spread across Google, iCloud and Outlook.",
        "slug": "contactsplus",
        "watchFor": "No rate limits, error responses or changelog in the API reference"
      },
      {
        "aheadOn": [
          "Reliability, 60 against 28",
          "Schema \u0026 documentation, 83 against 38",
          "Agent ergonomics, 83 against 42",
          "Payments \u0026 pricing, 35 against 30",
          "Maintenance \u0026 community, 76 against 25",
          "Transparency \u0026 trust, 69 against 62"
        ],
        "also": null,
        "goodFor": "Agents working in Microsoft 365 tenants or with Outlook.com address books, especially to find who a user works with.",
        "slug": "microsoft-graph-people",
        "watchFor": "No idempotency key on contact creation, so retries can duplicate"
      }
    ],
    "job": {
      "capability": "contacts.read",
      "name": "Reading contacts"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/contactsplus-vs-google-people-api.json",
        "title": "ContactsPlus vs Google People API",
        "url": "https://www.anchorterminal.com/compare/contactsplus-vs-google-people-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/google-people-api-vs-microsoft-graph-people.json",
        "title": "Google People API vs Microsoft Graph People and Contacts API",
        "url": "https://www.anchorterminal.com/compare/google-people-api-vs-microsoft-graph-people"
      }
    ],
    "scores": [
      {
        "by": 32,
        "contactsplus": 28,
        "edge": "microsoft-graph-people",
        "key": "reliability",
        "microsoft-graph-people": 60,
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 45,
        "contactsplus": 38,
        "edge": "microsoft-graph-people",
        "key": "schema",
        "microsoft-graph-people": 83,
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "by": 41,
        "contactsplus": 42,
        "edge": "microsoft-graph-people",
        "key": "ergonomics",
        "microsoft-graph-people": 83,
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "by": 1,
        "contactsplus": 71,
        "edge": "microsoft-graph-people",
        "key": "security",
        "microsoft-graph-people": 72,
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "by": 5,
        "contactsplus": 30,
        "edge": "microsoft-graph-people",
        "key": "payments",
        "microsoft-graph-people": 35,
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 51,
        "contactsplus": 25,
        "edge": "microsoft-graph-people",
        "key": "maintenance",
        "microsoft-graph-people": 76,
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "by": 7,
        "contactsplus": 62,
        "edge": "microsoft-graph-people",
        "key": "transparency",
        "microsoft-graph-people": 69,
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "Microsoft Graph People and Contacts API scores 64.6 (B) on agent readiness against ContactsPlus's 42.4 (E), and leads in every scored category. Both do reading contacts.",
    "verdicts": {
      "contactsplus": "An address book that already merges Google, iCloud and Outlook contacts, reachable through OAuth scopes split by read and write and an MCP server that cannot delete or export and holds edits for the owner's approval. The REST reference has no rate limits, error codes or changelog, and its client libraries were archived in 2023.",
      "microsoft-graph-people": "Covers Outlook personal contacts with delta sync and a people API that ranks the people a user works with and supports fuzzy search, all under separate read and write permissions. Contact creates have no idempotency key, the status page needs JavaScript, and Microsoft has no current MCP server for contacts."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/contactsplus-vs-microsoft-graph-people",
    "json": "https://www.anchorterminal.com/compare/contactsplus-vs-microsoft-graph-people.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/contactsplus-vs-microsoft-graph-people.md",
    "slim": "https://www.anchorterminal.com/compare/contactsplus-vs-microsoft-graph-people.min.md"
  },
  "markdown": "Microsoft Graph People and Contacts API scores 64.6 (B) on agent readiness against ContactsPlus's 42.4 (E), and leads in every scored category. Both do reading contacts.\n\n- ContactsPlus: grade E, 42.4/100, rank #966 of 1076. Markdown https://www.anchorterminal.com/tools/contactsplus.md · JSON https://www.anchorterminal.com/api/v1/tools/contactsplus.json\n- Microsoft Graph People and Contacts API: grade B, 64.6/100, rank #369 of 1076. Markdown https://www.anchorterminal.com/tools/microsoft-graph-people.md · JSON https://www.anchorterminal.com/api/v1/tools/microsoft-graph-people.json\n- All 3 contacts comparisons: https://www.anchorterminal.com/compare/contacts/index.md\n\n## Which one, for what\n\n### ContactsPlus (E)\n\nGood for: Agents serving one person or a small team whose contacts are spread across Google, iCloud and Outlook.\n\nAlso in its favour:\n- No incidents deducted, where Microsoft Graph People and Contacts API loses 4 points for them\n\nWatch for: No rate limits, error responses or changelog in the API reference\n\n### Microsoft Graph People and Contacts API (B)\n\nGood for: Agents working in Microsoft 365 tenants or with Outlook.com address books, especially to find who a user works with.\n\nAhead on:\n- Reliability, 60 against 28\n- Schema \u0026 documentation, 83 against 38\n- Agent ergonomics, 83 against 42\n- Payments \u0026 pricing, 35 against 30\n- Maintenance \u0026 community, 76 against 25\n- Transparency \u0026 trust, 69 against 62\n\nWatch for: No idempotency key on contact creation, so retries can duplicate\n\n\n## Score by category\n\n| Category | Weight | ContactsPlus | Microsoft Graph People and Contacts API | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 28 | 60 | Microsoft Graph People and Contacts API +32 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 38 | 83 | Microsoft Graph People and Contacts API +45 |\n| Agent ergonomics | 13% (16.2 this run) | 42 | 83 | Microsoft Graph People and Contacts API +41 |\n| Security \u0026 auth | 14% (17.5 this run) | 71 | 72 | Microsoft Graph People and Contacts API +1 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 30 | 35 | Microsoft Graph People and Contacts API +5 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 25 | 76 | Microsoft Graph People and Contacts API +51 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 62 | 69 | Microsoft Graph People and Contacts API +7 |\n| Negative events | ≤15 | 0 | -4 | |\n| **Total** | | **42.4 · E** | **64.6 · B** | |\n\n## Facts side by side\n\n| Fact | ContactsPlus | Microsoft Graph People and Contacts API |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Contacts Plus LLC | Microsoft |\n| Hosted endpoint | `https://api.contactsplus.com/api/v1` | `https://graph.microsoft.com/v1.0` |\n| Transports | HTTP | HTTP |\n| Auth | OAuth | OAuth |\n| Pricing | Freemium | Your plan |\n| x402 | no | no |\n| Licence | Proprietary service under the ContactsPlus Terms of Use (version 2.0, 26 June 2026). The old Node and Clojure API clients are archived | MIT (SDKs) |\n| Tools exposed | 7 | none |\n| Read-only variant documented | no | yes |\n| llms.txt | yes | no |\n| Last release | 2026-09-28 | 2026-03-12 |\n| Terms last updated | 2026-06-26 | 2025-10-01 |\n| Privacy policy last updated | 2026-06-26 | 2026-09-01 |\n| Customer content may train models | not found in the text | yes |\n| Terms restrict automated access | not found in the text | yes |\n| Terms restrict benchmarking | yes | yes |\n| Terms or service can change without notice | not found in the text | yes |\n| Arbitration or class-action waiver | yes | not found in the text |\n| Popularity | 13 npm/wk | 834 stars, 2.3M npm/wk, 1.6M PyPI/wk |\n\n## Verdicts\n\n**ContactsPlus.** An address book that already merges Google, iCloud and Outlook contacts, reachable through OAuth scopes split by read and write and an MCP server that cannot delete or export and holds edits for the owner's approval. The REST reference has no rate limits, error codes or changelog, and its client libraries were archived in 2023.\n\n**Microsoft Graph People and Contacts API.** Covers Outlook personal contacts with delta sync and a people API that ranks the people a user works with and supports fuzzy search, all under separate read and write permissions. Contact creates have no idempotency key, the status page needs JavaScript, and Microsoft has no current MCP server for contacts.\n\n## Before you call either\n\n### ContactsPlus\n\n1. Pass the contact's current etag on update and delete, or the call will be refused\n2. Use contacts.scroll with includeDeletedContacts to keep a copy in step, or subscribe to webhooks\n3. Tell the user that MCP edits land in Suggestions and need their approval\n4. Ask only for contacts.read and tags.read when the task is lookup\n5. Search with field criteria such as company:Acme AND title:CTO to keep results small\n\n### Microsoft Graph People and Contacts API\n\n1. Use /me/people?$search= for fuzzy lookups and /me/contacts for the saved address book, since they return different sets\n2. Keep the @odata.deltaLink from the contact delta function and call it on the next run\n3. Check for an existing contact with $filter on emailAddresses before creating one\n4. Honour Retry-After on 429 and keep to 4 parallel calls per mailbox\n5. Ask for Contacts.Read and People.Read unless the task must change contacts\n\n## Questions\n\n### Which is better for AI agents, ContactsPlus or Microsoft Graph People and Contacts API?\n\nMicrosoft Graph People and Contacts API scores 64.6 (B) on agent readiness against ContactsPlus's 42.4 (E), and leads in every scored category.\n\n### Do ContactsPlus and Microsoft Graph People and Contacts API need an API key?\n\nBoth use an OAuth sign-in.\n\n### Can an agent call ContactsPlus and Microsoft Graph People and Contacts API without installing anything?\n\nYes. ContactsPlus has a hosted endpoint at https://api.contactsplus.com/api/v1 and Microsoft Graph People and Contacts API at https://graph.microsoft.com/v1.0.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/contactsplus-vs-microsoft-graph-people.json, and with the fewest tokens: https://www.anchorterminal.com/compare/contactsplus-vs-microsoft-graph-people.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"contactsplus\", \"b\": \"microsoft-graph-people\"}`. From a terminal: `anchor compare contactsplus microsoft-graph-people`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/contactsplus.json and https://www.anchorterminal.com/api/v1/tools/microsoft-graph-people.json\n\n## Other comparisons with ContactsPlus or Microsoft Graph People and Contacts API\n\n- [ContactsPlus vs Google People API](https://www.anchorterminal.com/compare/contactsplus-vs-google-people-api.md)\n- [Google People API vs Microsoft Graph People and Contacts API](https://www.anchorterminal.com/compare/google-people-api-vs-microsoft-graph-people.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-14",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "ContactsPlus vs Microsoft Graph People and Contacts API",
        "url": ""
      }
    ],
    "description": "Microsoft Graph People and Contacts scores 64.6 (B) to ContactsPlus's 42.4 (E) for reading contacts. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "ContactsPlus E 42.4",
      "Microsoft Graph People and Contacts API B 64.6",
      "scores"
    ],
    "h1": "ContactsPlus vs Microsoft Graph People and Contacts API",
    "image": "https://www.anchorterminal.com/assets/og/compare-contactsplus-vs-microsoft-graph-people.png",
    "path": "/compare/contactsplus-vs-microsoft-graph-people",
    "published": "2026-10-01",
    "section": "tools",
    "title": "ContactsPlus vs Microsoft Graph People and Contacts (2026)",
    "toc": null,
    "updated": "2026-10-14",
    "url": "https://www.anchorterminal.com/compare/contactsplus-vs-microsoft-graph-people"
  },
  "tokens": {
    "markdown": 1950,
    "slim": 730
  },
  "version": 1
}
