{
  "id": "06-affinity",
  "slug": "affinity",
  "normalized_name": "affinity",
  "name": "Affinity",
  "vendor_url": "affinity.co",
  "category": "revops-infra",
  "what_it_does": "A relationship-intelligence CRM for deal teams that auto-builds the contact graph from email and calendar activity and scores relationship strength, rather than relying on reps to log activity.",
  "ai_features": "Semantic search across companies and people, relationship-strength scoring, and meeting-transcript retrieval. The contact-graph construction itself is automation over mail and calendar metadata, not AI.",
  "mcp_status": "official",
  "mcp_url": "https://mcp.affinity.co/mcp (docs: https://support.affinity.co/s/article/Getting-started-with-Affinity-MCP)",
  "mcp_auth": "OAuth where the client supports it, otherwise an API key. Local deployment is API key only. All MCP queries inherit the connecting user's existing Affinity permissions.",
  "api_gate": "paid",
  "revops_role": "System of record for relationship-driven pipelines, primarily private capital, with warm-path discovery layered on top of the CRM itself.",
  "tier": "RESEARCHED",
  "last_checked": "2026-09-07",
  "sources": "https://support.affinity.co/s/article/Getting-started-with-Affinity-MCP, https://www.affinity.co/blog/affinity-is-building-the-best-mcp-for-private-capital, https://www.affinity.co/product/crm, https://mcp.affinity.co/mcp",
  "notes": "Added 2026-08-25 in the coverage sweep. API and MCP access are restricted to the Scale, Advanced and Enterprise tiers; lower tiers cannot use it at all. Launched in beta in 2026 with roughly 33 read and write tools. TRANSFERABILITY CAVEAT: Affinity is aimed at VC, PE and investment banking rather than classic B2B SaaS sales, so the relationship-strength model is tuned for a different motion than most of this directory. Included because the auto-built relationship graph is the same job Centralize (05) and The Swarm (01) do, approached from a third direction, and the three together are a coherent lane. 2026-09-07: https://mcp.affinity.co/mcp returned 401 to an MCP initialize POST (https://mcp.affinity.co/mcp).",
  "mcp_status_bucket": "official",
  "api_gate_bucket": "paid",
  "mcp_urls": [
    "https://mcp.affinity.co/mcp",
    "https://support.affinity.co/s/article/Getting-started-with-Affinity-MCP"
  ],
  "source_urls": [
    "https://support.affinity.co/s/article/Getting-started-with-Affinity-MCP",
    "https://www.affinity.co/blog/affinity-is-building-the-best-mcp-for-private-capital",
    "https://www.affinity.co/product/crm",
    "https://mcp.affinity.co/mcp"
  ],
  "source_annotations": [],
  "vendor_domain": "affinity.co",
  "display_name": "Affinity",
  "docs_url": "https://support.affinity.co/s/article/Getting-started-with-Affinity-MCP",
  "jobs": [
    "discover-warm-intro-paths",
    "fetch-call-transcript",
    "read-crm-records",
    "write-crm-records"
  ],
  "jobs_tagged_by": "machine-pass",
  "jobs_tagged_on": "2026-08-25",
  "github_url": null,
  "github_stars": null,
  "github_last_commit": null,
  "github_archived": null,
  "github_fetched_on": null,
  "github_candidates": [],
  "docs_digest": null,
  "docs_last_crawled": null,
  "submission": null,
  "mcp_tools": [
    {
      "name": "create_company",
      "description": "Create a new company record",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "write"
    },
    {
      "name": "create_field",
      "description": "Define a new field on a list, on companies, on people, or on opportunities",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "create_interaction",
      "description": "Log a meeting, call, or chat message with one or more people",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "create_list",
      "description": "Create a new list for organizing companies, people, or opportunities",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "write"
    },
    {
      "name": "create_list_entry",
      "description": "Add an existing person or company as a list entry to a list",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "write"
    },
    {
      "name": "create_list_field_dropdown_option",
      "description": "Add a new selectable option to a dropdown field on a list",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "write"
    },
    {
      "name": "create_note",
      "description": "Create a note and attach it to a person, company, opportunity, or meeting",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "write"
    },
    {
      "name": "create_opportunity",
      "description": "Create a new opportunity and attach it to a list",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "write"
    },
    {
      "name": "create_person",
      "description": "Add a new person record to your team's address book",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "write"
    },
    {
      "name": "create_reminder",
      "description": "Set up a new reminder",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "write"
    },
    {
      "name": "delete_list_field_dropdown_option",
      "description": "Remove a dropdown option from a list field",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "write"
    },
    {
      "name": "delete_reminder",
      "description": "Delete an existing reminder",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "write"
    },
    {
      "name": "get_company_info",
      "description": "Get detailed profile and field data for a specific company",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "get_company_list_entries",
      "description": "See which lists a company appears on",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "get_company_relationships",
      "description": "View which teammates have relationships at a company and their strength",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "get_current_user",
      "description": "Check who you're authenticated as and verify your connection",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "get_entities_attached_to_note",
      "description": "Find what records are linked to a specific note",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "get_entity_field_dropdown_options",
      "description": "See what dropdown options are available on a person or company field",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "get_entity_fields",
      "description": "See what fields are available for people or companies",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "get_field_value_changes",
      "description": "See the history of changes to a field's values over time",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "get_list_field_dropdown_options",
      "description": "See what dropdown options are available on a list field",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "get_list_fields",
      "description": "See what fields are available on a specific list",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "get_list_info",
      "description": "Get metadata and a direct link for a specific list",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "get_lists",
      "description": "See all lists you have access to, optionally filtered by name",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "get_meetings",
      "description": "Get past and upcoming meeting interactions and attendees",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "get_meetings_for_entity",
      "description": "Get meetings for a specific person, company, or opportunity",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "get_notes_for_entity",
      "description": "Get all notes attached to a specific record",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "get_person_info",
      "description": "Get detailed profile and field data for a specific person",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "get_person_list_entries",
      "description": "See which lists a person appears on",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "get_person_relationships",
      "description": "View which teammates know a specific person and relationship strength",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "get_reminders",
      "description": "See all of your team's reminders",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "get_saved_view_list_entries",
      "description": "Pull the list entries that match a saved view's filters",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "get_saved_views",
      "description": "See the saved views configured on a list",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "get_single_list_entry",
      "description": "Get a specific entry on a list",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "get_transcript_fragments",
      "description": "Retrieve dialogue fragments of your team's meeting transcripts",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "query_notes",
      "description": "Find notes by creator or date range",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "render_warm_intro_graph",
      "description": "Render the ranked intro paths as an interactive network graph",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "search_all_companies",
      "description": "Exhaustively list or filter companies with cursor-based pagination",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "search_companies_top_matches",
      "description": "Search for companies using natural language, structured filters, or both",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "search_files",
      "description": "Search files by keyword, across all files or scoped to a company",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "search_list_entries",
      "description": "Search, filter, and sort entries on a specific list, with cursor-based pagination",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "search_notes",
      "description": "Search notes by keyword, across all notes or scoped to a company",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "search_opportunities",
      "description": "Search for opportunities by keyword or list them all",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "search_persons",
      "description": "Search people across your org using structured filters, sorts, and/or a keyword",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "send_feedback",
      "description": "Submit feedback about a missing capability or limitation directly to Affinity",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "update_company",
      "description": "Update an existing company's name, domain, or associated people",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "write"
    },
    {
      "name": "update_list_field_dropdown_option",
      "description": "Rename or restyle an existing dropdown option on a list field",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "update_opportunity",
      "description": "Rename an opportunity or change its company and person associations",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "update_person",
      "description": "Update an existing person's name, email addresses, or company associations",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "write"
    },
    {
      "name": "update_reminder",
      "description": "Update an existing reminder's details",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "write"
    },
    {
      "name": "upsert_entity_field_values",
      "description": "Create or update field values on a person or company",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "write"
    },
    {
      "name": "upsert_list_entry_field_values",
      "description": "Create or update field values in bulk for a specific list entry",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "write"
    }
  ],
  "mcp_tool_count": 52,
  "mcp_tools_evidence": "docs",
  "mcp_tools_repo": null,
  "mcp_tools_repo_party": null,
  "mcp_catalog_shape": "fixed",
  "mcp_catalog_note": null,
  "mcp_tools_fetched_on": "2026-09-27",
  "cli_status": "none-found",
  "cli_party": null,
  "cli_binary": null,
  "cli_install": [],
  "cli_login": null,
  "cli_commands_seen": [],
  "cli_docs_url": null,
  "cli_repo": null,
  "cli_packages": [],
  "cli_evidence": null,
  "cli_checked_on": "2026-09-27",
  "github_org": "affinity",
  "github_org_status": "resolved",
  "github_org_url": "https://github.com/affinity",
  "github_org_evidence": {
    "rule": "rule 3",
    "url": "search q=Affinity",
    "matched_domain": "affinity.co",
    "via": "website",
    "detail": "account website https://affinity.co/ has the vendor's domain",
    "confidence": "strong",
    "candidates_rejected": []
  },
  "github_org_repos": 1,
  "github_org_repos_mcp": 0,
  "github_org_repos_cli": 0,
  "github_org_latest_activity": "2019-08-22T23:49:47Z",
  "github_org_recent_repos": [
    {
      "name": "redlock-cs-async",
      "url": "https://github.com/affinity/redlock-cs-async",
      "kind": "other",
      "description": "Asynchronous Distributed lock with Redis and C# (based on http://redis.io/topics/distlock)",
      "stars": 1,
      "pushed_at": "2019-08-22",
      "latest_release": null
    }
  ],
  "github_org_checked_on": "2026-09-08",
  "mcp_endpoint": null,
  "mcp_docs_url": null,
  "endpoint_status": "unreachable",
  "endpoint_http_status": null,
  "endpoint_last_probed": "2026-09-04",
  "endpoint_wall_note": null,
  "canonical": true,
  "canonical_id": "06-affinity",
  "also_listed_in": [],
  "source_file": "06-revops-infra.md",
  "source_line": 471,
  "file_index": 20,
  "category_num": "06",
  "category_slug": "revops-infra",
  "category_label": "RevOps Infra",
  "heading": "Affinity",
  "missing_schema_fields": [],
  "extra_fields": {},
  "display_rank": 63
}
