Skip to main content
Glama
Jambozx

OnlineCyberTools MCP (280+ filterable tools)

by Jambozx

text_extract_emails

Read-onlyIdempotent

Extract email addresses from any text using regex with configurable strictness, deduplication, sorting, and context capture. Use for harvesting addresses from logs or documents.

Instructions

Extract Email Addresses From Text. Extract every email address found in a block of arbitrary text using a regex scanner, with selectable strict/standard/permissive matching, optional deduplication, alphabetical sorting, surrounding-context capture, and a unique domain list. Use this for harvesting addresses from logs, documents, or pasted content; use text_extract_urls instead when you need links rather than emails. Matching is pattern-based only (it does not verify deliverability or check MX records over the network). Runs locally on the text you provide: read-only, non-destructive, contacts no external service, and is rate-limited (60 requests per minute for anonymous callers). Returns the matched emails plus per-domain, TLD, and count statistics.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
textYesSource text to scan for email addresses. Must not be blank.
extractionModeNoRegex strictness. standard is a balanced pattern, strict requires well-formed local and domain parts, permissive matches the widest RFC-style character set.standard
removeDuplicatesNoCollapse repeated addresses (case-insensitive) so each email appears once.
sortResultsNoSort the returned emails (and domains) alphabetically instead of by position of first appearance.
includeContextNoInclude a snippet of surrounding text around each match in the context field.
contextLengthNoCharacters of context to capture on each side of a match when includeContext is true (clamped to the 10-200 range).
extractDomainsNoAlso return a deduplicated list of the domains that appear in the matched addresses.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
successNoWhether extraction succeeded.
emailsNoThe matched email addresses, lowercased.
statsNoStatistics about the source text and the extraction.
optionsNoThe effective options after defaults were applied.
domainsNoDeduplicated domain list (present only when extractDomains is true and matches exist).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed19 schema fields changedv0.5.1
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / contextLength / default
      Added value: +30
    • addedInput schema / properties / contextLength / description
      Added value: +"Characters of context to capture on each side of a match when includeContext is true (clamped to the 10-200 range)."
    • addedInput schema / properties / contextLength / maximum
      Added value: +200
    • addedInput schema / properties / contextLength / minimum
      Added value: +10
    • addedInput schema / properties / extractDomains / default
      Added value: +false
    • addedInput schema / properties / extractDomains / description
      Added value: +"Also return a deduplicated list of the domains that appear in the matched addresses."
    • addedInput schema / properties / extractionMode / default
      Added value: +"standard"
    • addedInput schema / properties / extractionMode / description
      Added value: +"Regex strictness. standard is a balanced pattern, strict requires well-formed local and domain parts, permissive matches the widest RFC-style character set."
    • addedInput schema / properties / extractionMode / enum
      Added value: +[
      +  "standard",
      +  "strict",
      +  "permissive"
      +]
    • addedInput schema / properties / includeContext / default
      Added value: +false
    • addedInput schema / properties / includeContext / description
      Added value: +"Include a snippet of surrounding text around each match in the context field."
    • addedInput schema / properties / removeDuplicates / default
      Added value: +true
    • addedInput schema / properties / removeDuplicates / description
      Added value: +"Collapse repeated addresses (case-insensitive) so each email appears once."
    • addedInput schema / properties / sortResults / default
      Added value: +false
    • addedInput schema / properties / sortResults / description
      Added value: +"Sort the returned emails (and domains) alphabetically instead of by position of first appearance."
    • addedInput schema / properties / text / description
      Added value: +"Source text to scan for email addresses. Must not be blank."
    • changedInput schema / required
      Previous value: -[
      -  "text",
      -  "extractionMode",
      -  "removeDuplicates",
      -  "sortResults",
      -  "includeContext",
      -  "contextLength",
      -  "extractDomains"
      -]New value: +[
      +  "text"
      +]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "domains": {
      +      "description": "Deduplicated domain list (present only when extractDomains is true and matches exist).",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "emails": {
      +      "description": "The matched email addresses, lowercased.",
      +      "items": {
      +        "properties": {
      +          "context": {
      +            "description": "Surrounding text snippet (empty unless includeContext is true).",
      +            "type": "string"
      +          },
      +          "domain": {
      +            "description": "Domain part after the at-sign.",
      +            "type": "string"
      +          },
      +          "email": {
      +            "description": "The matched address, lowercased.",
      +            "type": "string"
      +          },
      +          "line": {
      +            "description": "One-based line number where the match occurs.",
      +            "type": "integer"
      +          },
      +          "position": {
      +            "description": "Zero-based character offset of the match in the source text.",
      +            "type": "integer"
      +          },
      +          "tld": {
      +            "description": "Top-level domain of the address.",
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "options": {
      +      "description": "The effective options after defaults were applied.",
      +      "properties": {
      +        "contextLength": {
      +          "description": "Context window size used.",
      +          "type": "integer"
      +        },
      +        "extractDomains": {
      +          "description": "Whether the domain list was returned.",
      +          "type": "boolean"
      +        },
      +        "extractionMode": {
      +          "description": "Matching mode used.",
      +          "type": "string"
      +        },
      +        "includeContext": {
      +          "description": "Whether context snippets were captured.",
      +          "type": "boolean"
      +        },
      +        "removeDuplicates": {
      +          "description": "Whether duplicates were collapsed.",
      +          "type": "boolean"
      +        },
      +        "sortResults": {
      +          "description": "Whether results were sorted alphabetically.",
      +          "type": "boolean"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "stats": {
      +      "description": "Statistics about the source text and the extraction.",
      +      "properties": {
      +        "extraction": {
      +          "description": "Match tallies and per-domain breakdowns.",
      +          "properties": {
      +            "domainStats": {
      +              "description": "Map of domain to occurrence count, sorted by count.",
      +              "type": "object"
      +            },
      +            "duplicatesRemoved": {
      +              "description": "Count of matches dropped as duplicates.",
      +              "type": "integer"
      +            },
      +            "extractionMode": {
      +              "description": "The matching mode that was applied.",
      +              "type": "string"
      +            },
      +            "topLevelDomains": {
      +              "description": "Map of TLD to occurrence count, sorted by count.",
      +              "type": "object"
      +            },
      +            "totalFound": {
      +              "description": "Total matches before deduplication.",
      +              "type": "integer"
      +            },
      +            "uniqueEmails": {
      +              "description": "Distinct addresses returned.",
      +              "type": "integer"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "original": {
      +          "description": "Metrics for the submitted text.",
      +          "properties": {
      +            "characters": {
      +              "description": "Character count of the source text.",
      +              "type": "integer"
      +            },
      +            "lines": {
      +              "description": "Line count of the source text.",
      +              "type": "integer"
      +            },
      +            "text": {
      +              "description": "The submitted text, echoed back.",
      +              "type": "string"
      +            },
      +            "words": {
      +              "description": "Alphabetic word count of the source text.",
      +              "type": "integer"
      +            }
      +          },
      +          "type": "object"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "success": {
      +      "description": "Whether extraction succeeded.",
      +      "type": "boolean"
      +    }
      +  },
      +  "type": "object"
      +}
  2. First observedv0.1.0

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint, destructiveHint, idempotentHint. Description adds that it runs locally, is non-destructive, contacts no external service, and has rate limits, providing valuable context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is slightly verbose but well-structured with a clear purpose, usage, and behavioral notes. Every sentence adds value, though some phrases could be trimmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 7 parameters, full schema coverage, and presence of output schema, the description is comprehensive. It covers all modes, options, constraints, and behavioral traits.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are well-documented. Description adds additional context (e.g., 'regex strictness' for extractionMode) but the schema already covers details. Good but not exceptional.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it extracts email addresses from text using a regex scanner. Distinguishes itself from the sibling tool text_extract_urls, indicating when to use each.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says use this for harvesting addresses from logs/documents, and use text_extract_urls for links. Notes that matching is pattern-based only and does not verify deliverability.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools