Skip to main content

Domain intelligence CLI and MCP server — tech stack, email security, and signal intelligence from DNS.

Project description

recon

Passive domain intelligence from public DNS and Microsoft/Google endpoints.

recon northwindtraders.com
╭──────────────────────── Northwind Traders ───────────────────────╮
│                                                                  │
│  Company:    Northwind Traders                                   │
│  Domain:     northwindtraders.onmicrosoft.com                    │
│  Provider:   Microsoft 365                                       │
│  Tenant ID:  a1b2c3d4-e5f6-7890-abcd-ef1234567890                │
│  Region:     NA                                                  │
│  Auth:       Federated                                           │
│  Confidence: ●●● High (3 sources)                                │
│  Services:   Anthropic (Claude), Atlassian (Jira/Confluence),    │
│              DocuSign, Exchange Autodiscover, Figma,             │
│              Intune / MDM, KnowBe4, Microsoft 365,               │
│              Microsoft Teams, Miro, Salesforce, Slack, Zendesk   │
│                                                                  │
│  Insights:   Federated identity indicators observed (likely Okta)│
│              Email security 4/5 strong (DMARC reject, DKIM,      │
│              SPF strict)                                         │
│              Email gateway: Proofpoint in front of Exchange      │
│              M365 E3/E5 indicators (Intune + federated auth)     │
│              Security stack: KnowBe4 (training), Okta (identity) │
│              AI Adoption: anthropic                              │
│              Modern Collaboration: slack, miro, atlassian, figma │
│                                                                  │
│  Related:    northwind-internal.com                              │
│                                                                  │
╰──────────────────────────────────────────────────────────────────╯

The example above is fictional. All tenant IDs, domains, and service lists are fabricated for illustration.

Give it a domain. It queries public endpoints and DNS records — no credentials, no API keys — and returns what it can find: tenant details, email security posture, SaaS fingerprints, derived signals, certificate intelligence, and neutral posture observations.

Works for Microsoft 365, Google Workspace, or any provider. Useful for anyone who needs domain intelligence — architects, MSPs, security professionals, red teamers, defenders, sales engineers, researchers. Also runs as an MCP server for AI tools.

Why recon?

recon dig / nslookup whatweb dnsrecon cloud_enum Paid tools
Zero credentials
M365 tenant detection partial varies
Google Workspace detection varies
Email security scoring varies
SaaS fingerprinting (187) partial
Signal intelligence
Certificate intelligence varies
Posture analysis
Delta / change detection
Recursive domain chaining partial varies
MCP server for AI agents
Extensible (custom YAML)

recon reads the organizational metadata layer — DNS records, identity endpoints, and certificate transparency logs that companies publish to make their email, SaaS, and security infrastructure work. It doesn't scrape websites, probe servers, or analyze page content. It turns infrastructure signals into business intelligence.

Install

Requires Python 3.10+.

pip install recon-tool                    # from PyPI (when published)
pip install -e .                          # or from source
recon doctor                              # verify connectivity

Usage

recon northwindtraders.com                # default panel output
recon northwindtraders.com --json         # structured JSON
recon northwindtraders.com --md           # markdown report
recon northwindtraders.com --html         # self-contained HTML report
recon northwindtraders.com --full         # everything (services + domains + posture)
recon northwindtraders.com --services     # M365 vs GWS vs tech stack split
recon northwindtraders.com --posture      # neutral posture observations
recon northwindtraders.com --compare prev.json  # delta: what changed since last run
recon northwindtraders.com --chain --depth 2    # recursive domain discovery
recon northwindtraders.com --no-cache     # bypass disk cache
recon batch domains.txt --json            # batch mode (default 5 concurrent)
recon batch domains.txt --csv             # batch CSV for spreadsheets
recon batch domains.txt --json -c 10      # batch with 10 concurrent
recon doctor                              # connectivity check
recon doctor --fix                        # scaffold custom config templates
recon mcp                                 # start MCP server (stdio)

Input is normalized automatically — URLs, schemes, www. prefixes, paths, and whitespace are all stripped.

What You Get

Signal Source
Company name, tenant ID, auth type Microsoft OIDC + GetUserRealm
Google Workspace auth type, modules, corporate identity Google login flow + CNAME probing + BIMI VMC
Email provider MX records
Email security score (0–5) DMARC + DKIM + SPF + MTA-STS + BIMI
187 SaaS services TXT, SPF, MX, CNAME, NS, CAA, SRV, DKIM selectors
Email gateway / SASE / security stack DNS fingerprints
Signal intelligence (29 signals) Metadata-aware YAML rules with cross-reference conditions
Certificate intelligence crt.sh metadata: issuance velocity, issuer diversity, cert age
Posture observations Neutral factual analysis across email, identity, infrastructure
Related domains CNAME breadcrumbs + certificate transparency (crt.sh)
Delta / change detection Compare current vs. previous JSON export
Evidence traceability Per-detection source records with dual confidence scoring

All from public sources. Zero authentication. Results vary by domain.

MCP Server

recon runs as an MCP server for Claude, Cursor, VS Code, Kiro, ChatGPT, or any MCP client:

{
  "mcpServers": {
    "recon": {
      "command": "python",
      "args": ["-m", "recon_tool.server"],
      "autoApprove": ["lookup_tenant", "analyze_posture"]
    }
  }
}

Then ask your AI: "Run a recon lookup on northwindtraders.com and analyze the posture."

Available MCP tools: lookup_tenant, analyze_posture, chain_lookup, reload_data.

See docs/mcp.md for setup details, available tools, and config file locations per client.

Documentation

Doc Contents
Fingerprints Detection types, custom fingerprints, email security scoring, related domain enrichment
Signals 4-layer signal intelligence, 29 signal rules, metadata conditions, custom signals
MCP Server AI agent integration setup, tools, config locations
Roadmap What's planned, what's not, and why
Legal Disclaimer, accuracy, fictional examples, third-party notice
Contributing How to add fingerprints, signals, and code
Changelog Version history

Development

pip install -e ".[dev]"
pytest tests/                          # 597 tests
ruff check recon_tool/                 # lint
pyright recon_tool/                    # type check

License

MIT — see LICENSE for details.

This tool queries only public DNS records and unauthenticated endpoints. See docs/legal.md for full disclaimer.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

recon_tool-0.4.1.tar.gz (147.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

recon_tool-0.4.1-py3-none-any.whl (105.4 kB view details)

Uploaded Python 3

File details

Details for the file recon_tool-0.4.1.tar.gz.

File metadata

  • Download URL: recon_tool-0.4.1.tar.gz
  • Upload date:
  • Size: 147.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for recon_tool-0.4.1.tar.gz
Algorithm Hash digest
SHA256 d70bfeee7bd10309e2140504d6d15964c265ae68b145cb4f7b8c7020b2a70a9f
MD5 a69f1a6bb07731c7c4d570ff6619aaf3
BLAKE2b-256 fe9e71b18b1d94563f53288cac05a8a5eabd7b3cc9b8ad6516d417cfd5d4a7dd

See more details on using hashes here.

Provenance

The following attestation bundles were made for recon_tool-0.4.1.tar.gz:

Publisher: release.yml on blisspixel/recon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file recon_tool-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: recon_tool-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 105.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for recon_tool-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1e8b3f944cfb6be223b12bc200ae1bcda04bfb96d7dec5036d6e7f2b5bd46411
MD5 902ff935157e020fa31e5d69f6701feb
BLAKE2b-256 1123831a9b20f59ef4298b80ed31f871f762226ae43b9ad80d0f6e646680c2ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for recon_tool-0.4.1-py3-none-any.whl:

Publisher: release.yml on blisspixel/recon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page