✓ Verified 🌐 Web Scrapers ✓ Enhanced Data

Igpt Email Search

Secure, per-user-isolated semantic email search via the iGPT API.

Rating
4.2 (51 reviews)
Downloads
807 downloads
Version
1.0.0

Overview

Secure, per-user-isolated semantic email search via the iGPT API.

Complete Documentation

View Source →

iGPT Email Search

Search a user's email by meaning, not just keywords. Hybrid semantic + keyword retrieval across their entire inbox history.

What This Skill Does

This skill queries iGPT's recall/search endpoint to find relevant emails and threads from a user's connected inbox. The search engine:

  • Combines semantic vector search (understands meaning) with keyword matching (catches exact terms)
  • Searches across the user's full indexed email history (not limited to 90 days like some providers)
  • Supports date range filtering for time-bounded queries
  • Returns ranked results with relevance scoring
  • Includes attachment references when present
This is retrieval only. It finds and returns email content. It does not reason over it, summarize it, or extract structured data. For that, use igpt-email-ask — the companion skill that runs iGPT's Context Engine for analysis, summarization, and structured extraction.

When to Use This Skill

  • Find emails about a specific topic, project, or person
  • Locate threads within a date range
  • Retrieve raw email content for further processing
  • Feed email context into another tool or agent step
  • Check what was discussed about a topic before taking action
  • Pull recent correspondence with a specific contact or company

When to Use igpt-email-ask Instead

If you need summarized or synthesized answers, structured data extraction (tasks, decisions, contacts), sentiment analysis, reasoning across multiple threads, or questions that require understanding rather than finding — use igpt-email-ask, not search.

Rule of thumb: if the prompt is a question, use ask. If the prompt is a lookup, use search.

Prerequisites

  • An iGPT API key (get one at https://igpt.ai/hub/apikeys/)
  • A connected email datasource — the user must have completed OAuth authorization via connectors/authorize before search will return results
  • Python >= 3.8 with the igptai package installed

Setup

bash
pip install igptai

Set your API key as an environment variable:

bash
export IGPT_API_KEY="your-api-key-here"

Usage

Basic: Search by topic

python
from igptai import IGPT
import os

igpt = IGPT(api_key=os.environ["IGPT_API_KEY"], user="user_123")

results = igpt.recall.search(query="board meeting notes")
print(results)

Returns a ranked list of relevant emails and threads matching the query, ordered by relevance.

Search with date range

Narrow results to a specific time window:

python
results = igpt.recall.search(
    query="budget allocation",
    date_from="2026-01-01",
    date_to="2026-01-31"
)
print(results)

Limit number of results

python
results = igpt.recall.search(
    query="partnership proposals",
    max_results=10
)
print(results)

Search for a specific person's emails

The semantic engine understands participant context:

python
results = igpt.recall.search(
    query="emails from Sarah about the product launch",
    date_from="2026-01-01"
)
print(results)

Combine with ask for a two-step workflow

A common pattern: search first to see what's there, then ask for analysis:

python
# Step 1: Find relevant threads
results = igpt.recall.search(
    query="Acme Corp contract negotiation",
    max_results=20
)
print(f"Found {len(results)} relevant threads")

# Step 2: Ask for structured analysis
analysis = igpt.recall.ask(
    input="Summarize the current status of the Acme Corp contract negotiation. What are the open issues and who owns them?",
    output_format="json"
)
print(analysis)

Parameters

ParameterTypeRequiredDescription
querystringYesSearch query. Supports natural language (semantic) and exact terms (keyword).
userstringYes (or set in constructor)Unique user identifier scoping the query to their connected data.
date_fromstringNoStart date filter in YYYY-MM-DD format.
date_tostringNoEnd date filter in YYYY-MM-DD format.
max_resultsintegerNoMaximum number of results to return.

Error Handling

The SDK uses a no-throw pattern. Errors are returned as values, not exceptions:

python
results = igpt.recall.search(query="Q4 planning")

if isinstance(results, dict) and results.get("error"):
    error = results["error"]
    if error == "auth":
        print("Check your API key")
    elif error == "params":
        print("Check your request parameters")
    elif error == "network_error":
        print("Network issue, retry")
else:
    for result in results:
        print(result)

External Endpoints

This skill communicates exclusively with:

  • https://api.igpt.ai/v1/recall/search — the search endpoint
  • https://api.igpt.ai/v1/connectors/authorize — only during initial datasource connection setup
No other external endpoints are contacted. No data is sent to any third-party service. The igptai PyPI package source is available at https://github.com/igptai/igptai-python.

Security & Privacy

  • API-key scoped: All requests authenticate via IGPT_API_KEY sent as a Bearer token over HTTPS. No shell access, no filesystem access, no system commands.
  • Per-user isolation: Every query is scoped to a specific user identifier. User A cannot access User B's email data. Isolation is enforced at the index and execution level, not as a filter layer.
  • OAuth read-only: The email datasource connection uses OAuth with read-only scopes. The skill does not send, modify, or delete emails.
  • No data retention: Prompts are discarded after execution. Memory is reconstructed on-demand, not stored.
  • Transport encryption: All communication occurs over HTTPS. No plaintext endpoints.
  • No local persistence: This skill does not write to disk, modify environment files, or create persistent configuration outside of the standard IGPT_API_KEY environment variable.
For the full security model, see https://docs.igpt.ai/docs/security/model.

How It Differs from Basic Email Search

Basic email/Gmail searchiGPT Email Search
Keyword matching onlySemantic + keyword hybrid
Misses related content using different wordsUnderstands meaning, finds conceptually related emails
Limited to Gmail's search operatorsNatural language queries work
Provider-specific (Gmail OR Outlook)Searches across all connected providers
Often limited history (Nylas: 90 days)Full email history indexed
Returns raw MIME dataReturns clean, structured results

Example Queries

These all work as natural language:

  • "board meeting notes" — finds emails about board meetings even if they don't contain that exact phrase
  • "emails about the product launch timeline" — semantic understanding of the topic
  • "anything from legal about compliance" — understands department and topic context
  • "invoices from Q4 2025" — combines topic with implicit date context
  • "conversations where deadlines were mentioned" — conceptual search

Companion Skills

SkillWhat it doesWhen to use it
igpt-email-askReasoning, summaries, structured extraction, sentimentWhen you need answers, not just results
igpt-email-search (this skill)Hybrid semantic + keyword retrievalWhen you need to find and retrieve emails
Both skills use the same IGPT_API_KEY and connected datasources. Install both for the full search → analyze workflow.

Resources

  • Get API Key: https://igpt.ai/hub/apikeys/
  • Documentation: https://docs.igpt.ai
  • API Reference: https://docs.igpt.ai/docs/api-reference/search
  • Playground: https://igpt.ai/hub/playground/
  • Python SDK: https://pypi.org/project/igptai/
  • Node.js SDK: https://www.npmjs.com/package/igptai
  • GitHub: https://github.com/igptai/igptai-python

Installation

Terminal bash

openclaw install igpt-email-search
    
Copied!

💻Code Examples

export IGPT_API_KEY="your-api-key-here"

export-igptapikeyyour-api-key-here.txt
## Usage

### Basic: Search by topic

print(results)

printresults.txt
Returns a ranked list of relevant emails and threads matching the query, ordered by relevance.

### Search with date range

Narrow results to a specific time window:

print(results)

printresults.txt
### Search for a specific person's emails

The semantic engine understands participant context:

print(results)

printresults.txt
### Combine with ask for a two-step workflow

A common pattern: search first to see what's there, then ask for analysis:

print(analysis)

printanalysis.txt
## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| query | string | Yes | Search query. Supports natural language (semantic) and exact terms (keyword). |
| user | string | Yes (or set in constructor) | Unique user identifier scoping the query to their connected data. |
| date_from | string | No | Start date filter in YYYY-MM-DD format. |
| date_to | string | No | End date filter in YYYY-MM-DD format. |
| max_results | integer | No | Maximum number of results to return. |

## Error Handling

The SDK uses a no-throw pattern. Errors are returned as values, not exceptions:
example.py
from igptai import IGPT
import os

igpt = IGPT(api_key=os.environ["IGPT_API_KEY"], user="user_123")

results = igpt.recall.search(query="board meeting notes")
print(results)
example.py
results = igpt.recall.search(
    query="budget allocation",
    date_from="2026-01-01",
    date_to="2026-01-31"
)
print(results)
example.py
results = igpt.recall.search(
    query="partnership proposals",
    max_results=10
)
print(results)
example.py
results = igpt.recall.search(
    query="emails from Sarah about the product launch",
    date_from="2026-01-01"
)
print(results)
example.py
# Step 1: Find relevant threads
results = igpt.recall.search(
    query="Acme Corp contract negotiation",
    max_results=20
)
print(f"Found {len(results)} relevant threads")

# Step 2: Ask for structured analysis
analysis = igpt.recall.ask(
    input="Summarize the current status of the Acme Corp contract negotiation. What are the open issues and who owns them?",
    output_format="json"
)
print(analysis)

Tags

#search_and-research #api

Quick Info

Category Web Scrapers
Model GPT-4
Complexity One-Click
Author sammy-spk
Last Updated 3/10/2026
🚀
Optimized for
GPT-4

Ready to Install?

Get started with this skill in seconds

openclaw install igpt-email-search