{
  "id": "03-grain",
  "slug": "grain",
  "normalized_name": "grain",
  "name": "Grain",
  "vendor_url": "grain.com",
  "category": "conversation-intel",
  "what_it_does": "AI meeting notetaker that records and transcribes calls and builds a searchable, cross-meeting library synced to the CRM.",
  "ai_features": "Cross-meeting \"Ask anything\" Q&A over the meeting library, automatic action items/summaries. The official MCP tool list also exposes deal tools (list_open_deals, fetch_deal) and coaching-scorecard tools (list_coaching_feedback) gated to Business/Enterprise, implying deal-risk and coaching features exist beyond plain notetaking, though their depth wasn't independently verified from the marketing site alone.",
  "mcp_status": "official",
  "mcp_url": "https://api.grain.com/_/mcp ; https://developers.grain.com/mcp (server endpoint https://api.grain.com/_/mcp) ; repo https://github.com/grain-team/grain-meeting-memory-plugin",
  "mcp_auth": "OAuth via the native Claude integration, or manual server-URL setup for other MCP clients. Deal and coaching-feedback tools specifically require a Business or Enterprise plan.",
  "api_gate": "paid. The Free plan has no API access; Personal API access (via a Personal Access Token) starts at the Starter plan, so a solo operator can reach it but must pay. Workspace-wide API access requires Business/Enterprise plus admin rights.",
  "revops_role": "Meeting-capture and AI-searchable knowledge layer with direct, official MCP access reachable on a paid Starter plan without enterprise sales engagement.",
  "tier": "RESEARCHED",
  "last_checked": "2026-09-07",
  "sources": "https://developers.grain.com/mcp, https://support.grain.com/en/articles/15507288-grain-api, https://grain.com/pricing, https://api.grain.com/_/mcp",
  "notes": "An unofficial third-party server (https://github.com/eadm/grain-mcp-server) also exists - prefer the official one. 2026-09-07: https://api.grain.com/_/mcp returned 401 to an MCP initialize POST (https://api.grain.com/_/mcp). 2026-09-12 (P6-04 repo sweep): first-party repository recorded at https://github.com/grain-team/grain-meeting-memory-plugin - first-party Claude plugin that wires the hosted server, NOT the server source. Evidence: the org grain-team, tied to grain.com by harvest_orgs.py domain evidence, and the repo's .mcp.json declares an http server at https://api.grain.com/_/mcp, which is the endpoint this entry already records.",
  "mcp_status_bucket": "official",
  "api_gate_bucket": "paid",
  "mcp_urls": [
    "https://api.grain.com/_/mcp",
    "https://developers.grain.com/mcp",
    "https://github.com/grain-team/grain-meeting-memory-plugin"
  ],
  "source_urls": [
    "https://developers.grain.com/mcp",
    "https://support.grain.com/en/articles/15507288-grain-api",
    "https://grain.com/pricing",
    "https://api.grain.com/_/mcp"
  ],
  "source_annotations": [],
  "vendor_domain": "grain.com",
  "display_name": "Grain",
  "docs_url": null,
  "jobs": [
    "fetch-call-transcript",
    "search-call-library",
    "summarize-meeting",
    "read-crm-records",
    "write-crm-records",
    "score-rep-performance"
  ],
  "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": [
    "https://github.com/grain-team/grain-meeting-memory-plugin"
  ],
  "docs_digest": null,
  "docs_last_crawled": null,
  "submission": null,
  "mcp_tools": [
    {
      "name": "fetch_deal",
      "description": "Get detailed deal information",
      "required_params": [
        "deal_id"
      ],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "fetch_meeting",
      "description": "Get detailed information about a specific meeting",
      "required_params": [
        "meeting_id"
      ],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "fetch_meeting_coaching_feedback",
      "description": "Get detailed coaching scorecard for specific meeting",
      "required_params": [
        "meeting_id"
      ],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "fetch_meeting_notes",
      "description": "Get AI-generated meeting notes (more concise than transcripts)",
      "required_params": [
        "meeting_id"
      ],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "fetch_meeting_transcript",
      "description": "Retrieve full meeting transcript",
      "required_params": [
        "meeting_id"
      ],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "list_all_deals",
      "description": "Access HubSpot Deal intelligence",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "list_attended_meetings",
      "description": "Get filtered list of all accessible meetings",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "list_coaching_feedback",
      "description": "Get AI-generated sales coaching insights",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "list_meetings",
      "description": "Get filtered list of all accessible meetings",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "list_open_deals",
      "description": "Access HubSpot Deal intelligence",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "list_workspace_users",
      "description": "Get all users in your Grain workspace",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "myself",
      "description": "Get your Grain account information",
      "required_params": [],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "search_companies",
      "description": "Find companies that participated in meetings when filtering",
      "required_params": [
        "search_strings"
      ],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "search_meetings",
      "description": "Semantic search across all meeting transcripts",
      "required_params": [
        "search_string"
      ],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    },
    {
      "name": "search_persons",
      "description": "Search for meeting participants when filtering",
      "required_params": [
        "search_string"
      ],
      "evidence": "docs",
      "repo_party": null,
      "source_party": "vendor",
      "risk": "read"
    }
  ],
  "mcp_tool_count": 15,
  "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": "grain-team",
  "github_org_status": "resolved",
  "github_org_url": "https://github.com/grain-team",
  "github_org_evidence": {
    "rule": "rule 3",
    "url": "search q=Grain",
    "matched_domain": "grain.com",
    "via": "website",
    "detail": "account website https://grain.com has the vendor's domain",
    "confidence": "strong",
    "candidates_rejected": [
      {
        "login": "grain-lang",
        "from": "rule 3 (Grain)",
        "type": "Organization",
        "website": "https://grain-lang.org/",
        "rejected": "website grain-lang.org does not match grain.com"
      }
    ]
  },
  "github_org_repos": 13,
  "github_org_repos_mcp": 0,
  "github_org_repos_cli": 0,
  "github_org_latest_activity": "2026-08-17T10:16:00Z",
  "github_org_recent_repos": [
    {
      "name": "milvex",
      "url": "https://github.com/grain-team/milvex",
      "kind": "other",
      "description": "An Elixir Client for Milvus",
      "stars": 4,
      "pushed_at": "2026-08-17",
      "latest_release": "v0.14.2"
    },
    {
      "name": "grain-meeting-memory-plugin",
      "url": "https://github.com/grain-team/grain-meeting-memory-plugin",
      "kind": "plugin-or-integration",
      "description": null,
      "stars": 1,
      "pushed_at": "2026-07-27",
      "latest_release": null
    },
    {
      "name": "ueberauth_hubspot",
      "url": "https://github.com/grain-team/ueberauth_hubspot",
      "kind": "other",
      "description": "Hubspot Strategy for Überauth",
      "stars": 0,
      "pushed_at": "2026-05-22",
      "latest_release": null
    },
    {
      "name": "meeting-data-analysis",
      "url": "https://github.com/grain-team/meeting-data-analysis",
      "kind": "other",
      "description": "For customers to pull meeting metrics",
      "stars": 0,
      "pushed_at": "2025-12-22",
      "latest_release": null
    },
    {
      "name": "grain-workspace-api-example",
      "url": "https://github.com/grain-team/grain-workspace-api-example",
      "kind": "docs-or-examples",
      "description": "Example of how to iterate over all recordings in a workspace to download the transcripts",
      "stars": 0,
      "pushed_at": "2025-07-10",
      "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": "03-grain",
  "also_listed_in": [],
  "source_file": "03-conversation-intel.md",
  "source_line": 106,
  "file_index": 5,
  "category_num": "03",
  "category_slug": "conversation-intel",
  "category_label": "Conversation Intel",
  "heading": "Grain",
  "missing_schema_fields": [],
  "extra_fields": {},
  "display_rank": 92
}
