Skip to main content
Glama
260,400 tools. Last updated 2026-07-05 06:01

"Categorizing messages such as emails or system logs" matching MCP tools:

  • MONITORING: Fetch Terraform deployment logs with pagination Fetches logs from a running or completed Terraform deployment job. For **completed jobs**: uses REST endpoint for instant retrieval (supports `tail` for server-side filtering). For **running jobs**: streams via SSE with timeout-based pagination. **PAGINATION** (running jobs only): Use `last_event_id` from the response to fetch more: 1. First call: `tflogs(session_id='...')` → get logs + `last_event_id` 2. Next call: `tflogs(session_id='...', last_event_id='...')` → get NEW logs only 3. Repeat until `complete: true` in response **RESPONSE FIELDS**: - `logs`: Array of log messages collected - `last_event_id`: Pass this back to get more logs (pagination cursor, SSE only) - `complete`: true if job finished, false if more logs may be available - `total_logs`: total log entries before tail truncation REQUIRES: session_id from convoopen response (format: sess_v2_...). OPTIONAL: job_id to target a specific deployment (use tfruns to discover IDs), timeout (default 50s, max 55s), last_event_id (for pagination), tail (return only last N entries) ⚠️ CONTEXT WARNING: Deploy logs can be hundreds of lines. Use tail: 50 for completed jobs to avoid blowing up the context window.
    Connector
  • Read messages from a Roomcomm room. Core read operation for every tick of your polling loop. Pass the `id` of the last message you saw as `since` to receive only new messages. Omit `since` on the very first tick to get the full (or most recent) history. Returns {messages: [{id, agent_id, text, timestamp}], has_more}. Track the largest `id` as your new `last_id`. Args: uuid: Room UUID or full room URL. since: Return only messages with id > since. limit: Maximum messages to return (default 100, max 500). Example: read_messages("a1b2…", since=42) on each tick.
    Connector
  • Hide a connector's tools from the active tool list for the current user. Use when the user says they don't use a service or wants to pause a connector, such as 'disable Shopify' or 'hide TikTok'. The connector remains configured and can be restored with enable_connector. Disabled connectors still appear in get_connector_status marked Paused.
    Connector
  • Lists Pollar's current leading news events, ranked by freshness and editorial momentum. Use for broad requests for current headlines with no named subject, place, or country. For a subject or geographic request, use search_news instead. Optionally filters by a taxonomy dot-path such as 'world.politics'; call list_categories first when the category is unknown.
    Connector
  • Get build and runtime logs for a deployment. If no deployment_id is provided, returns logs for the latest deployment. Use this after calling deploy to monitor build progress and diagnose failures. Logs include: framework detection output, dependency installation, build steps, container startup, and health check results. If a deployment fails, check the logs for error details — common issues include missing dependencies, build errors, or the app not listening on the correct PORT (check the PORT env var — 8080 for auto-detected frameworks, or the EXPOSE value from Dockerfile).
    Connector
  • Hide one or more emails from the user's feed (does not delete them). Optional reason, e.g. 'spam', 'not_interested', 'never_show_this_sender'.
    Connector

Matching MCP Servers

  • A
    license
    -
    quality
    A
    maintenance
    Enables fuzzy search and browsing of Apple Messages (iMessage/SMS) with contact resolution, filtering by sender or date, and context display through CLI, MCP, or Claude Code plugin.
    Last updated
    67
    18
    MIT

Matching MCP Connectors

  • Email for AI agents: read, search, send, organize, and schedule across your inboxes.

  • Build and manage your design system with AI: tokens, themes, components, icons, Figma and code.

  • List vibes available to the authenticated user. Returns vibe IDs, names, and sources (system or custom) that can be passed as vibe_id to generate_presentation.
    Connector
  • Add and/or remove the same labels on many email messages at once in a single Gmail API call (wraps users.messages.batchModify). Use this for bulk operations such as marking multiple specific emails as read (remove ['UNREAD']), archiving (remove ['INBOX']), or starring (add ['STARRED']). Use list_labels to find label IDs (Gmail requires IDs, not names). Common system label IDs: INBOX, STARRED, IMPORTANT, UNREAD, SPAM, TRASH. Provide 1-1000 email IDs and at least one of `add` or `remove`. The same label changes are applied to every listed message. Gmail returns no per-message status, so a successful call means Gmail accepted the request; an invalid email ID or label ID typically causes Gmail to reject it.
    Connector
  • Scan a free-form block of text and pull out every candidate IBAN, then validate each one. Useful for unstructured sources such as emails, invoices, PDFs pasted as text, or chat messages where IBANs appear inline and may be split by spaces or surrounded by other words. Returns a JSON array of the IBANs found, each with its validation result (`valid`, `countryCode`, bank details when known); text containing no IBAN returns an empty list rather than an error. Use this as the first step when the account number is buried in prose; pass the extracted IBANs to `validate_bulk_ibans` only if you need to re-check them separately. Input text is processed in memory and not stored.
    Connector
  • Inspect one image generator you own (its model and full config) at head or a pinned version. ``generator_id`` accepts a UUID string. Platform ``system:...`` tier aliases and system generator UUIDs are not returned here (NotFound): system generators are run-only and their internal config never surfaces through list, get, deploy, or revoke. Defaults to the current version; pass ``version`` to pin. Returns the full deploy-time payload (``provider``, ``model``, ``generation_contract``, ``default_params``) plus ``config_hash`` (SHA-256 over the config) so callers can detect drift across versions. Requires ownership; a cross-user or revoked generator surfaces as NotFound.
    Connector
  • Check whether the mail Mailopoly holds is up to date with what's actually at the email provider right now — use this when a user says "my emails aren't coming through", "is my inbox synced?", "am I missing emails?". It lists the account's most recent messages straight from Gmail/Outlook/IMAP and compares them to what we've stored. Each account returns provider_recent (newest emails at the provider) and mailopoly_recent (newest we hold) — present these two lists side by side so the user can see they match, then the verdict (up_to_date or behind_count + missing_preview). `account` is a connected email address (omit to check every syncable account). Set force=true to also START pulling the missing mail when an account is behind (the result's status becomes 'syncing_started'); leave force=false to just report. force is rate limited per account.
    Connector
  • Query raw EVM logs with address/topic filters, common event aliases, earliest/latest scanning, and optional inline decoding. COMMON USER ASKS: - Recent USDC Transfer logs - First recent USDC Transfer log - Latest ERC721/pass mint ID and tx hash FIRST CHOICE FOR: - NFT or ERC721 mint lookups such as latest pass minted, token ID, and mint transaction hash - contract event questions where the user needs exact event evidence rather than wallet or transaction summaries WHEN TO USE: - You need event logs filtered by contract or topic signature. - You want decoded log hints while still keeping the raw log shape available. - You want the first or last matching event in a bounded block/time window. - You want common event names such as transfer, approval, swap, mint, or burn instead of remembering topic0 hashes. - You need the latest ERC721/pass mint in a bounded deployment/recent window: filter Transfer events with topic1 as the zero address, use scan_order=latest, limit=1, and decode=true to expose decoded_log.decoded.token_id plus transaction_hash. DON'T USE: - You only want token transfers, which are easier with the token-transfer tool. EXAMPLES: - Recent USDC Transfer logs: {"network":"base-mainnet","timeframe":"1h","token_symbols":["USDC"],"event":"transfer","limit":20} - First recent USDC Transfer log: {"network":"base-mainnet","timeframe":"1h","token_symbols":["USDC"],"event":"transfer","scan_order":"earliest","limit":1} - Latest ERC721/pass mint ID and tx hash: {"network":"base-mainnet","from_block":46020000,"to_block":46100000,"addresses":["0xE4E70FdF2Fc1147a7f35c4c5de88E6BeA63eeAfA"],"event":"transfer","topic1":["0x0000000000000000000000000000000000000000000000000000000000000000"],"scan_order":"latest","decode":true,"include_transaction":true,"limit":1} - Decode logs inline: {"network":"ethereum-mainnet","timeframe":"1h","topic0":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"],"decode":true,"limit":10}
    Connector
  • Reads recent messages from a Slack channel or DM. Reads from the local IndexedDB cache — only messages that Slack Desktop has synced to disk are available (typically the last few hundred messages for active channels). channel_id must come from slack_list_channels.
    Connector
  • # Instructions 1. Query Axiom datasets using Axiom Processing Language (APL). The query must be a valid APL query string. **Only use this for `events`, `otel.traces`, and similar datasets. Do NOT use for `otel-metrics-v1` datasets — use `queryMetrics()` instead.** 2. ALWAYS understand schema before substantive queries—do not guess column names or types. Prefer `getDatasetFields()` or APL `| where _time > ago(5m) | getschema` on a narrow window (use dataset names from `listDatasets`); use `take 1` or project specific columns for sample values. Before you `where` or `summarize` by a field, estimate cardinality on recent data: `| where _time > ago(5m) | summarize count() by <field> | top 10 by count_`. Avoid `project *` or projecting all fields on very wide datasets unless deliberately mapping shape (see item 5). Skipping probes causes wrong field names, bad types, and expensive re-runs. 3. Keep in mind that there's a maximum row limit of 65000 rows per query. 4. Prefer aggregations over non aggregating queries when possible to reduce the amount of data returned. 5. Be selective in what you project in each query (unless otherwise needed, like for discovering the schema). It's expensive to project all fields. 6. ALWAYS restrict `startTime`/`endTime` to the narrowest window that answers the question—every query scans data and consumes resources. Prefer the smallest APL per step; widen time or complexity only after probing (item 2). 7. When filtering for a specific term or value, put it on the right field—use `has`/`has_cs`/`contains` there after item 2. See **Avoid `search`** under Query performance rules. 8. **`map[string]` columns (e.g. `attributes`, `attributes.custom`, `resource` in OTel-style data)** — `getDatasetFields` and in-query `getschema` show the type but **not** the keys inside the map. You must **sample** (`take`, `project` the map column, or `mv-expand` + `summarize` to list keys) to learn the structure, then use bracket access (e.g. `['attributes']['http.method']`, `['attributes.custom']['http.response.status_code']`). Do not assume key names across services or SDK versions. ### Query performance rules 1. **Narrow `startTime`/`endTime`** — These bound how much data is scanned. Do not rely on in-query `_time` filters alone; keep the API window as tight as your question allows. 2. **`_time` first in APL** — When you filter on `_time` in the query text, put `where _time between (...)` before other filters. This keeps extra in-query narrowing fast. 3. **Most selective `where` first** — Axiom does not reorder predicates; put the filter that removes the most rows earliest. 4. **`project` early and narrowly** — Avoid pulling all columns from very wide datasets (expensive payloads; risk of failures on huge rows). 5. **Prefer fast string ops** — Use `_cs` (case-sensitive) variants when possible; prefer `startswith`/`endswith` over `contains` when applicable; `matches regex` only as a last resort. 6. **Use `has`/`has_cs` for unique-looking strings** — IDs, UUIDs, trace IDs, error codes, session tokens. `has` leverages full-text indexes when available and is much faster than `contains` for high-entropy terms. Use `contains` only when you need true substring matching (e.g., partial paths). 7. **Duration literals** — e.g. `duration > 10s`, not manual conversion. 8. **Avoid search** — scans ALL fields. Use `has`/`has_cs`/`contains` on specific fields. 9. **Avoid heavy `parse_json()` in hot paths** — Filter/narrow first when possible. 10. **Avoid pack(*)** — creates dict of ALL fields per row. Use pack with named fields only. 11. Limit results—use take 10 or top 20 instead of default 1000 when exploring. 12. **Field quoting**—quote identifiers with dots/dashes/spaces: ['geo.country']. For map field keys, use index notation: ['attributes.custom']['http.protocol']. # Examples Basic: - Filter: ['logs'] | where ['severity'] == "error" or ['duration'] > 500ms - Time range: ['logs'] | where ['_time'] > ago(2h) and ['_time'] < now() - Project rename: ['logs'] | project-rename responseTime=['duration'], path=['url'] Aggregations: - Count by: ['logs'] | summarize count() by bin(['_time'], 5m), ['status'] - Multiple aggs: ['logs'] | summarize count(), avg(['duration']), max(['duration']), p95=percentile(['duration'], 95) by ['endpoint'] - Dimensional: ['logs'] | summarize dimensional_analysis(['isError'], pack_array(['endpoint'], ['status'])) - Histograms: ['logs'] | summarize histogram(['responseTime'], 100) by ['endpoint'] - Distinct: ['logs'] | summarize dcount(['userId']) by bin_auto(['_time']) Text matching & Parse: - Match on known fields (avoid full-row `search`): ['logs'] | where ['message'] has_cs "error" or ['message'] has_cs "exception" - Parse logs: ['logs'] | parse-kv ['message'] as (duration:long, error:string) with (pair_delimiter=",") - Regex extract: ['logs'] | extend errorCode = extract("error code ([0-9]+)", 1, ['message']) - Contains ops: ['logs'] | where ['message'] contains_cs "ERROR" or ['message'] startswith "FATAL" Data Shaping: - Extend & Calculate: ['logs'] | extend duration_s = ['duration']/1000, success = ['status'] < 400 - Dynamic: ['logs'] | extend props = parse_json(['properties']) | where ['props.level'] == "error" - Pack/Unpack: ['logs'] | extend fields = pack("status", ['status'], "duration", ['duration']) - Arrays: ['logs'] | where ['url'] in ("login", "logout", "home") | where array_length(['tags']) > 0 Advanced: - Union: union ['logs-app*'] | where ['severity'] == "error" - Case: ['logs'] | extend level = case(['status'] >= 500, "error", ['status'] >= 400, "warn", "info") Time Operations: - Bin & Range: ['logs'] | where ['_time'] between(datetime(2024-01-01)..now()) - Multiple time bins: ['logs'] | summarize count() by bin(['_time'], 1h), bin(['_time'], 1d) - Time shifts: ['logs'] | extend prev_hour = ['_time'] - 1h String Operations: - String funcs: ['logs'] | extend domain = tolower(extract("://([^/]+)", 1, ['url'])) - Concat: ['logs'] | extend full_msg = strcat(['level'], ": ", ['message']) - Replace: ['logs'] | extend clean_msg = replace_regex("(password=)[^&]*", "\1***", ['message']) Common Patterns: - Error analysis: ['logs'] | where ['severity'] == "error" | summarize error_count=count() by ['error_code'], ['service'] - Status codes: ['logs'] | summarize requests=count() by ['status'], bin_auto(['_time']) | where ['status'] >= 500 - Latency tracking: ['logs'] | summarize p50=percentile(['duration'], 50), p90=percentile(['duration'], 90) by ['endpoint'] - User activity: ['logs'] | summarize user_actions=count() by ['userId'], ['action'], bin(['_time'], 1h)
    Connector
  • MONITORING: Fetch Terraform deployment logs with pagination Fetches logs from a running or completed Terraform deployment job. For **completed jobs**: uses REST endpoint for instant retrieval (supports `tail` for server-side filtering). For **running jobs**: streams via SSE with timeout-based pagination. **PAGINATION** (running jobs only): Use `last_event_id` from the response to fetch more: 1. First call: `tflogs(session_id='...')` → get logs + `last_event_id` 2. Next call: `tflogs(session_id='...', last_event_id='...')` → get NEW logs only 3. Repeat until `complete: true` in response **RESPONSE FIELDS**: - `logs`: Array of log messages collected - `last_event_id`: Pass this back to get more logs (pagination cursor, SSE only) - `complete`: true if job finished, false if more logs may be available - `total_logs`: total log entries before tail truncation REQUIRES: session_id from convoopen response (format: sess_v2_...). OPTIONAL: job_id to target a specific deployment (use tfruns to discover IDs), timeout (default 50s, max 55s), last_event_id (for pagination), tail (return only last N entries) ⚠️ CONTEXT WARNING: Deploy logs can be hundreds of lines. Use tail: 50 for completed jobs to avoid blowing up the context window.
    Connector
  • Search public approved LEOR inspiration gallery images. Use before generation when the user is vague, asks for references/cases, says 找/搜/看看/灵感广场/案例/参考图, or wants to use an existing LEOR gallery image as visual direction. A follow-up color such as 橙色方案 after a search request still means refine the gallery search; do not switch to generation. Use query for free-text words such as 建材展, 瓷砖, 橙色, or 色彩鲜艳; use industry only for exact LEOR category labels. If one search is empty, try related words before telling the user no close reference was found.
    Connector
  • Search for emails in Gmail to find specific messages or filter the inbox. Use this when the user wants to find emails by sender, subject, date, content, or other criteria. Returns email summaries suitable for listing and overview - to read full email content, attachments, or HTML body, use get_email with the returned email ID. This tool searches across all folders unless specified otherwise in the query.
    Connector
  • Permanently delete a Gmail label. This removes the label from all messages but does not delete the messages themselves. Only user-created labels can be deleted; system labels (INBOX, SENT, etc.) cannot be removed.
    Connector
  • List all SMS messages received in this session without consuming the OTP. Use this to inspect raw messages or check if an SMS arrived before calling wait_for_otp. Does NOT mark the OTP as consumed.
    Connector
  • List Kolmo's vendor procurement codes (NAICS, NIGP, UNSPSC) for government and agency portals such as SAM.gov, WA WEBS, OpenGov, MRSC, King County, and City of Seattle. Use this when vetting Kolmo for gov bids or setting up Kolmo as a vendor. Primary NAICS is 236118 (Residential Remodelers); secondary codes cover commercial building and specialty trades (painting, flooring, drywall, windows, roofing, siding, etc.).
    Connector