Search emails

Add MCP server to your AI tool

Allow AI tools and LLMs to interact with the API documentation portal through MCP.

MCP server URL

https://docs.usehearsay.com/mcp

Standard setup for AI tools providing an mcp.json file

mcp.json
{
  "integrations MCP server": {
    "url": "https://docs.usehearsay.com/mcp"
  }
}

Close
GET /extraction/case/emails/search

Searches the emails in the mailboxes linked to the caller's extraction code. Bodies are not included. Asking for a mailbox outside that set returns 403. The firm's tags are not included.

Query parameters

  • page number

    Default value is 1.

  • perPage number

    Default value is 10.

  • skip number

    If skip/limit not provided, page/perPage will take precedence

  • limit number

    If skip/limit not provided, page/perPage will take precedence

  • sortOrder string

    Values are asc or desc. Default value is asc.

  • searchText string

    Text search applied to all indexed fields (subject, body, snippet, from/to/cc/bcc). Supports the same AND / OR / NOT / -prefix, parentheses, "quoted phrases" and wildcards as the boolean query parser.

  • folders array[string]
  • domains array[string]

    Filter by participant domain(s) (part after @), any-of. Case-insensitive. Requires the domains field on the emailtext Atlas index.

  • excludeDomains array[string]

    Exclude items whose domain(s) match any of these (any-of). Case-insensitive. Must not overlap domains.

  • tags array[string]
  • excludeTags array[string]

    Exclude items carrying any of these tag ids. Must not overlap tags.

  • untagged boolean

    When truthy (1/true), return only emails with no tags attached. Takes precedence over the tags filter.

  • participants array[string]

    Filter by participant email address(es), any-of.

  • excludeEmails array[string]

    Exclude items whose participant address matches any of these (any-of). Must not overlap participants.

  • startDate string(date-time)

    Only return emails whose date is at/after this instant (inclusive). Accepts an ISO-8601 date-time.

  • endDate string(date-time)

    Only return emails whose date is at/before this instant (inclusive). Accepts an ISO-8601 date-time.

  • sourceEmails array[string]
  • sortBy string

    Values are date or subject. Default value is date.

Responses

  • 200 application/json
    Hide response attributes Show response attributes object
    • data object Required
      Hide data attributes Show data attributes object
      • total number Required
      • page number
      • perPage number
      • skip number
      • limit number
      • totalPages number Required
      • nextPage number | null Required
      • previousPage number | null Required
      • data array[object]
        Hide data attributes Show data attributes object
        • createdAt string(date-time) Required
        • updatedAt string(date-time) Required
        • id string Required
        • emailDataProvider object | null Required

          Not loaded by any route, so always null.

        • sourceEmail string Required
        • body string | null Required
        • date string(date-time) | null Required
        • attachments array[object] | null Required

          The full record on routes that load it; null (or an empty list) on routes that do not.

          Hide attachments attributes Show attachments attributes object
          • createdAt string(date-time) Required
          • updatedAt string(date-time) Required
          • id string Required
          • name string Required
          • providerId string Required
          • convertedName string | null Required
          • convertedProviderId string Required
          • provider string Required
          • size number Required

            Size in bytes

          • transferState number | null Required
        • bcc array[object] Required
        • cc array[object] Required
        • from array[object] Required
        • replyTo array[object] Required
        • to array[object] Required
        • folders array[string] Required
        • grantId string Required
        • externalId string Required
        • object string | null Required
        • snippet string | null Required
        • starred boolean Required
        • unread boolean Required
        • subject string | null Required
        • threadId string Required
        • threadIndex number Required
        • tags array[object] | null Required

          The full record on routes that load it; null (or an empty list) on routes that do not.

          Hide tags attributes Show tags attributes object
          • createdAt string(date-time) Required
          • updatedAt string(date-time) Required
          • id string Required
          • name string Required
          • nameLowercase string Required
          • backgroundColor string Required
          • textColor string Required
          • type string Required

            Values are system, organization, case, or user.

          • severity string Required

            Values are info, warning, or danger.

          • origin string Required

            Values are manual or auto-import.

          • creatorAccessType string | null

            Values are org or opposing_council.

          • isActive boolean Required
        • attachedTags array[object]
          Hide attachedTags attributes Show attachedTags attributes object
          • tagId string Required

            Tag id (Tag._id)

          • tag string Required

            Tag display name (Tag.name)

          • addedBy string Required

            Values are user, ai, auto, auto-import, system, or default.

          • addedById string | null
          • removedAt string(date-time) | null
          • removedBy string | null

            Values are user, ai, auto, auto-import, system, or default.

          • removedById string | null
    • statusCode number Required
    • timestamp string(date-time) Required
GET /extraction/case/emails/search
curl \
 --request GET 'http://api.example.com/extraction/case/emails/search' \
 --header "Authorization: Bearer $ACCESS_TOKEN"
Response examples (200)
{
  "data": {
    "total": 42,
    "page": 1,
    "perPage": 20,
    "skip": 0,
    "limit": 20,
    "totalPages": 3,
    "nextPage": 2,
    "previousPage": 42.0,
    "data": [
      {
        "createdAt": "2026-01-15T14:30:00.000Z",
        "updatedAt": "2026-01-15T14:30:00.000Z",
        "id": "507f1f77bcf86cd799439011",
        "emailDataProvider": {},
        "sourceEmail": "jane.doe@example.com",
        "body": "<p>Please find the signed agreement attached.</p>",
        "date": "2026-01-15T14:30:00.000Z",
        "attachments": [
          {
            "createdAt": "2026-01-15T14:30:00.000Z",
            "updatedAt": "2026-01-15T14:30:00.000Z",
            "id": "507f1f77bcf86cd799439011",
            "name": "photo.heic",
            "providerId": "uploads/507f1f77bcf86cd799439011/photo.heic",
            "convertedName": "photo.jpg",
            "convertedProviderId": "uploads/507f1f77bcf86cd799439011/photo.jpg",
            "provider": "s3",
            "size": 204800,
            "transferState": 42.0
          }
        ],
        "bcc": [
          {}
        ],
        "cc": [
          {
            "name": "Sam Lee",
            "email": "sam.lee@example.com"
          }
        ],
        "from": [
          {
            "name": "John Roe",
            "email": "john.roe@example.org"
          }
        ],
        "replyTo": [
          {}
        ],
        "to": [
          {
            "name": "Jane Doe",
            "email": "jane.doe@example.com"
          }
        ],
        "folders": [
          "INBOX"
        ],
        "grantId": "5f0c8b3e-2a41-4d7c-9a51-1c2b3d4e5f60",
        "externalId": "18d1f2a3b4c5d6e7",
        "object": "message",
        "snippet": "Please find the signed agreement attached.",
        "starred": false,
        "unread": false,
        "subject": "Signed agreement",
        "threadId": "18d1f2a3b4c5d6e0",
        "threadIndex": 0,
        "tags": [
          {
            "createdAt": "2026-01-15T14:30:00.000Z",
            "updatedAt": "2026-01-15T14:30:00.000Z",
            "id": "507f1f77bcf86cd799439011",
            "name": "Important",
            "nameLowercase": "important",
            "backgroundColor": "#FDE68A",
            "textColor": "#92400E",
            "type": "system",
            "severity": "info",
            "origin": "manual",
            "creatorAccessType": "org",
            "isActive": true
          }
        ],
        "attachedTags": [
          {
            "tagId": "507f1f77bcf86cd799439011",
            "tag": "Important",
            "addedBy": "user",
            "addedById": "507f1f77bcf86cd799439012",
            "removedAt": "2026-05-04T09:42:00Z",
            "removedBy": "user",
            "removedById": "string"
          }
        ]
      }
    ]
  },
  "statusCode": 200,
  "timestamp": "2026-01-15T10:15:00.000Z"
}