安全、用户隔离的语义邮件搜索,通过 iGPT API 实现。混合语义+关键词检索,覆盖用户在 Gmail、Outlook 或 IMAP 整个邮箱历史。
Search a user's email by meaning, not just keywords. Hybrid semantic + keyword retrieval across their entire inbox history.
This skill queries iGPT's recall/search endpoint to find relevant emails and threads from a user's connected inbox. The search engine:
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.
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.
connectors/authorize before search will return resultsigptai package installedbash
pip install igptai
Set your API key as an environment variable:
bash
export IGPT_API_KEY="your-api-key-here"
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.
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)
python
results = igpt.recall.search(
query="partnership proposals",
max_results=10
)
print(results)
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)
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)
ParameterTypeRequiredDescriptionquerystringYesSearch 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.
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)
This skill communicates exclusively with:
https://api.igpt.ai/v1/recall/search — the search endpointhttps://api.igpt.ai/v1/connectors/authorize — only during initial datasource connection setupNo 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.
IGPT_API_KEY sent as a Bearer token over HTTPS. No shell access, no filesystem access, no system commands.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.IGPT_API_KEY environment variable.For the full security model, see https://docs.igpt.ai/docs/security/model.
Basic email/Gmail searchiGPT Email SearchKeyword matching onlySemantic + keyword hybridMisses related content using different wordsUnderstands meaning, finds conceptually related emailsLimited to Gmail's search operatorsNatural language queries workProvider-specific (Gmail OR Outlook)Searches across all connected providersOften limited history (Nylas: 90 days)Full email history indexedReturns raw MIME dataReturns clean, structured results
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 searchSkillWhat it doesWhen to use it**igpt-email-askReasoning, summaries, structured extraction, sentimentWhen you need answers, not just resultsigpt-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.