← 返回 Skills 市场
sammy-spk

iGPT email ask

作者 Sammy-spk · GitHub ↗ · v1.0.0
cross-platform ✓ 安全检测通过
553
总下载
2
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install igpt-email-ask
功能描述
Secure, per-user-isolated email reasoning and analysis via the iGPT Context Engine API. Summarizes threads, extracts tasks and decisions, detects sentiment,...
使用说明 (SKILL.md)

iGPT Email Ask

Ask questions about a user's email and get reasoned, structured answers. Powered by iGPT's Context Engine, which reconstructs conversations, decisions, ownership, and intent across time.

What This Skill Does

This skill queries iGPT's recall/ask endpoint to generate answers grounded in a user's connected email data. Unlike basic retrieval, the Context Engine:

  • Reconstructs full conversation threads across replies, forwards, and CCs
  • Identifies who decided what, who owns what, and what's still open
  • Extracts structured data (tasks, deadlines, contacts, risks) from unstructured email
  • Supports multiple quality tiers for different complexity levels
  • Returns text, JSON, or schema-validated structured output
  • Supports streaming (SSE) for real-time responses

When to Use This Skill

  • Summarize what happened in a thread or across threads
  • Extract action items, decisions, or open questions
  • Analyze sentiment or risk in deal/customer threads
  • Answer questions that require understanding context across multiple emails
  • Generate structured data from email content (JSON, schema-validated)
  • Prepare briefings before meetings based on recent correspondence

Prerequisites

  1. An iGPT API key (get one at https://igpt.ai/hub/apikeys/)
  2. A connected email datasource -- the user must have completed OAuth authorization via connectors/authorize before ask will return results. You can check connection status with datasources.list().
  3. Python >= 3.8 with the igptai package installed

Setup

pip install igptai

Set your API key as an environment variable:

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

Usage

Basic: Ask a question

from igptai import IGPT
import os

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

res = igpt.recall.ask(input="Summarize key risks, decisions, and next steps from this week's meetings.")
if res is not None and res.get("error"):
    print("iGPT error:", res)
else:
    print(res)

Get JSON output

Pass output_format="json" for unstructured JSON, or provide a schema for validated structured output:

# Simple JSON output
res = igpt.recall.ask(
    input="What are the open action items from this week?",
    output_format="json"
)

# Schema-validated structured output
res = igpt.recall.ask(
    input="Open action items from this week",
    quality="cef-1-normal",
    output_format={
        "strict": True,
        "schema": {
            "type": "object",
            "required": ["action_items"],
            "additionalProperties": False,
            "properties": {
                "action_items": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "required": ["title", "owner", "due_date"],
                        "properties": {
                            "title": {"type": "string"},
                            "owner": {"type": "string"},
                            "due_date": {"type": "string"}
                        }
                    }
                }
            }
        }
    }
)
print(res)

Example response:

{
    "action_items": [
        {
            "title": "Approve revised Q1 budget allocation",
            "owner": "Dvir Ben-Aroya",
            "due_date": "2026-01-15"
        },
        {
            "title": "Approve final FY2026 strategic priorities",
            "owner": "Board of Directors",
            "due_date": "2026-01-31"
        }
    ]
}

Use quality tiers

iGPT's Context Engine has three quality tiers:

# Normal: fast, good for straightforward questions
res = igpt.recall.ask(
    input="When is my next meeting with Acme Corp?",
    quality="cef-1-normal"
)

# High: deeper reasoning, better for complex multi-thread analysis
res = igpt.recall.ask(
    input="What is the current negotiation status with Acme Corp and what leverage do we have?",
    quality="cef-1-high"
)

# Reasoning: maximum depth, for complex cross-thread synthesis
res = igpt.recall.ask(
    input="Across all communication with Acme over the past quarter, what patterns suggest risk and what should we do about it?",
    quality="cef-1-reasoning"
)

Stream responses

Streaming returns parsed JSON chunks (dicts), not raw text. Extract content from each chunk:

stream = igpt.recall.ask(
    input="Walk me through the timeline of the Acme deal from first contact to now.",
    stream=True
)

for chunk in stream:
    if isinstance(chunk, dict) and chunk.get("error"):
        print("Stream error:", chunk)
        break
    # Each chunk is a parsed JSON dict
    print(chunk)

Streaming is resilient: if the connection breaks, the iterator yields an error chunk and finishes rather than throwing.

Check datasource connection before asking

# Verify user has a connected datasource
status = igpt.datasources.list()
if status is not None and not status.get("error"):
    print("Connected datasources:", status)
else:
    # Connect a datasource first
    auth = igpt.connectors.authorize(service="spike", scope="messages")
    print("Open this URL to authorize:", auth.get("url"))

Parameters

Parameter Type Required Description
input string Yes The prompt or question to ask.
user string Yes (or set in constructor) Unique user identifier scoping the query to their connected data. Per-call value overrides constructor default.
stream boolean No (default: false) If true, returns a generator yielding parsed JSON dicts via SSE.
quality string No Context Engine quality tier: "cef-1-normal", "cef-1-high", or "cef-1-reasoning".
output_format string or object No "text" (default), "json", or {"strict": true, "schema": \x3CJSON Schema>} for validated structured output.

Error Handling

The SDK does not throw exceptions. It returns normalized error objects:

res = igpt.recall.ask(input="What happened in yesterday's board meeting?")

if res is not None and res.get("error"):
    error = res["error"]
    if error == "auth":
        print("Check your API key")
    elif error == "params":
        print("Check your request parameters")
    elif error == "network_error":
        print("Network issue -- the SDK retries with exponential backoff (3 attempts by default) before returning this")
else:
    print(res)

External Endpoints

This skill communicates exclusively with:

  • https://api.igpt.ai/v1/recall/ask/ -- the reasoning endpoint
  • https://api.igpt.ai/v1/connectors/authorize/ -- only during initial datasource connection setup
  • https://api.igpt.ai/v1/datasources/list/ -- to check connection status

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/igpt-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.
  • Built-in retries: The SDK retries failed requests with exponential backoff (default: 3 attempts, 100ms base, 2x factor) before returning a network_error.

For the full security model, see https://docs.igpt.ai/docs/security/model.

What This Skill Does NOT Do

  • Does not send, modify, forward, or delete emails
  • Does not access the filesystem or execute shell commands
  • Does not install persistent services or scheduled tasks
  • Does not contact endpoints other than api.igpt.ai
  • Does not store API keys or OAuth tokens outside the environment variable

Example Questions

These all work as natural language prompts:

  • "Summarize key risks from this week's email threads" -- cross-thread analysis
  • "What are the open action items from yesterday's board meeting?" -- task extraction
  • "What's the current status of the Acme deal?" -- deal intelligence
  • "Who owns the budget approval and when is it due?" -- ownership and deadline extraction
  • "Are there any threads where tone has shifted negatively in the last 7 days?" -- sentiment analysis
  • "Generate a briefing for my meeting with Sarah tomorrow" -- meeting prep

Resources

安全使用建议
This skill appears to do what it says: it will send your connected email content to the iGPT Context Engine and return summaries/structured data, and it only requires your IGPT_API_KEY. Before installing, consider: (1) Do you trust the iGPT service/privacy policy? Email content sent to the API may include sensitive data. (2) Use an API key with least privilege and be prepared to revoke it if needed. (3) The SKILL.md recommends pip installing the igptai package — install into a virtual environment or sandbox if you want isolation and verify the package source (PyPI/project homepage). (4) The user must complete OAuth to connect their email datasource; review OAuth scopes and connected apps in your email provider and revoke access if unexpected. If any of these raise concerns (company policy, regulatory limits on sending email contents to a third party), do not enable the skill until those are resolved.
功能分析
Type: OpenClaw Skill Name: igpt-email-ask Version: 1.0.0 The skill bundle is benign. The `SKILL.md` clearly outlines the skill's purpose to analyze user email data via the `igpt.ai` API, explicitly disclaiming shell/filesystem access, persistence, and unauthorized data exfiltration. It details a robust security model including API-key scoping, per-user isolation, read-only OAuth, and no data retention. There are no prompt injection attempts against the agent, no signs of malicious execution, or obfuscation. All communication is restricted to `api.igpt.ai`.
能力评估
Purpose & Capability
Name/description (email analysis via iGPT) align with required items: only IGPT_API_KEY is requested and the instructions call the igptai client to query recall/ask. No unrelated cloud credentials, binaries, or config paths are requested.
Instruction Scope
SKILL.md limits operations to calling iGPT's recall/ask and checking datasource connection. It does not instruct reading arbitrary local files or unrelated environment variables. It does mention installing the igptai package (pip) and that the user must have completed OAuth for their email datasource — both are expected for this functionality.
Install Mechanism
There is no automated install spec in the skill bundle (instruction-only). The README instructs pip install igptai, which is a normal user action; the skill itself does not download arbitrary code during install.
Credentials
Only IGPT_API_KEY is declared as required and as the primary credential, which is proportionate for a service that queries a user's connected email via iGPT. The skill does not request unrelated secrets or multiple credentials.
Persistence & Privilege
The skill is not always-enabled and does not request persistent system-level changes or access to other skills' configs. It allows normal autonomous invocation (platform default) but does not require elevated privileges.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install igpt-email-ask
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /igpt-email-ask 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
iGPT Email Ask 1.0.0 – initial release - Provides secure, per-user-isolated email reasoning and analysis via the iGPT Context Engine API. - Summarizes threads, extracts tasks and decisions, detects sentiment, and reasons across multiple conversations. - Supports both text and structured JSON output, with schema validation and streaming (SSE). - Error handling returns normalized error objects instead of exceptions. - Requires an iGPT API key and a connected email datasource. - Designed for analysis, summarization, and structured extraction from email; for basic retrieval, use igpt-email-search.
元数据
Slug igpt-email-ask
版本 1.0.0
许可证
累计安装 0
当前安装数 0
历史版本数 1
常见问题

iGPT email ask 是什么?

Secure, per-user-isolated email reasoning and analysis via the iGPT Context Engine API. Summarizes threads, extracts tasks and decisions, detects sentiment,... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 553 次。

如何安装 iGPT email ask?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install igpt-email-ask」即可一键安装,无需额外配置。

iGPT email ask 是免费的吗?

是的,iGPT email ask 完全免费(开源免费),可自由下载、安装和使用。

iGPT email ask 支持哪些平台?

iGPT email ask 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 iGPT email ask?

由 Sammy-spk(@sammy-spk)开发并维护,当前版本 v1.0.0。

💬 留言讨论