Skip to main content
Glama
fitzypopper

osint-mcp-server

by fitzypopper

Pelican — OSINT MCP Server

A general-purpose open-source intelligence (OSINT) MCP server for AI agents. Local-first: run it on your own machine, connect any Model Context Protocol client (OpenCode, Hermes, Claude, Cursor, Cline, etc.), and give your agent one tool surface for broad public-data lookups.

🪿 Why "Pelican"?

Pelicans scan the shoreline for fish — symbolising an OSINT server that scans public data sources for intelligence. Short, distinctive, and animal-themed (like many MCP servers in this space).

Related MCP server: omega-mcp-server

⚔ Quick start

Install

# Using uv (recommended)
uv venv && uv pip install -e ".[dev]"

# Or using pip
pip install pelican[dev]

# Or via uvx (one-shot)
uvx pelican-mcp

Run the MCP server

# stdio (default — local AI agents)
pelican-mcp

# HTTP / streamable-http (remote agents)
pelican-mcp --transport http          # default port 8000
# or with bearer token auth:
OSINT_MCP_AUTH_TOKEN=$(openssl rand -hex 24) pelican-mcp --transport http

Add to your MCP client config

OpenCode (opencode.json):

{
  "mcpServers": {
    "pelican": {
      "type": "stdio",
      "command": ["uv", "run", "pelican-mcp"]
    }
  }
}

Claude Code:

claude mcp add pelican -- uv run pelican-mcp

CLI (no MCP client needed)

pelican-mcp-cli whois_domain '{"domain": "example.com"}'
pelican-mcp-cli osint_domain_recon '{"domain": "example.com"}'
pelican-mcp-cli --list-tools

šŸ“¦ What Pelican does

32 MCP tools across three coverage tiers:

Tier

Tools (selected)

Domain/Infra

dns_lookup, whois_domain, crtsh_search, geoip, bgp_asn, wayback_urls, email_security, hackertarget_hostsearch

Identity/Social

github_user_info, github_user_repos, reddit_user, keybase_lookup, username_enumerate, gravatar_lookup, email_permutations, domain_email_search

Threat/Breach

check_password_breach, shodan_internetdb, search_darkweb, cisa_kev_catalog, otx_search_pulses, osint_domain_recon, osint_ip_recon, osint_list_sources

Aggregate tools:

  • osint_list_sources — shows all sources and which API keys are configured

  • osint_domain_recon — all-in-one free domain recon (DNS + WHOIS + crt.sh + hosts + email security + geoip), correlated

  • osint_ip_recon — all-in-one free IP recon (geoip + RDAP + BGP + Shodan InternetDB), correlated

šŸ”‘ API keys (all optional)

Most tools work with zero config. Add only the keys for sources you want to unlock:

Variable

Unlocks

Cost

HIBP_API_KEY

breached-account lookups

~$4.50/mo

OTX_API_KEY

OTX pulses + indicator enrichment

free

SHODAN_API_KEY

Shodan search/host tools

free tier

GITHUB_TOKEN

higher GitHub rate limit

free

Copy .env.example to .env and add only the keys you need:

cp .env.example .env
# then edit .env with your keys

Keys are read into SecretStr and never logged.

šŸ› ļø Architecture

pelican/
ā”œā”€ā”€ pelican/              pelican package (v2 compatibility shim: pelican -> osint_mcp_server)
│   ā”œā”€ā”€ __init__.py       legacy import shim
│   ā”œā”€ā”€ config.py         env/.env settings, source status
│   ā”œā”€ā”€ net.py            shared async HTTP/DNS helpers, bounded concurrency
│   ā”œā”€ā”€ server.py         FastMCP entry point, tool registration, transports
│   ā”œā”€ā”€ cli.py            direct tool invocation (no MCP client)
│   └── tools/
│       ā”œā”€ā”€ __init__.py
│       ā”œā”€ā”€ domain.py     DNS, RDAP, crt.sh, geoip, BGP, wayback, email security
│       ā”œā”€ā”€ social.py     GitHub, Reddit, Keybase, username, email, gravatar
│       ā”œā”€ā”€ threat.py     HIBP, Ahmia, Shodan InternetDB, CISA KEV, OTX
│       └── suite.py      source listing + aggregate recon tools
└── tests/                unit tests (5 passing)

Every source is an independent module and every tool is read-only — nothing here writes to any target. Tools are annotated with FastMCP readOnlyHint / idempotentHint / openWorldHint so capable clients can see at a glance that these are safe, repeatable, read-only operations.

šŸ’” Credits & attribution

This project is a from-scratch Python implementation that borrows ideas, tool-shapes, source-selection, and endpoint patterns from several excellent MIT-licensed projects. Thanks to their authors:

Project

What we borrowed

License

badchars/osint-mcp-server

free no-key infra sources (DNS, RDAP, crt.sh, geoip, BGP, wayback, HackerTarget, email security), osint_list_sources and osint_domain_recon aggregate design

MIT

CloudWaddie/osint-mcp

identity/social tool set & endpoint/field patterns (GitHub, Reddit, Keybase, username enumeration, email permutation, Gravatar, HIBP)

MIT

frishtik/osint-tools-mcp-server

concept of wrapping OSINT tools, ethical-use framing

MIT

pete-builds/mcp-threatintel

HIBP k-anonymity password check, Ahmia dark-web search, CISA KEV, explicit FastMCP read-only annotations

MIT

Abraar02/threatwatch-mcp / Vorota-ai/shodan-mcp

always-free Shodan InternetDB tool

MIT

The licensing sections of these works are reproduced in full below.

šŸ“„ License

MIT. See LICENSE.

The three MIT license texts from the credited upstream projects are reproduced in this repository under docs/THIRD_PARTY_LICENSES.md as required by their MIT terms, so attribution survives this derived work's every redistribution.

šŸ›£ļø Roadmap (brainstorm separately)

  • Shodan / VirusTotal / Hunter source implementations (keys already plumbed)

  • Optional CLI-tool wrappers (Sherlock / Maigret / Holehe) when installed

  • Local SQLite cache + background poller for threat feeds (like mcp-threatintel)

  • Publish to PyPI


Pelican — one interface, many sources. For authorized open-source intelligence research only.

Available Tools

32 tools
bgp_asnBgp AsnC
Read-onlyIdempotent

ASN details and announced IPv4/IPv6 prefixes.

ParametersJSON Schema
NameRequiredDescriptionDefault
asnYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds minimal behavioral context beyond the annotations, only indicating the data scope (ASN details and announced prefixes). It does not mention rate limits, data freshness, or response size, but the annotations carry the main burden.

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?

The description is a single concise sentence that front-loads the resource and data scope. It earns its place with no filler, though it could add a usage hint without becoming verbose.

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

Completeness3/5

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

The tool is simple (one parameter) and has an output schema, so the description does not need to explain return values. However, the missing input format guidance and lack of differentiation from bgp_ip leave a moderate gap for an agent selecting among many network siblings.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not explain the 'asn' parameter format (e.g., plain integer, 'AS123' notation, or with 'AS' prefix). With only one required parameter and no schema description, the description should compensate but does not, leaving the agent uncertain about valid input formatting.

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

Purpose3/5

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

The description 'ASN details and announced IPv4/IPv6 prefixes' states a clear resource (ASN) and what it returns (details and prefixes), but it does not differentiate from the sibling tool bgp_ip, which likely handles IP-to-ASN lookups. The verb is implicit ('get'/'lookup'), so it is clear but not maximally specific.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus bgp_ip or other network lookup siblings. The description implies a lookup use case but does not state exclusions or alternatives, leaving the agent to infer selection criteria.

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

bgp_ipBgp IpB
Read-onlyIdempotent

IP to prefix/ASN routing lookup.

ParametersJSON Schema
NameRequiredDescriptionDefault
ipYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false. The description adds no behavioral details beyond the action itself, such as rate limits, result scope, or data source assumptions. It does not contradict annotations, but also does not enrich behavioral understanding beyond what structured data already supplies.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with zero extraneous words. It directly states the action and resource, making it highly concise while still communicating the core function.

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

Completeness3/5

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

For a simple single-parameter tool with an output schema and rich annotations, the description is minimally adequate. It tells the agent what to input and what general kind of result to expect, but it leaves out any caveats, data scope, or relationship to sibling tools, making it complete only in a basic sense.

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

Parameters3/5

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

With 0% schema description coverage, the description partially compensates by indicating the 'ip' parameter is the IP address for a routing lookup. However, it does not specify formats (IPv4/IPv6), constraints, or whether CIDR is accepted, and the parameter name already strongly suggests an IP address.

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

Purpose4/5

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

The description uses a specific verb ('lookup') and resource ('IP to prefix/ASN routing'), clearly identifying what the tool does. It does not explicitly differentiate from sibling tools like whois_ip or bgp_asn, but it is unambiguous in its own meaning.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus siblings such as bgp_asn, whois_ip, or geoip. The description does not mention scenarios, prerequisites, or alternatives, leaving the agent without decision support.

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

check_email_breachesCheck Email BreachesA
Read-onlyIdempotent

Check an email against HaveIBeenPwned breaches (needs HIBP_API_KEY).

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare the tool readOnly, idempotent, and non-destructive. The description adds useful operational context beyond those annotations: the call depends on an external service (HaveIBeenPwned) and requires a specific API key. Rate limits or failure behavior are not disclosed, but the added dependency note is valuable.

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

Conciseness5/5

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

The description is a single sentence with no filler, front-loads the core action, and includes the key prerequisite. Every word earns its place.

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

Completeness4/5

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

For a single-parameter, read-only lookup with an output schema and rich annotations, the description is largely sufficient: purpose, target resource, external service, and required credential are all present. The only notable gaps are API-key handling and alternative-tool guidance, but these are secondary given the tool's simplicity.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for the single 'email' parameter. It only restates that the tool checks 'an email' without adding format expectations, normalization behavior, or validation semantics, providing little value beyond the schema property name and the tool name.

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

Purpose4/5

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

The description states a specific verb ('Check'), a resource ('an email'), and the external data source ('HaveIBeenPwned breaches'), so the operation is clear. It does not explicitly distinguish itself from siblings like check_password_breach, but the email-vs-password difference is reasonably implied.

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

Usage Guidelines3/5

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

The use case is implied by the description: check an email against HIBP breaches. However, the description does not mention when not to use it, does not name alternatives, and only adds the prerequisite 'needs HIBP_API_KEY' rather than guidance for choosing between similar email-related tools.

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

check_password_breachCheck Password BreachA
Read-onlyIdempotent

Check if a password appeared in a breach (k-anonymity; password never leaves the machine).

ParametersJSON Schema
NameRequiredDescriptionDefault
passwordYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive behavior. The description adds the key behavioral detail that the password never leaves the machine via k-anonymity, which is valuable context beyond the annotations.

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

Conciseness5/5

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

A single sentence that is front-loaded with the core action and immediately gives the critical privacy property. Every word earns its place; no filler.

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

Completeness4/5

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

For a one-parameter, read-only tool with an output schema, the description covers the essential behavioral context. It could mention what the response includes, but the output schema already handles that. No critical missing information for correct invocation.

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

Parameters2/5

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

Schema coverage is 0%, so the description must explain the password parameter. It only restates the word 'password' in the action and mentions the privacy mechanism, but does not describe the expected format, constraints, or how it is processed. It adds minimal meaning over the schema's type: string.

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?

The description states a specific verb and resource: 'Check if a password appeared in a breach'. It clearly distinguishes from siblings like check_email_breaches by focusing on passwords. The added k-anonymity note reinforces the purpose without ambiguity.

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

Usage Guidelines4/5

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

The description gives clear context for when to use this tool: when you need to check a password breach while keeping the password private. It does not explicitly mention alternatives or exclusions, but the privacy guarantee makes the use case well-defined.

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

cisa_kev_catalogCisa Kev CatalogA
Read-onlyIdempotent

Fetch the CISA Known Exploited Vulnerabilities catalog.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds no additional behavioral context beyond 'Fetch', but it also does not contradict the annotations. No extra behavioral disclosure is required for such a simple parameterless read.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler or repetition. Every word contributes to understanding what the tool does.

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?

For a parameterless, read-only fetch tool, this description is complete. The annotations cover safety and idempotency, and the output schema covers the return structure, so nothing necessary for invoking the tool correctly is missing.

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?

There are zero parameters, so the schema already provides 100% coverage. The description appropriately clarifies the exact resource being fetched, which is sufficient for a tool with no inputs.

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?

The description states a specific verb ('Fetch') and a precise resource ('CISA Known Exploited Vulnerabilities catalog'), making the tool's function immediately clear. It is also easily distinguishable from the unrelated OSINT sibling tools.

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

Usage Guidelines4/5

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

The description gives clear context: this tool is for retrieving the CISA KEV catalog. It does not explicitly list when-not-to-use or alternative tools, but with zero parameters and a unique resource, the intended use is unambiguous and no exclusions are needed.

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

dns_lookupDns LookupA
Read-onlyIdempotent

Resolve DNS records for a hostname (A, AAAA, MX, TXT, NS, SOA, CNAME, CAA, SRV).

ParametersJSON Schema
NameRequiredDescriptionDefault
hostYes
record_typeNoA

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds value by listing the specific record types that can be resolved, which is behavioral information not present in the annotations or schema. It does not mention potential nuances like invalid types or empty results, but the annotation coverage lowers the burden.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. Every word adds value, and the supported record types are listed compactly.

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

Completeness4/5

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

For a straightforward read-only DNS lookup tool with an output schema, the description provides sufficient context: it names the resource, the supported record types, and the hostname target. It omits edge-case behavior (e.g., no records found, invalid type handling), but these are minor given the tool's simplicity and the presence of annotations and an output schema.

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

Parameters3/5

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

With 0% schema description coverage, the description must compensate. It explains 'hostname' for the host parameter and implicitly enumerates valid values for record_type by listing record types. However, it does not explicitly state that record_type defaults to 'A' or that only these listed types are accepted, leaving some inference required for correct invocation.

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?

The description states a specific verb ('Resolve') and resource ('DNS records for a hostname') and enumerates the supported record types (A, AAAA, MX, etc.). This clearly distinguishes it from sibling tools like dns_lookup_all or whois_domain without needing to inspect schemas.

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

Usage Guidelines3/5

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

The description implies usage (resolving a specific DNS record type) but does not explicitly state when to choose this over alternatives such as dns_lookup_all (which likely returns all records) or when not to use it. The context is clear enough for simple cases, but exclusions and comparisons are left to inference.

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

dns_lookup_allDns Lookup AllA
Read-onlyIdempotent

Resolve all common record types for a hostname at once.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, which already cover the safety profile. The description adds the behavioral scope of returning all common record types, but it omits extra context such as whether IP addresses are accepted, timeout behavior, or which record categories are included. No contradiction with annotations exists.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no filler or redundancy. Every word contributes to the core meaning of what the tool does, making it highly scannable for an AI agent.

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

Completeness4/5

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

The tool is simple, has one required parameter, and benefits from rich annotations plus an output schema, so the description does not need to explain return values. The main gap is that 'common record types' is not enumerated, but the output schema can plausibly fill that gap.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry parameter meaning. The description's explicit use of 'hostname' clarifies the single required host parameter, but it mostly restates the parameter name and gives no format, normalization, or accepted-value details. It adds some value but not enough to fully compensate for the absent schema documentation.

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

Purpose4/5

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

The description clearly states a specific action ('Resolve') on a hostname and scopes it to 'all common record types at once.' This implicitly distinguishes it from the sibling dns_lookup tool, though it does not explicitly name the sibling. It is clear and not tautological.

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

Usage Guidelines3/5

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

The phrase 'at once' implies using this tool for a comprehensive DNS lookup in one call, but it does not explicitly say when to use dns_lookup instead for a single record type. No exclusion criteria or alternative routing are provided, so usage guidance is only implied.

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

email_permutationsEmail PermutationsC
Read-onlyIdempotent

Generate common corporate email address permutations.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes
last_nameYes
first_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is known. The description adds no behavioral context such as rate limits, authentication requirements, or output details. It doesn't contradict the annotations but also doesn't add value beyond them.

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?

The description is a single sentence with no fluff, which is concise and front-loaded. It efficiently states the purpose, but it is perhaps too terse to provide necessary context. It earns its place but could be slightly expanded without losing conciseness.

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

Completeness3/5

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

The tool has an output schema and annotations covering safety, so the description needn't explain those. However, it lacks usage guidelines and parameter details, which are important for correct invocation. The description is adequate for a simple read-only tool but not fully complete.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for missing parameter documentation. The description mentions the three inputs implicitly by saying 'common corporate email address permutations,' but it doesn't explain the expected format, any restrictions, or the relationship between parameters. The parameter names are self-explanatory, but the description adds little semantic value.

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

Purpose4/5

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

The description states a clear action ('generate') on a specific resource ('common corporate email address permutations'). It distinguishes from siblings like domain_email_search by focusing on permutation generation, though it doesn't list examples of common permutations. It is clear enough for an agent to understand the tool's function.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool over alternatives. It doesn't mention scenarios, prerequisites, or exclusions. An agent must infer usage from the name alone, which is insufficient given the many sibling tools.

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

email_securityEmail SecurityA
Read-onlyIdempotent

Analyze a domain's SPF/DMARC/DKIM email-authentication and spoofing risk.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds useful context about the specific checks performed (SPF/DMARC/DKIM and spoofing risk), which goes beyond the annotation. No contradictions.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no redundant words. It effectively communicates the tool's core functionality.

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?

The tool has a single simple parameter, annotations cover behavioral safety, and an output schema exists (so return format need not be described). The description sufficiently covers what the tool does and the input, leaving no critical gaps for an agent to call it correctly.

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

Parameters3/5

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

With schema description coverage at 0%, the description is the only source of parameter meaning. It states 'domain' but does not specify format (e.g., with/without protocol, subdomain inclusion). The meaning is clear enough for a single string parameter, but it could be more explicit.

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?

The description clearly states the tool's purpose with a specific verb ('Analyze') and resource ('domain's SPF/DMARC/DKIM email-authentication and spoofing risk'). It distinguishes itself from sibling tools like dns_lookup_all or whois_domain by focusing on security analysis rather than raw record retrieval.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives. The description implies it is for email security analysis, but does not mention exclusions or direct comparisons to siblings (e.g., dns_lookup for raw SPF records). An agent would infer usage but without explicit routing.

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

geoipGeoipB
Read-onlyIdempotent

IP geolocation: country, region, city, ISP, ASN, proxy/hosting flags.

ParametersJSON Schema
NameRequiredDescriptionDefault
ipYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds context about the returned data fields, including proxy/hosting flags, but does not disclose rate limits, data freshness, accuracy, or input constraints. There is no contradiction with the annotations.

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

Conciseness5/5

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

The description is a single front-loaded sentence that names the operation and then lists the key result categories. Every word adds value, with no filler or unnecessary repetition.

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

Completeness4/5

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

For a single-parameter read-only lookup with an output schema and safety annotations, the description covers the core purpose. It is slightly incomplete because it omits input format expectations and does not help route between IP-related siblings.

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

Parameters2/5

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

The schema only defines 'ip' as a string with no description, and schema description coverage is 0%. The phrase 'IP geolocation' implies the parameter is the IP address to look up, but the description does not add format requirements, accepted address types, or validation details.

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

Purpose4/5

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

The description clearly identifies the tool as IP geolocation and lists the output categories (country, region, city, ISP, ASN, proxy/hosting flags). It is easy to understand, though it lacks a direct verb and does not explicitly distinguish itself from IP-related siblings like whois_ip or bgp_ip.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus alternatives such as whois_ip, bgp_ip, or shodan_internetdb. The field list implies a geolocation use case, but the description provides no explicit context, exclusions, or prerequisites.

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

github_commit_emailsGithub Commit EmailsB
Read-onlyIdempotent

Extract email addresses from a user's public GitHub events.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the 'public' and 'events' scoping, which is useful, but it does not explain behavior beyond that, such as reliance on commit event payloads or limitations of public event data.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler or redundant repetition of the tool name. It conveys the essential purpose efficiently.

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

Completeness3/5

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

For a simple one-parameter, read-only tool with an output schema and rich annotations, the description is mostly adequate. However, it lacks usage guidance and a caveat that 'events' likely refers to commit-bearing events, leaving some ambiguity for an agent.

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

Parameters2/5

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

Schema description coverage is 0%, so the description should compensate, but it does not meaningfully explain the username parameter beyond the schema's property name. It only implies 'a user's' events without specifying format, GitHub-specific requirements, or examples.

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?

The description uses a specific verb ('Extract') and names both the resource ('email addresses') and the source ('a user's public GitHub events'). This clearly differentiates it from siblings like github_user_info, github_user_repos, and github_repo_commits, which do not extract emails from user events.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. While the sibling list includes several relevant tools (email_permutations, domain_email_search, github_user_info), the description gives no exclusions, conditions, or routing hints.

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

github_repo_commitsGithub Repo CommitsB
Read-onlyIdempotent

Extract committer emails from a repo's recent commit history.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
ownerYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds only the 'recent commit history' scoping, which is useful but vague; it does not mention limits, auth requirements, or what 'recent' means. It does not contradict the annotations.

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

Conciseness5/5

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

The description is one tight, front-loaded sentence with no filler. It communicates the core purpose immediately and is an appropriately sized definition for a simple read-only tool.

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

Completeness3/5

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

The tool is simple and has annotations plus an output schema to cover safety and return structure. However, 'recent' is ambiguous, and there is no guidance about usage context or edge cases, leaving minor but real gaps for correct invocation.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but it does not explicitly explain 'owner' or 'repo' beyond implying a repository context. The parameter names are conventional, yet the description adds little semantic value for an agent needing to know what values these fields expect.

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

Purpose4/5

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

The description states a specific verb and resource ('Extract committer emails from a repo's recent commit history'), so an agent can tell what the tool does. However, it does not differentiate from the similarly named sibling 'github_commit_emails', leaving some ambiguity about which one to pick.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as 'github_commit_emails' or 'github_user_repos'. The description gives no context, prerequisites, or exclusions, so an agent must guess which tool fits the task.

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

github_user_infoGithub User InfoA
Read-onlyIdempotent

Get public GitHub profile metadata for a user.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds that the metadata is 'public', implying no authentication is needed, which is useful. No additional behavioral traits (e.g., rate limits, response shape) are disclosed, but the annotations carry the main burden.

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

Conciseness5/5

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

A single sentence that is front-loaded with the action verb and resource. Zero filler words; every word earns its place. Ideal conciseness.

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

Completeness4/5

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

Given the tool's simplicity (one param, annotations covering safety) and the presence of an output schema (not shown), the description is nearly complete. It lacks any mention of edge cases or limitations, but for a straightforward public GitHub profile lookup, nothing essential is missing.

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

Parameters3/5

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

The schema has only one parameter (username) with 0% description coverage. The description says 'for a user' but doesn't explicitly state that the 'username' parameter is the GitHub username or provide format details. Since the parameter is self-explanatory and simple, this is adequate but does not add meaningful semantics beyond the schema.

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?

The description states a specific verb ('Get'), resource ('public GitHub profile metadata'), and target ('for a user'). This clearly distinguishes it from siblings like github_user_repos (which returns repositories) and github_commit_emails (emails from commits). An agent can immediately understand the tool's function.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives like github_user_repos or github_commit_emails. However, the tool name and simple description make its purpose self-evident, and the sibling context suggests it's the primary profile-metadata lookup. Lacks explicit exclusions or alternative routing.

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

github_user_reposGithub User ReposA
Read-onlyIdempotent

List public GitHub repositories for a user.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds the critical constraint that only public repositories are returned, which is a behavioral detail not captured in annotations. However, it omits any mention of rate limits, pagination, or behavior for non-existent users. With annotations present, the description contributes some value but not rich behavioral context.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. Every word earns its place, and it immediately conveys the core operation without redundancy.

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

Completeness4/5

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

Given the tool's low complexity (one parameter), the presence of an output schema, and annotations that cover safety and openness, the description is largely sufficient. It clearly states the action and the scope (public repos). The only minor gap is the lack of explicit mention of pagination or rate limits, but these are likely handled by the output schema and are not essential for basic invocation.

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

Parameters3/5

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

The schema has zero description coverage for the username parameter. The description partially compensates by indicating that the parameter represents a GitHub user, but it does not clarify formatting (e.g., exact username format), case sensitivity, or whether it expects a handle vs. an ID. It adds minimal meaning beyond the schema, so a baseline score of 3 is appropriate given the low schema coverage.

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?

The description clearly states the action (List), the resource (public GitHub repositories), and the target (a user). It distinguishes from siblings like github_user_info (which would return user profile details) and github_repo_commits (which lists commits). The verb+resource combination is unambiguous and specific.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention scenarios, prerequisites, or contrasts with sibling tools. An agent would have no context for selecting this over github_user_info or other repo-related tools.

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

gravatar_lookupGravatar LookupB
Read-onlyIdempotent

Look up the public Gravatar profile for an email address.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds only the 'public' qualifier and does not disclose behaviors such as absence handling or rate limits, but no contradiction exists.

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

Conciseness5/5

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

Eleven words in one sentence front-load the action, resource, and input. There is no filler or redundant explanation.

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

Completeness4/5

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

For a single-required-parameter lookup with rich annotations and an output schema, the description is nearly complete: it defines the resource and input. The main missing element is usage routing relative to sibling tools, but the tool's low complexity limits the impact.

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

Parameters3/5

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

The single email parameter is self-explanatory, and the description confirms it is the 'email address' whose profile is looked up. However, schema description coverage is 0% and the description adds no format, normalization, or edge-case information; this is minimally adequate for one obvious string parameter.

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

Purpose4/5

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

The description names a specific verb ('look up'), resource ('public Gravatar profile'), and input ('email address'), so the core action is unambiguous. It does not explicitly compare itself with sibling identity/lookup tools, though the Gravatar resource is unique among the sibling list.

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

Usage Guidelines2/5

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

No guidance is given about when to choose Gravatar lookup over siblings such as keybase_lookup, check_email_breaches, or domain_email_search, and no exclusion conditions are stated. The agent is left to infer use cases from the tool name.

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

hackertarget_hostsearchHackertarget HostsearchB
Read-onlyIdempotent

Find hosts/subdomains with resolved IPs via HackerTarget.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already cover the safety profile (readOnlyHint, openWorldHint, idempotentHint, destructiveHint=false). The description adds no extra behavioral context such as rate limits, API key requirements, or external service dependency, which would have been valuable given the 'via HackerTarget' reference. No contradiction exists.

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

Conciseness5/5

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

A single, front-loaded sentence with zero filler. It communicates the core function and source efficiently, and every word contributes value.

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

Completeness3/5

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

With one parameter, an output schema, and strong safety annotations, the description is minimally adequate. However, gaps remain: no domain format guidance and no mention of limitations or failure modes (e.g., rate limits from HackerTarget). Given the low complexity, a score of 3 reflects that it works but leaves important usage details to the agent.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for the undocumented 'domain' parameter. It does not clarify the expected format (bare domain vs. subdomain, protocol, etc.), leaving the agent to guess. The word 'hosts/subdomains' implies the domain is the target, but this is insufficient for a parameter with no schema description.

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

Purpose4/5

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

The description states a specific action ('Find hosts/subdomains with resolved IPs') and identifies the source ('via HackerTarget'). This distinguishes it from siblings like crtsh_search (certificate transparency) and dns_lookup_all (which likely returns raw DNS records) by source and output, though it does not explicitly name alternatives.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives. The description only states what the tool does, leaving the agent to infer that it is for subdomain enumeration. It does not mention exclusions, prerequisites, or preferred scenarios.

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

keybase_lookupKeybase LookupA
Read-onlyIdempotent

Look up a Keybase user and their linked social accounts / public keys.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the result scope (linked social accounts and public keys) but does not disclose any additional behavioral details such as error cases, rate limits, or prerequisites.

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

Conciseness5/5

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

A single concise sentence front-loads the verb, resource, and expected outputs. There is no filler, repetition of the title, or unnecessary detail.

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

Completeness4/5

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

The tool is a simple read-only lookup with one parameter and an output schema, so the description is largely sufficient. It only lacks explicit parameter format guidance and alternative routing, which are minor gaps given the low complexity and existing annotations.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for the undocumented username parameter. It only restates that the lookup is for a 'Keybase user', adding little beyond the schema's property name. No format, example, or constraint is given.

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?

The description states a specific verb ('Look up'), a specific resource ('a Keybase user'), and the data scope ('linked social accounts / public keys'). It clearly identifies this as a Keybase-specific OSINT tool, distinguishable from the many DNS/IP/email siblings in the tool list.

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

Usage Guidelines3/5

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

The usage context is implied: use this when you need Keybase account linking information. However, the description provides no explicit guidance about when not to use it or which sibling tools might be alternatives, such as username_enumerate or gravatar_lookup.

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

osint_domain_reconOsint Domain ReconA
Read-onlyIdempotent

All-in-one free reconnaissance for a domain (DNS, WHOIS, crt.sh, hosts, email security, geoip).

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive. The description adds that it is free and lists the data categories, but it does not disclose other behavioral aspects like rate limits, pagination, or potential failure modes. With annotations covering safety, the added context is acceptable but minimal.

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

Conciseness5/5

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

The description is a single, dense sentence that front-loads the purpose and enumerates the scope. No filler or redundant information; every word earns its place.

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

Completeness4/5

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

The tool has an output schema (per context signal), so return values are documented elsewhere. Annotations cover the safety profile. The description lists the data categories and indicates it is free. It does not mention that it aggregates multiple services or potential latency, but for a read-only recon tool with an output schema, this is sufficient.

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

Parameters3/5

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

The schema has 0% description coverage for the 'domain' parameter. The description mentions 'for a domain,' indicating the input, but provides no format guidance (e.g., whether to include scheme or subdomain). Since it's a single, obvious parameter, this is minimally adequate but could benefit from a note on expected format.

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?

The description clearly states the tool performs reconnaissance on a domain and enumerates the specific data sources (DNS, WHOIS, crt.sh, hosts, email security, geoip). This distinguishes it from the many sibling tools that each focus on a single source, making the 'all-in-one' aggregation explicit.

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

Usage Guidelines3/5

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

The phrase 'All-in-one' implies use for a broad overview rather than a specific lookup, but it never explicitly says when to prefer this over a dedicated sibling tool, nor does it name alternatives or exclusions. The usage context is implied but not stated.

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

osint_ip_reconOsint Ip ReconA
Read-onlyIdempotent

All-in-one free reconnaissance for an IP (geo, rdap, bgp, shodan internetdb).

ParametersJSON Schema
NameRequiredDescriptionDefault
ipYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds the concrete data sources and the fact that it's 'free', which is useful context beyond annotations. It doesn't disclose potential rate limits or delays from aggregating multiple services, but for a read-only tool with strong annotation coverage, this is a minor gap.

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

Conciseness5/5

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

One sentence, front-loaded with 'All-in-one free reconnaissance', and the parenthetical list of sources is compact and efficient. No filler or redundant phrasing—every word adds value.

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

Completeness4/5

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

The tool aggregates four distinct data sources and the description names them, giving the agent a clear picture of its scope. An output schema exists, so return values don't need explanation. It doesn't mention potential failures (e.g., Shodan internetdb might have no data for a given IP), but for a read-only recon tool this is acceptable given the annotation coverage.

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

Parameters3/5

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

Schema has only one required parameter 'ip' with zero description coverage (0%). The description does not specify expected format (e.g., IPv4/IPv6) or validation rules, relying on the tool name to imply an IP address. Since the parameter is self-explanatory from the tool name and there is only one, the gap is small, but the description still doesn't compensate for the schema's lack of detail.

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?

States a clear verb ('reconnaissance') and resource ('an IP') and enumerates the specific data sources (geo, rdap, bgp, shodan internetdb), which immediately distinguishes it from sibling tools like geoip, whois_ip, bgp_ip, and shodan_internetdb. The 'all-in-one' framing makes its role obvious without needing to inspect other schemas.

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

Usage Guidelines3/5

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

The description implies use for comprehensive IP recon ('all-in-one'), but gives no explicit guidance on when to choose it over the individual sibling tools (e.g., geoip for geo-only, bgp_ip for BGP-only). It also doesn't mention any exclusions or when the combined tool might be overkill. The guidance is implied rather than explicit, which is adequate but not exceptional.

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

osint_list_sourcesOsint List SourcesA

List all data sources, which are free, and which API keys are configured.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden, and it accurately conveys a read-only listing operation. It also discloses that the tool surfaces API-key configuration status, which is useful context. It doesn't explicitly say whether actual key values are shown, but the phrasing implies configured status, not secrets.

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

Conciseness5/5

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

The description is a single, compact sentence with no wasted words. The primary action comes first and every clause conveys useful information.

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?

For a zero-parameter utility tool with an output schema present, the description is complete enough for an agent to understand what the tool does and what to expect. It gives the essential outcome without needing extra explanation.

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?

The tool has no parameters, so the schema already fully covers this dimension. The description adds value by clarifying what the returned information will include: data sources, free status, and API-key configuration.

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?

The description uses a specific verb ('List') with a specific resource ('all data sources') and additionally tells the agent what aspects are reported: free status and API-key configuration. This clearly distinguishes it from the many lookup-oriented sibling tools such as dns_lookup and whois_domain.

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

Usage Guidelines4/5

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

The description makes the tool's role clear as a meta-level enumeration tool rather than a data lookup tool. It doesn't explicitly state exclusions or alternatives, but no sibling tool overlaps with its purpose of listing sources and API-key configuration status.

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

otx_indicatorOtx IndicatorB
Read-onlyIdempotent

Enrich an indicator (IP/domain/URL/hash) via AlienVault OTX.

ParametersJSON Schema
NameRequiredDescriptionDefault
sectionNogeneral
indicatorYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior, so the safe read-only nature is covered. The description adds no extra behavioral context such as authentication requirements, rate limits, or how it handles invalid indicators, but it does not contradict the annotations.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. It compactly conveys the action, the resource category, and the data source without wasting words.

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

Completeness2/5

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

For an OSINT enrichment tool among many siblings, the description is missing usage context and the meaning of the 'section' parameter. While the output schema exists and annotations cover safety, the agent still lacks enough information to confidently choose this tool or populate optional parameters correctly.

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

Parameters2/5

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

Schema description coverage is 0%, and the description only clarifies the indicator parameter through the listed types. The 'section' parameter is completely unexplained, leaving the agent without enough information to know what values are valid or how the default behaves.

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

Purpose4/5

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

The description uses a specific verb, 'Enrich', and clearly identifies the resource as an indicator with accepted types (IP/domain/URL/hash). It is distinct from the sibling otx_search_pulses because it focuses on indicators rather than pulses, though it does not explicitly call out that distinction.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus the many sibling OSINT tools. There is no mention of exclusions, alternatives, or conditions under which OTX enrichment is preferable to dns_lookup, shodan_internetdb, or whois.

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

otx_search_pulsesOtx Search PulsesB
Read-onlyIdempotent

Fetch recent AlienVault OTX threat pulses (needs OTX_API_KEY).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already establish readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior. The description adds the useful operational constraint that an OTX_API_KEY is required, which goes beyond the structured metadata. It does not cover rate limits or error behavior, but for a simple read-only fetch this is reasonable.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no filler. The action and resource come first, and the API key requirement is placed in a concise parenthetical.

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

Completeness3/5

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

For a one-parameter, read-only tool with an output schema, the description covers the core purpose and an important auth requirement. However, it does not clarify how the API key is supplied or what 'recent' means, leaving some ambiguity for an agent.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not mention the 'limit' parameter at all. The parameter name and default are self-explanatory, but the description provides no additional semantics, so it does not compensate for the missing schema documentation.

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

Purpose4/5

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

The description states a specific verb and resource: 'Fetch recent AlienVault OTX threat pulses.' It is clear about what the tool does, though it does not explicitly differentiate itself from the sibling tool otx_indicator, so it falls just short of a 5.

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

Usage Guidelines2/5

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

The only contextual guidance is the parenthetical 'needs OTX_API_KEY,' which is a prerequisite, not a usage condition. There is no statement about when to prefer this tool over other OSINT/OTX alternatives or when not to use it.

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

reddit_userReddit UserA
Read-onlyIdempotent

Get public Reddit profile metadata (account age, karma, mod status).

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already carry the safety profile (readOnlyHint, idempotentHint, non-destructive), so the bar is lowered. The description adds useful context by scoping to 'public' data only, but discloses nothing about rate limits, handling of non-existent/usernames with wrong case, or response behavior. No contradiction with annotations.

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

Conciseness5/5

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

A single ten-word sentence that front-loads verb and resource, then adds scoping ('public') and concrete field examples. Every word earns its place with zero filler or redundancy.

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

Completeness4/5

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

For a single-parameter, read-only tool with rich annotations (read-only, idempotent, non-destructive) and an existing output schema, the description covers the essentials: what is fetched, the data scope, and example fields. It would be more complete with a routing note toward reddit_user_posts, but the tool's low complexity keeps this gap minor.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It does so only indirectly: the tool name, title, and description make the 'username' parameter's purpose self-evident as the Reddit account whose profile metadata is fetched, but no explicit parameter-level guidance is added.

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?

The description states a specific verb+resource ('Get public Reddit profile metadata') and enumerates the specific fields returned (account age, karma, mod status). This clearly differentiates it from close siblings like reddit_user_posts (posts vs. profile metadata) and other user-lookup tools, so an agent can select it correctly without opening the schema.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives. It does not mention that reddit_user_posts should be used for post history, nor state any conditions or exclusions. Usage context is only implied by the name/description, not explicitly conveyed.

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

reddit_user_postsReddit User PostsB
Read-onlyIdempotent

List a Reddit user's recent public posts.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
usernameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

Annotations already cover safety (readOnlyHint, idempotentHint, destructiveHint). The description adds only scope ('recent', 'public') and does not disclose behavioral aspects such as pagination, rate limits, or error conditions. No contradiction with annotations, but minimal added value beyond the structured hints.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with zero waste. It immediately states the action and object, and every word contributes to clarity.

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

Completeness3/5

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

Given the tool's simplicity, the presence of an output schema, and annotations covering safety, the description is adequate but not complete. It misses parameter explanations and any guidance on response limits or edge cases, though these are relatively minor for a basic list operation.

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

Parameters2/5

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

The schema has 0% property description coverage, and the description does not explain the 'username' or 'limit' parameters. The tool is simple and these parameters are self-evident, but the description adds no semantic meaning beyond the schema's basic type/default information.

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?

The description clearly states a specific verb ('List') and resource ('a Reddit user's recent public posts'). It distinguishes from the sibling 'reddit_user' by specifying posts rather than profile information. The scope ('recent', 'public') adds precision, making the purpose unambiguous.

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

Usage Guidelines3/5

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

The description implies usage for fetching posts but does not explicitly contrast with alternatives like 'reddit_user' or state when not to use it. There is no mention of when to prefer this tool over others, leaving usage context to inference from the name and description.

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

search_darkwebSearch DarkwebA
Read-onlyIdempotent

Search the dark web via Ahmia.fi (.onion index). Metadata only.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
max_resultsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark the tool as read-only, open-world, idempotent, and non-destructive, and the description does not contradict them. The description adds meaningful behavioral context beyond annotations by naming the exact backend (Ahmia.fi) and clarifying that only metadata is returned.

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

Conciseness5/5

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

A single front-loaded sentence with no filler. It leads with the action and resource, then adds the important metadata-only limitation, earning its place with zero redundancy.

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?

For a simple read-only search tool with rich annotations and an output schema, the description is sufficient. It states what is searched, where it is searched, and the nature of the results; no critical calling context is missing.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not explain 'query' or 'max_results' at all. The meanings must be inferred from parameter names and the schema default, so the description fails to compensate for the missing schema documentation.

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?

States a specific verb ('Search') and resource ('dark web via Ahmia.fi (.onion index)'), and adds a precise scope qualifier ('Metadata only'). This clearly differentiates it from content-scraping or deep-web search tools and from the other OSINT sibling lookups.

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

Usage Guidelines4/5

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

Gives a clear use case: searching the dark web through a named index. It does not explicitly list alternatives or exclusion conditions, but the context is strong enough that an agent would know when to select it among the OSINT siblings.

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

shodan_internetdbShodan InternetdbB
Read-onlyIdempotent

Free Shodan InternetDB lookup: open ports, hostnames, CVEs, tags.

ParametersJSON Schema
NameRequiredDescriptionDefault
ipYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds the useful fact that results include ports, hostnames, CVEs, and tags, but it does not disclose potential limitations, rate limits, or input scope beyond that.

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

Conciseness5/5

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

The description is a single compact sentence that leads with the core purpose and immediately lists the key distinguishing data categories. There is no redundant or filler content.

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

Completeness3/5

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

For a simple single-parameter tool with a known output schema, the description covers the visible outputs but omits usage guidance and parameter details. It is minimally adequate but leaves selection and input-format questions unanswered.

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

Parameters2/5

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

Schema description coverage is 0% and the description does not explain the required 'ip' parameter's format, accepted address types, or validation rules. It only implies an IP lookup through the tool name and service context, which is not sufficient to compensate for the missing schema documentation.

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?

The description states a specific action ('lookup') on a specific resource ('Shodan InternetDB') and enumerates the distinct output types: open ports, hostnames, CVEs, and tags. This clearly differentiates it from sibling recon tools like whois_ip, bgp_ip, or hackertarget_hostsearch, which are not Shodan InternetDB lookups.

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

Usage Guidelines2/5

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

The description gives no guidance on when to prefer this tool over alternatives. It does not mention suitable use cases, exclusions, or sibling tools, so an agent would have to infer selection criteria from the tool name and output list.

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

username_enumerateUsername EnumerateA
Read-onlyIdempotent

Probe ~20 major platforms to see if a username is taken.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

The annotations (readOnlyHint, openWorldHint, idempotentHint, destructiveHint=false) already cover the safety profile. The description adds minimal behavior context beyond 'probe' (network activity), but doesn't disclose potential timeouts, rate limits, or what constitutes 'taken' (existence vs. availability). It doesn't contradict annotations, but adds little beyond them.

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

Conciseness5/5

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

One sentence with no filler. The action and scope are front-loaded ('Probe ~20 major platforms'), making it immediately clear what the tool does. Every word earns its place.

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

Completeness3/5

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

The tool has an output schema (though not shown) and annotations cover safety. The description is short but adequate for a simple one-parameter tool. However, it could mention that it queries multiple platforms and might take longer, or that it returns a simple yes/no per platform. Given the simplicity, it's not seriously incomplete, but a bit more context about the multi-platform behavior would help.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. The single parameter 'username' is self-explanatory, and the description implicitly defines it as the username to probe across platforms. It doesn't add format constraints or clarify edge cases (e.g., case sensitivity), but the name and type string make it understandable.

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?

The description uses a specific verb ('probe') and a clear resource ('~20 major platforms') to check if a username is taken. It clearly distinguishes itself from sibling tools like github_user_info or reddit_user, which target a single platform.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus the many single-platform sibling tools. It doesn't mention alternatives, conditions, or exclusions. The description implies a broad multi-platform check but doesn't explicitly instruct the agent on when to choose it over a specific platform lookup.

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

wayback_urlsWayback UrlsA
Read-onlyIdempotent

Discover archived URLs for a domain via the Wayback Machine CDX API.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
domainYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds only that it uses the Wayback Machine CDX API, which implies an external service, but does not disclose rate limits, pagination behavior, or response characteristics. This is adequate but minimal given the annotations.

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

Conciseness5/5

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

The description is a single sentence that is front-loaded with the core action and resource. It contains no filler or redundant repetition of the tool name, earning its place entirely.

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

Completeness4/5

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

The tool is simple, has only two parameters, an output schema, and annotations covering safety. The description provides enough to understand the operation and call the tool with a domain. Minor gaps remain around limit semantics and domain formatting, but these are not blocking for a tool of this complexity.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not compensate meaningfully. 'Domain' appears in prose, but 'limit' is never mentioned or explained, nor is the expected domain format (e.g., with or without scheme). The schema provides types and a default, but the description adds almost no semantic value beyond what the schema already shows.

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?

The description clearly states a specific verb ('Discover') and resource ('archived URLs for a domain') while identifying the exact data source ('Wayback Machine CDX API'). This distinguishes it from the many sibling OSINT tools, which focus on DNS, certificates, WHOIS, or user enumeration.

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

Usage Guidelines3/5

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

The description implies when to use the tool: whenever historical or archived URLs for a domain are needed. However, it provides no explicit exclusions or comparisons to alternatives, leaving the agent to infer the appropriate context from the tool's purpose alone.

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

whois_domainWhois DomainB
Read-onlyIdempotent

Domain registration data (registrar, dates, nameservers) via RDAP.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already carry readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false, so the safety profile is covered. The description adds useful context by noting the data comes via RDAP and naming the returned data types, but it doesn't disclose rate limits, RDAP edge cases, or error behavior. There is no contradiction with the 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?

The description is a single compact sentence with no filler, and the main data categories are listed in parentheses. It could be improved with an explicit verb and a more front-loaded structure, but for a simple lookup tool the size is appropriate.

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

Completeness4/5

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

With rich annotations, a single obvious parameter, and an output schema present, the description is largely sufficient for tool selection and invocation. It conveys the data categories and protocol, and the safety profile is already covered by annotations. The primary missing element is parameter formatting, which is already captured under parameter semantics.

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

Parameters2/5

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

Schema description coverage is 0%, and the only parameter 'domain' is a bare string with no format guidance. The description never states whether the value should be a bare registrable domain, include a subdomain, or use punycode, so an agent may pass an invalid value. Because the description must compensate for the low schema coverage, this is a meaningful gap.

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

Purpose4/5

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

The description identifies the resource (domain registration data) and the mechanism (RDAP), and lists specific data categories: registrar, dates, and nameservers. It doesn't use an explicit verb like 'retrieve', but the intent is unambiguous. It is also distinguishable from sibling whois_ip because it focuses on domains rather than IP addresses.

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

Usage Guidelines3/5

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

The description implies usage is for domain registration metadata lookups, which is a clear enough context. However, it does not explicitly mention alternatives such as whois_ip or dns_lookup, and it does not state when not to use this tool. The sibling list provides context, but the description itself offers no routing guidance.

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

whois_ipWhois IpA
Read-onlyIdempotent

IP network allocation data via RDAP (network name, CIDR, country).

ParametersJSON Schema
NameRequiredDescriptionDefault
ipYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare the operation read-only, idempotent, safe, and open-world, so the description does not need to repeat that. It adds useful behavioral context by naming RDAP and the exact data fields returned, but it does not disclose behavior for invalid IPs, rate limits, or partial results. Since annotations cover the safety profile, the added value is modest but sufficient.

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

Conciseness5/5

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

The description is a single compact sentence that conveys the data source and key output fields with no redundant wording. It is front-loaded with the core purpose and uses parenthetical detail efficiently.

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

Completeness4/5

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

The tool is simple with one parameter, rich annotations, and an output schema, so the description does not need to explain return values. The only minor gap is the lack of detail about acceptable IP formats, but the schema and annotations cover most operational context.

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

Parameters3/5

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

The schema has one 'ip' string parameter with 0% coverage, and the description does not clarify whether IPv4, IPv6, or CIDR blocks are accepted. The parameter name itself is mostly self-explanatory, and the description's mention of IP network allocation data implies an IP address query, but explicit format guidance would strengthen it.

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

Purpose4/5

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

The description clearly identifies the resource (IP network allocation data) and the data source (RDAP), listing concrete returned fields such as network name, CIDR, and country. It differentiates the tool from siblings like whois_domain and geoip, though it lacks an explicit verb like 'lookup' or 'retrieve'.

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

Usage Guidelines3/5

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

The description implies this tool is used when IP network allocation details are needed, and the RDAP mention helps distinguish it from geolocation or BGP tools. However, it provides no explicit guidance on when not to use it or which sibling alternative to prefer, leaving the agent to infer from tool names.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 32 tool updatesv0.1.0
    • First observedbgp_asn
    • First observedbgp_ip
    • First observedcheck_email_breaches
    • First observedcheck_password_breach
    • First observedcisa_kev_catalog
    • First observedcrtsh_search
    • First observeddns_lookup
    • First observeddns_lookup_all
    • First observeddomain_email_search
    • First observedemail_permutations
    • First observedemail_security
    • First observedgeoip
    • First observedgithub_commit_emails
    • First observedgithub_repo_commits
    • First observedgithub_user_info
    • First observedgithub_user_repos
    • First observedgravatar_lookup
    • First observedhackertarget_hostsearch
    • First observedkeybase_lookup
    • First observedosint_domain_recon
    • First observedosint_ip_recon
    • First observedosint_list_sources
    • First observedotx_indicator
    • First observedotx_search_pulses
    • First observedreddit_user
    • First observedreddit_user_posts
    • First observedsearch_darkweb
    • First observedshodan_internetdb
    • First observedusername_enumerate
    • First observedwayback_urls
    • First observedwhois_domain
    • First observedwhois_ip

TDQS

B3.3/5.0

Scored across 32 tools

Disambiguation3/5

Most tools map to a distinct source or entity (WHOIS, BGP, GitHub, Reddit, OTX), so an agent can usually choose correctly. However, dns_lookup and dns_lookup_all appear near-identical, crtsh_search and hackertarget_hostsearch both target subdomains, and the all-in-one recon tools duplicate many individual lookups.

Naming Consistency4/5

The set mostly follows a clean snake_case source_or_object convention (github_user_repos, check_email_breaches, otx_indicator). Minor inconsistencies such as dns_lookup vs dns_lookup_all, hackertarget_hostsearch, and osint_list_sources are easy to learn but break the pattern slightly.

Tool Count2/5

At 32 tools, the surface is heavy and likely to increase prompt and selection cost for an agent; while each tool represents a plausible OSINT data source, the count exceeds the range where an agent can quickly scan and disambiguate options. Consolidating the recon aggregators or reducing similar lookups would help.

Completeness4/5

The server covers a coherent OSINT workflow: DNS/WHOIS/subdomain enumeration, IP/BGP/geo enrichment, social and username lookup, breach checking, and threat-intel feeds. Some broader OSINT categories such as phone numbers, image search, or mainstream social platforms beyond GitHub/Reddit/Keybase are absent, but the core domain is well covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Provides AI agents with 37 OSINT tools and 12 data sources to perform unified reconnaissance, domain analysis, and attack surface mapping. It enables agents to query, correlate, and reason across platforms like Shodan, VirusTotal, and Censys in parallel.
    37
    174 npm
    55
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that exposes 108+ omega-cli OSINT tools for reconnaissance, web analysis, threat intelligence, and reporting, enabling AI assistants to perform comprehensive open-source intelligence tasks.
    MIT