Skip to main content
Glama

Audit Domain

audit_domain
Read-onlyIdempotent

Perform comprehensive domain audit: combines domain_report + live HTTP security headers + technology fingerprinting. By default report.dns.txt is filtered to security-relevant entries (SPF, DMARC, DKIM, MTA-STS, TLS-RPT) and report.dns.total_txt_records reports the honest pre-filter count; pass include_all_txt=true for the raw TXT list. Use when you need the full picture (recon + active checks); use domain_report for passive-only assessment. Response carries next_calls — chain with subdomain_enum (always emitted) and ssl_check (when an A record resolves) for the residual recon depth (tech_fingerprint already inline as technologies). Free: 30/hr (costs 6 tokens), Pro: 500/hr. Returns {domain, report, technologies, live_headers, summary, next_calls}.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
domainYesRoot domain to audit, without protocol or path (e.g. 'example.com', 'shopify.com')
include_all_txtNoReturn every TXT record under report.dns.txt (default: False, only SPF/DMARC/DKIM/MTA-STS/TLS-RPT kept). report.dns.total_txt_records is always emitted with the honest pre-filter count. Default filter strips vendor verification strings (google-site-verification, ms=, facebook-domain-verification, etc.) that bloat the response without security signal. Set True only when you need the raw TXT inventory.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed3 schema fields changed
    • changedOutput schema / properties / result / properties / next_calls / type
      Previous value: -"array"New value: +[
      +  "array",
      +  "null"
      +]
    • changedOutput schema / properties / result / properties / report / type
      Previous value: -"object"New value: +[
      +  "object",
      +  "null"
      +]
    • changedOutput schema / properties / result / properties / verdict / type
      Previous value: -"object"New value: +[
      +  "object",
      +  "null"
      +]
  2. Changed1 schema field changed
    • changedOutput schema / properties / result / properties / next_calls / type
      Previous value: -"object"New value: +"array"
  3. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "result": {
      +      "properties": {
      +        "domain": {
      +          "type": "string"
      +        },
      +        "live_headers": {
      +          "type": "object"
      +        },
      +        "next_calls": {
      +          "type": "object"
      +        },
      +        "report": {
      +          "type": "object"
      +        },
      +        "summary": {
      +          "type": "string"
      +        },
      +        "technologies": {
      +          "type": "object"
      +        },
      +        "verdict": {
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "domain"
      +      ],
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "result"
      +  ],
      +  "type": "object"
      +}
  4. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -{
      -  "$defs": {
      -    "AbuseIpdbInfo": {
      -      "properties": {
      -        "abuse_score": {
      -          "anyOf": [
      -            {
      -              "type": "integer"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "country": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "is_tor": {
      -          "anyOf": [
      -            {
      -              "type": "boolean"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "isp": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "reason": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "status": {
      -          "enum": [
      -            "ok",
      -            "skipped",
      -            "rate_limited",
      -            "error",
      -            "pro_only"
      -          ],
      -          "type": "string"
      -        },
      -        "total_reports": {
      -          "anyOf": [
      -            {
      -              "type": "integer"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "upgrade_url": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "usage_type": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        }
      -      },
      -      "required": [
      -        "status"
      -      ],
      -      "type": "object"
      -    },
      -    "AuditResponse": {
      -      "properties": {
      -        "domain": {
      -          "type": "string"
      -        },
      -        "live_headers": {
      -          "additionalProperties": {
      -            "type": "string"
      -          },
      -          "type": "object"
      -        },
      -        "next_calls": {
      -          "anyOf": [
      -            {
      -              "items": {
      -                "$ref": "#/$defs/PivotHint"
      -              },
      -              "type": "array"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "report": {
      -          "anyOf": [
      -            {
      -              "$ref": "#/$defs/DomainReportResponse"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "summary": {
      -          "type": "string"
      -        },
      -        "technologies": {
      -          "$ref": "#/$defs/AuditTechInfo"
      -        },
      -        "verdict": {
      -          "anyOf": [
      -            {
      -              "$ref": "#/$defs/Verdict"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        }
      -      },
      -      "required": [
      -        "domain"
      -      ],
      -      "type": "object"
      -    },
      -    "AuditTechInfo": {
      -      "properties": {
      -        "categories": {
      -          "additionalProperties": {
      -            "items": {
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "type": "object"
      -        },
      -        "count": {
      -          "type": "integer"
      -        },
      -        "summary": {
      -          "type": "string"
      -        },
      -        "technologies": {
      -          "items": {
      -            "$ref": "#/$defs/TechItem"
      -          },
      -          "type": "array"
      -        }
      -      },
      -      "type": "object"
      -    },
      -    "CertificateSummary": {
      -      "additionalProperties": true,
      -      "properties": {
      -        "common_name": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "issuer": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "not_after": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "not_before": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        }
      -      },
      -      "type": "object"
      -    },
      -    "CertificatesInfo": {
      -      "additionalProperties": true,
      -      "properties": {
      -        "certificates": {
      -          "anyOf": [
      -            {
      -              "items": {
      -                "$ref": "#/$defs/CertificateSummary"
      -              },
      -              "type": "array"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "crtsh_status": {
      -          "anyOf": [
      -            {
      -              "enum": [
      -                "ok",
      -                "timeout",
      -                "rate_limited",
      -                "unavailable",
      -                "error"
      -              ],
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "error": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "total_certificates": {
      -          "anyOf": [
      -            {
      -              "type": "integer"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        }
      -      },
      -      "type": "object"
      -    },
      -    "DomainDnsInfo": {
      -      "additionalProperties": true,
      -      "properties": {
      -        "a": {
      -          "anyOf": [
      -            {
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "aaaa": {
      -          "anyOf": [
      -            {
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "cname": {
      -          "anyOf": [
      -            {
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "mx": {
      -          "anyOf": [
      -            {
      -              "items": {
      -                "$ref": "#/$defs/MxDnsRecord"
      -              },
      -              "type": "array"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "ns": {
      -          "anyOf": [
      -            {
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "soa": {
      -          "anyOf": [
      -            {
      -              "$ref": "#/$defs/SoaInfo"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "total_txt_records": {
      -          "anyOf": [
      -            {
      -              "type": "integer"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "txt": {
      -          "anyOf": [
      -            {
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        }
      -      },
      -      "type": "object"
      -    },
      -    "DomainReportResponse": {
      -      "properties": {
      -        "certificates": {
      -          "anyOf": [
      -            {
      -              "$ref": "#/$defs/CertificatesInfo"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "dns": {
      -          "anyOf": [
      -            {
      -              "$ref": "#/$defs/DomainDnsInfo"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "domain": {
      -          "type": "string"
      -        },
      -        "email_security": {
      -          "anyOf": [
      -            {
      -              "$ref": "#/$defs/EmailSecurityInfo"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "next_calls": {
      -          "anyOf": [
      -            {
      -              "items": {
      -                "$ref": "#/$defs/PivotHint"
      -              },
      -              "type": "array"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "reputation": {
      -          "anyOf": [
      -            {
      -              "$ref": "#/$defs/DomainReputationInfo"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "reverse_dns": {
      -          "anyOf": [
      -            {
      -              "$ref": "#/$defs/ReverseDnsInfo"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "risk": {
      -          "anyOf": [
      -            {
      -              "$ref": "#/$defs/RiskInfo"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "ssl": {
      -          "anyOf": [
      -            {
      -              "$ref": "#/$defs/SslInfoEmbedded"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "subdomains": {
      -          "anyOf": [
      -            {
      -              "$ref": "#/$defs/SubdomainsInfo"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "summary": {
      -          "type": "string"
      -        },
      -        "threat": {
      -          "anyOf": [
      -            {
      -              "$ref": "#/$defs/ThreatInfo"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "verdict": {
      -          "anyOf": [
      -            {
      -              "$ref": "#/$defs/Verdict"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "waf": {
      -          "anyOf": [
      -            {
      -              "$ref": "#/$defs/WafInfo"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "whois": {
      -          "anyOf": [
      -            {
      -              "$ref": "#/$defs/WhoisInfoEmbedded"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        }
      -      },
      -      "required": [
      -        "domain"
      -      ],
      -      "type": "object"
      -    },
      -    "DomainReputationInfo": {
      -      "additionalProperties": true,
      -      "properties": {
      -        "abuseipdb": {
      -          "anyOf": [
      -            {
      -              "$ref": "#/$defs/AbuseIpdbInfo"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "shodan": {
      -          "anyOf": [
      -            {
      -              "$ref": "#/$defs/ShodanRepInfo"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        }
      -      },
      -      "type": "object"
      -    },
      -    "EmailSecurityInfo": {
      -      "additionalProperties": true,
      -      "properties": {
      -        "dkim_selectors": {
      -          "anyOf": [
      -            {
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "dkim_status": {
      -          "anyOf": [
      -            {
      -              "enum": [
      -                "verified",
      -                "unverifiable"
      -              ],
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "dmarc": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "grade": {
      -          "anyOf": [
      -            {
      -              "enum": [
      -                "A",
      -                "B",
      -                "C",
      -                "F"
      -              ],
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "issues": {
      -          "anyOf": [
      -            {
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "spf": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        }
      -      },
      -      "type": "object"
      -    },
      -    "ErrorDetail": {
      -      "properties": {
      -        "code": {
      -          "enum": [
      -            "invalid_argument",
      -            "not_found",
      -            "rate_limit_exceeded",
      -            "auth_required",
      -            "tier_limit",
      -            "upstream_timeout",
      -            "upstream_error",
      -            "internal_error"
      -          ],
      -          "type": "string"
      -        },
      -        "docs_url": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "message": {
      -          "maxLength": 500,
      -          "type": "string"
      -        },
      -        "retry_after_seconds": {
      -          "anyOf": [
      -            {
      -              "type": "integer"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "upgrade_url": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        }
      -      },
      -      "required": [
      -        "code",
      -        "message"
      -      ],
      -      "type": "object"
      -    },
      -    "ErrorResponse": {
      -      "properties": {
      -        "error": {
      -          "$ref": "#/$defs/ErrorDetail"
      -        }
      -      },
      -      "required": [
      -        "error"
      -      ],
      -      "type": "object"
      -    },
      -    "MxDnsRecord": {
      -      "properties": {
      -        "host": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "priority": {
      -          "anyOf": [
      -            {
      -              "type": "integer"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        }
      -      },
      -      "type": "object"
      -    },
      -    "PivotHint": {
      -      "additionalProperties": true,
      -      "properties": {
      -        "input": {
      -          "type": "string"
      -        },
      -        "params": {
      -          "anyOf": [
      -            {
      -              "additionalProperties": {
      -                "type": "string"
      -              },
      -              "type": "object"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "reason": {
      -          "type": "string"
      -        },
      -        "tool": {
      -          "enum": [
      -            "cve_lookup",
      -            "cve_search",
      -            "cve_leading",
      -            "bulk_cve_lookup",
      -            "calculate_risk_score",
      -            "get_cvss_details",
      -            "exploit_lookup",
      -            "kev_detail",
      -            "cwe_lookup",
      -            "subdomain_enum",
      -            "ssl_check",
      -            "tech_fingerprint",
      -            "asn_lookup",
      -            "ip_lookup",
      -            "ioc_lookup",
      -            "bulk_ioc_lookup",
      -            "hash_lookup",
      -            "threat_intel",
      -            "threat_report",
      -            "audit_domain",
      -            "domain_report",
      -            "dns_lookup",
      -            "whois_lookup",
      -            "wayback_lookup",
      -            "scan_headers",
      -            "check_headers",
      -            "check_secrets",
      -            "check_injection",
      -            "check_dependencies",
      -            "email_mx",
      -            "email_security_posture",
      -            "email_disposable",
      -            "email_verify",
      -            "robots_txt",
      -            "redirect_chain",
      -            "brand_assets",
      -            "seo_audit",
      -            "phone_lookup",
      -            "username_lookup",
      -            "password_check",
      -            "phishing_check",
      -            "atlas_technique_lookup",
      -            "atlas_technique_search",
      -            "bulk_atlas_technique_lookup",
      -            "atlas_case_study_lookup",
      -            "atlas_case_study_search",
      -            "d3fend_defense_lookup",
      -            "d3fend_defense_search",
      -            "d3fend_defense_for_attack",
      -            "d3fend_attack_coverage",
      -            "sigma_rule_lookup",
      -            "bulk_sigma_rule_lookup",
      -            "tech_stack_cve_audit"
      -          ],
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "tool",
      -        "input",
      -        "reason"
      -      ],
      -      "type": "object"
      -    },
      -    "ReverseDnsInfo": {
      -      "additionalProperties": true,
      -      "properties": {
      -        "ip": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "ptr": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "shared_hosting": {
      -          "anyOf": [
      -            {
      -              "type": "boolean"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        }
      -      },
      -      "type": "object"
      -    },
      -    "RiskFactor": {
      -      "properties": {
      -        "detail": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "max": {
      -          "anyOf": [
      -            {
      -              "type": "integer"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "name": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "score": {
      -          "anyOf": [
      -            {
      -              "type": "integer"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        }
      -      },
      -      "type": "object"
      -    },
      -    "RiskInfo": {
      -      "additionalProperties": true,
      -      "properties": {
      -        "factors": {
      -          "anyOf": [
      -            {
      -              "items": {
      -                "$ref": "#/$defs/RiskFactor"
      -              },
      -              "type": "array"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "grade": {
      -          "anyOf": [
      -            {
      -              "enum": [
      -                "A",
      -                "B",
      -                "C",
      -                "D",
      -                "F"
      -              ],
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "max_score": {
      -          "anyOf": [
      -            {
      -              "type": "integer"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "score": {
      -          "anyOf": [
      -            {
      -              "type": "integer"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        }
      -      },
      -      "type": "object"
      -    },
      -    "ShodanRepInfo": {
      -      "properties": {
      -        "asn": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "city": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "country_name": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "hostnames": {
      -          "items": {
      -            "type": "string"
      -          },
      -          "type": "array"
      -        },
      -        "isp": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "last_update": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "org": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "os": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "ports": {
      -          "items": {
      -            "type": "integer"
      -          },
      -          "type": "array"
      -        },
      -        "reason": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "status": {
      -          "enum": [
      -            "ok",
      -            "skipped",
      -            "restricted",
      -            "rate_limited",
      -            "error",
      -            "pro_only"
      -          ],
      -          "type": "string"
      -        },
      -        "upgrade_url": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "vulns": {
      -          "items": {
      -            "type": "string"
      -          },
      -          "type": "array"
      -        }
      -      },
      -      "required": [
      -        "status"
      -      ],
      -      "type": "object"
      -    },
      -    "SoaInfo": {
      -      "additionalProperties": true,
      -      "properties": {
      -        "mname": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "rname": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "serial": {
      -          "anyOf": [
      -            {
      -              "type": "integer"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        }
      -      },
      -      "type": "object"
      -    },
      -    "SslInfoEmbedded": {
      -      "additionalProperties": true,
      -      "properties": {
      -        "alpn": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "cert_valid": {
      -          "anyOf": [
      -            {
      -              "type": "boolean"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "common_name": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "days_remaining": {
      -          "anyOf": [
      -            {
      -              "type": "integer"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "error": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "grade": {
      -          "anyOf": [
      -            {
      -              "enum": [
      -                "A",
      -                "B",
      -                "C",
      -                "D",
      -                "F"
      -              ],
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "issuer": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "not_after": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "not_before": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "san": {
      -          "anyOf": [
      -            {
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "serial_number": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "tls_version": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "validation_errors": {
      -          "anyOf": [
      -            {
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "version": {
      -          "anyOf": [
      -            {
      -              "type": "integer"
      -            },
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        }
      -      },
      -      "type": "object"
      -    },
      -    "SubdomainsInfo": {
      -      "additionalProperties": true,
      -      "properties": {
      -        "count": {
      -          "anyOf": [
      -            {
      -              "type": "integer"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "found_via_crtsh": {
      -          "anyOf": [
      -            {
      -              "type": "integer"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "found_via_wordlist": {
      -          "anyOf": [
      -            {
      -              "type": "integer"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "sources": {
      -          "anyOf": [
      -            {
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "subdomains": {
      -          "anyOf": [
      -            {
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "summary": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "warnings": {
      -          "anyOf": [
      -            {
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        }
      -      },
      -      "type": "object"
      -    },
      -    "TechItem": {
      -      "properties": {
      -        "category": {
      -          "type": "string"
      -        },
      -        "name": {
      -          "type": "string"
      -        },
      -        "source": {
      -          "type": "string"
      -        },
      -        "version": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        }
      -      },
      -      "required": [
      -        "name",
      -        "category",
      -        "source"
      -      ],
      -      "type": "object"
      -    },
      -    "ThreatInfo": {
      -      "additionalProperties": true,
      -      "properties": {
      -        "tags": {
      -          "anyOf": [
      -            {
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "threat_types": {
      -          "anyOf": [
      -            {
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "url_count": {
      -          "anyOf": [
      -            {
      -              "type": "integer"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "urlhaus_status": {
      -          "anyOf": [
      -            {
      -              "enum": [
      -                "clean",
      -                "listed",
      -                "error",
      -                "skipped"
      -              ],
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "urls": {
      -          "anyOf": [
      -            {
      -              "items": {
      -                "$ref": "#/$defs/ThreatUrlEntry"
      -              },
      -              "type": "array"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "urls_online": {
      -          "anyOf": [
      -            {
      -              "type": "integer"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        }
      -      },
      -      "type": "object"
      -    },
      -    "ThreatUrlEntry": {
      -      "additionalProperties": true,
      -      "properties": {
      -        "date_added": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "status": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "tags": {
      -          "anyOf": [
      -            {
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "threat": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "url": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        }
      -      },
      -      "type": "object"
      -    },
      -    "Verdict": {
      -      "properties": {
      -        "completeness": {
      -          "enum": [
      -            "complete",
      -            "partial",
      -            "minimal"
      -          ],
      -          "type": "string"
      -        },
      -        "data_age_seconds": {
      -          "anyOf": [
      -            {
      -              "type": "integer"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "deterministic": {
      -          "type": "boolean"
      -        },
      -        "falsifiable_fields": {
      -          "items": {
      -            "type": "string"
      -          },
      -          "type": "array"
      -        },
      -        "sources_queried": {
      -          "items": {
      -            "type": "string"
      -          },
      -          "type": "array"
      -        },
      -        "sources_unavailable": {
      -          "items": {
      -            "type": "string"
      -          },
      -          "type": "array"
      -        }
      -      },
      -      "required": [
      -        "deterministic"
      -      ],
      -      "type": "object"
      -    },
      -    "WafInfo": {
      -      "additionalProperties": true,
      -      "properties": {
      -        "detected": {
      -          "anyOf": [
      -            {
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "waf_present": {
      -          "anyOf": [
      -            {
      -              "type": "boolean"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        }
      -      },
      -      "type": "object"
      -    },
      -    "WhoisInfoEmbedded": {
      -      "additionalProperties": true,
      -      "properties": {
      -        "creation_date": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "error": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "expiry_date": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "name_servers": {
      -          "anyOf": [
      -            {
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "raw_length": {
      -          "anyOf": [
      -            {
      -              "type": "integer"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "registrar": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "status": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "updated_date": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        }
      -      },
      -      "type": "object"
      -    }
      -  },
      -  "properties": {
      -    "result": {
      -      "anyOf": [
      -        {
      -          "$ref": "#/$defs/AuditResponse"
      -        },
      -        {
      -          "$ref": "#/$defs/ErrorResponse"
      -        }
      -      ]
      -    }
      -  },
      -  "required": [
      -    "result"
      -  ],
      -  "type": "object"
      -}New value: +null
  5. Changed444 schema fields changed
    • removedOutput schema / $defs / AbuseIpdbInfo / description
      Removed value: -"AbuseIPDB reputation check (Pro tier only)."
    • removedOutput schema / $defs / AbuseIpdbInfo / properties / abuse_score / default
      Removed value: -null
    • removedOutput schema / $defs / AbuseIpdbInfo / properties / abuse_score / description
      Removed value: -"AbuseIPDB confidence-of-abuse score (0-100). Only present when status='ok'."
    • removedOutput schema / $defs / AbuseIpdbInfo / properties / abuse_score / title
      Removed value: -"Abuse Score"
    • removedOutput schema / $defs / AbuseIpdbInfo / properties / country / default
      Removed value: -null
    • removedOutput schema / $defs / AbuseIpdbInfo / properties / country / description
      Removed value: -"ISO 3166-1 alpha-2 country code from AbuseIPDB geolocation (may differ from RIPE)."
    • removedOutput schema / $defs / AbuseIpdbInfo / properties / country / title
      Removed value: -"Country"
    • removedOutput schema / $defs / AbuseIpdbInfo / properties / is_tor / default
      Removed value: -null
    • removedOutput schema / $defs / AbuseIpdbInfo / properties / is_tor / description
      Removed value: -"AbuseIPDB's Tor exit flag (cross-reference with top-level tor_exit field)."
    • removedOutput schema / $defs / AbuseIpdbInfo / properties / is_tor / title
      Removed value: -"Is Tor"
    • removedOutput schema / $defs / AbuseIpdbInfo / properties / isp / default
      Removed value: -null
    • removedOutput schema / $defs / AbuseIpdbInfo / properties / isp / description
      Removed value: -"ISP name as reported by AbuseIPDB."
    • removedOutput schema / $defs / AbuseIpdbInfo / properties / isp / title
      Removed value: -"Isp"
    • removedOutput schema / $defs / AbuseIpdbInfo / properties / reason / default
      Removed value: -null
    • removedOutput schema / $defs / AbuseIpdbInfo / properties / reason / description
      Removed value: -"Human-readable reason string. Present when status is skipped/rate_limited/error/pro_only."
    • removedOutput schema / $defs / AbuseIpdbInfo / properties / reason / title
      Removed value: -"Reason"
    • removedOutput schema / $defs / AbuseIpdbInfo / properties / status / description
      Removed value: -"'ok' = data fetched; 'skipped' = API key not configured; 'rate_limited' = AbuseIPDB quota exceeded; 'error' = transient HTTP/network failure; 'pro_only' = returned on Free tier as upsell hint (see upgrade_url)."
    • removedOutput schema / $defs / AbuseIpdbInfo / properties / status / title
      Removed value: -"Status"
    • removedOutput schema / $defs / AbuseIpdbInfo / properties / total_reports / default
      Removed value: -null
    • removedOutput schema / $defs / AbuseIpdbInfo / properties / total_reports / description
      Removed value: -"Number of reports submitted against this IP in the last 90 days."
    • removedOutput schema / $defs / AbuseIpdbInfo / properties / total_reports / title
      Removed value: -"Total Reports"
    • removedOutput schema / $defs / AbuseIpdbInfo / properties / upgrade_url / default
      Removed value: -null
    • removedOutput schema / $defs / AbuseIpdbInfo / properties / upgrade_url / description
      Removed value: -"Upgrade link returned when status='pro_only'."
    • removedOutput schema / $defs / AbuseIpdbInfo / properties / upgrade_url / title
      Removed value: -"Upgrade Url"
    • removedOutput schema / $defs / AbuseIpdbInfo / properties / usage_type / default
      Removed value: -null
    • removedOutput schema / $defs / AbuseIpdbInfo / properties / usage_type / description
      Removed value: -"AbuseIPDB usage classification: 'Data Center/Web Hosting/Transit', 'ISP', 'Mobile ISP', etc."
    • removedOutput schema / $defs / AbuseIpdbInfo / properties / usage_type / title
      Removed value: -"Usage Type"
    • removedOutput schema / $defs / AbuseIpdbInfo / title
      Removed value: -"AbuseIpdbInfo"
    • removedOutput schema / $defs / AuditResponse / properties / domain / description
      Removed value: -"Queried domain (lowercased, no scheme)."
    • removedOutput schema / $defs / AuditResponse / properties / domain / title
      Removed value: -"Domain"
    • removedOutput schema / $defs / AuditResponse / properties / live_headers / description
      Removed value: -"Filtered HTTP response headers from the origin (lowercased keys). Sensitive headers (Set-Cookie, Authorization, etc.) are stripped before serialization."
    • removedOutput schema / $defs / AuditResponse / properties / live_headers / title
      Removed value: -"Live Headers"
    • removedOutput schema / $defs / AuditResponse / properties / next_calls / default
      Removed value: -null
    • removedOutput schema / $defs / AuditResponse / properties / next_calls / description
      Removed value: -"Suggested follow-up MCP tool calls. Ordered by relevance; agents should chain these without re-prompting the user."
    • removedOutput schema / $defs / AuditResponse / properties / next_calls / title
      Removed value: -"Next Calls"
    • removedOutput schema / $defs / AuditResponse / properties / report / default
      Removed value: -null
    • removedOutput schema / $defs / AuditResponse / properties / report / description
      Removed value: -"Full domain intelligence report — same shape as /v1/domain/{domain}. Contains DNS, WHOIS, SSL, subdomains, threat intel, reputation, and verdict. See DomainReportResponse."
    • removedOutput schema / $defs / AuditResponse / properties / summary / default
      Removed value: -""
    • removedOutput schema / $defs / AuditResponse / properties / summary / description
      Removed value: -"One-line audit summary combining domain report summary + technology count."
    • removedOutput schema / $defs / AuditResponse / properties / summary / title
      Removed value: -"Summary"
    • removedOutput schema / $defs / AuditResponse / properties / technologies / description
      Removed value: -"Technology fingerprint detected from live response headers. See AuditTechInfo."
    • removedOutput schema / $defs / AuditResponse / properties / verdict / default
      Removed value: -null
    • removedOutput schema / $defs / AuditResponse / properties / verdict / description
      Removed value: -"Falsifiability metadata: sources_queried, sources_unavailable, completeness, deterministic flag. Lets agents distinguish 'no data' from 'source failed' without re-running the call."
    • removedOutput schema / $defs / AuditResponse / title
      Removed value: -"AuditResponse"
    • removedOutput schema / $defs / AuditTechInfo / description
      Removed value: -"Technology fingerprint subset embedded in /v1/audit (no domain echo — outer AuditResponse carries it)."
    • removedOutput schema / $defs / AuditTechInfo / properties / categories / description
      Removed value: -"Technologies grouped by category (e.g. {'cdn': ['Cloudflare'], 'webserver': ['nginx']})."
    • removedOutput schema / $defs / AuditTechInfo / properties / categories / title
      Removed value: -"Categories"
    • removedOutput schema / $defs / AuditTechInfo / properties / count / default
      Removed value: -0
    • removedOutput schema / $defs / AuditTechInfo / properties / count / description
      Removed value: -"Total number of detected technologies (== sum of categories)."
    • removedOutput schema / $defs / AuditTechInfo / properties / count / title
      Removed value: -"Count"
    • removedOutput schema / $defs / AuditTechInfo / properties / summary / default
      Removed value: -""
    • removedOutput schema / $defs / AuditTechInfo / properties / summary / description
      Removed value: -"One-line summary of the detected stack."
    • removedOutput schema / $defs / AuditTechInfo / properties / summary / title
      Removed value: -"Summary"
    • removedOutput schema / $defs / AuditTechInfo / properties / technologies / description
      Removed value: -"Detected technologies (name + category) inferred from response headers (e.g. Server, X-Powered-By)."
    • removedOutput schema / $defs / AuditTechInfo / properties / technologies / title
      Removed value: -"Technologies"
    • removedOutput schema / $defs / AuditTechInfo / title
      Removed value: -"AuditTechInfo"
    • removedOutput schema / $defs / CertificateSummary / description
      Removed value: -"Single cert entry inside CertificatesInfo.certificates."
    • removedOutput schema / $defs / CertificateSummary / properties / common_name / default
      Removed value: -null
    • removedOutput schema / $defs / CertificateSummary / properties / common_name / description
      Removed value: -"Cert Subject CN."
    • removedOutput schema / $defs / CertificateSummary / properties / common_name / title
      Removed value: -"Common Name"
    • removedOutput schema / $defs / CertificateSummary / properties / issuer / default
      Removed value: -null
    • removedOutput schema / $defs / CertificateSummary / properties / issuer / description
      Removed value: -"Cert issuer CN or O."
    • removedOutput schema / $defs / CertificateSummary / properties / issuer / title
      Removed value: -"Issuer"
    • removedOutput schema / $defs / CertificateSummary / properties / not_after / default
      Removed value: -null
    • removedOutput schema / $defs / CertificateSummary / properties / not_after / description
      Removed value: -"notAfter timestamp."
    • removedOutput schema / $defs / CertificateSummary / properties / not_after / title
      Removed value: -"Not After"
    • removedOutput schema / $defs / CertificateSummary / properties / not_before / default
      Removed value: -null
    • removedOutput schema / $defs / CertificateSummary / properties / not_before / description
      Removed value: -"notBefore timestamp."
    • removedOutput schema / $defs / CertificateSummary / properties / not_before / title
      Removed value: -"Not Before"
    • removedOutput schema / $defs / CertificateSummary / title
      Removed value: -"CertificateSummary"
    • removedOutput schema / $defs / CertificatesInfo / properties / certificates / default
      Removed value: -null
    • removedOutput schema / $defs / CertificatesInfo / properties / certificates / description
      Removed value: -"Up to CT_MAX_CERTS recent unique certs (deduped by serial)."
    • removedOutput schema / $defs / CertificatesInfo / properties / certificates / title
      Removed value: -"Certificates"
    • removedOutput schema / $defs / CertificatesInfo / properties / crtsh_status / default
      Removed value: -null
    • removedOutput schema / $defs / CertificatesInfo / properties / crtsh_status / description
      Removed value: -"Status of the crt.sh fetch behind certificates. Mirrors subdomains.crtsh_status so both halves of a domain_report agree on whether CT logs delivered. 'ok' means the upstream responded — total_certificates=0 with status='ok' is a real empty result. Anything else (timeout / rate_limited / unavailable / error) means the upstream did not deliver and the cert list may be missing entries."
    • removedOutput schema / $defs / CertificatesInfo / properties / crtsh_status / title
      Removed value: -"Crtsh Status"
    • removedOutput schema / $defs / CertificatesInfo / properties / error / default
      Removed value: -null
    • removedOutput schema / $defs / CertificatesInfo / properties / error / description
      Removed value: -"Populated when the crt.sh fetch failed (e.g. 'crt_sh_timeout', 'crt_sh_rate_limited', 'crt_sh_unavailable'). Distinguishes 'no certs found' from 'fetch failed'; risk_score skips the CT factor when this is set."
    • removedOutput schema / $defs / CertificatesInfo / properties / error / title
      Removed value: -"Error"
    • removedOutput schema / $defs / CertificatesInfo / properties / total_certificates / default
      Removed value: -null
    • removedOutput schema / $defs / CertificatesInfo / properties / total_certificates / description
      Removed value: -"Total cert count from crt.sh (pre-dedup)."
    • removedOutput schema / $defs / CertificatesInfo / properties / total_certificates / title
      Removed value: -"Total Certificates"
    • removedOutput schema / $defs / CertificatesInfo / title
      Removed value: -"CertificatesInfo"
    • removedOutput schema / $defs / DomainDnsInfo / description
      Removed value: -"DNS records per type. Keys are omitted (not null) when the lookup for that type fails."
    • removedOutput schema / $defs / DomainDnsInfo / properties / a / default
      Removed value: -null
    • removedOutput schema / $defs / DomainDnsInfo / properties / a / description
      Removed value: -"A records (IPv4 addresses)."
    • removedOutput schema / $defs / DomainDnsInfo / properties / a / title
      Removed value: -"A"
    • removedOutput schema / $defs / DomainDnsInfo / properties / aaaa / default
      Removed value: -null
    • removedOutput schema / $defs / DomainDnsInfo / properties / aaaa / description
      Removed value: -"AAAA records (IPv6 addresses)."
    • removedOutput schema / $defs / DomainDnsInfo / properties / aaaa / title
      Removed value: -"Aaaa"
    • removedOutput schema / $defs / DomainDnsInfo / properties / cname / default
      Removed value: -null
    • removedOutput schema / $defs / DomainDnsInfo / properties / cname / description
      Removed value: -"CNAME records."
    • removedOutput schema / $defs / DomainDnsInfo / properties / cname / title
      Removed value: -"Cname"
    • removedOutput schema / $defs / DomainDnsInfo / properties / mx / default
      Removed value: -null
    • removedOutput schema / $defs / DomainDnsInfo / properties / mx / description
      Removed value: -"MX records as {priority, host} list."
    • removedOutput schema / $defs / DomainDnsInfo / properties / mx / title
      Removed value: -"Mx"
    • removedOutput schema / $defs / DomainDnsInfo / properties / ns / default
      Removed value: -null
    • removedOutput schema / $defs / DomainDnsInfo / properties / ns / description
      Removed value: -"NS records (nameserver hostnames)."
    • removedOutput schema / $defs / DomainDnsInfo / properties / ns / title
      Removed value: -"Ns"
    • removedOutput schema / $defs / DomainDnsInfo / properties / soa / default
      Removed value: -null
    • removedOutput schema / $defs / DomainDnsInfo / properties / soa / description
      Removed value: -"SOA record (zone authority)."
    • removedOutput schema / $defs / DomainDnsInfo / properties / total_txt_records / default
      Removed value: -null
    • removedOutput schema / $defs / DomainDnsInfo / properties / total_txt_records / description
      Removed value: -"Honest pre-filter TXT record count. Always emitted (domain_report, audit_domain, /v1/dns). Equals len(txt) when include_all_txt=true or on /v1/dns/{domain} (raw, unfiltered). 0 when no TXT records exist. Null only when the field is absent (older cached entries)."
    • removedOutput schema / $defs / DomainDnsInfo / properties / total_txt_records / title
      Removed value: -"Total Txt Records"
    • removedOutput schema / $defs / DomainDnsInfo / properties / txt / default
      Removed value: -null
    • removedOutput schema / $defs / DomainDnsInfo / properties / txt / description
      Removed value: -"TXT records. By default in domain_report, filtered to security-relevant entries (SPF v=spf, DMARC v=DMARC, DKIM v=DKIM, MTA-STS v=STSv, TLS-RPT v=TLSRPTv). Pass ?include_all_txt=true to return every TXT including vendor verification strings."
    • removedOutput schema / $defs / DomainDnsInfo / properties / txt / title
      Removed value: -"Txt"
    • removedOutput schema / $defs / DomainDnsInfo / title
      Removed value: -"DomainDnsInfo"
    • removedOutput schema / $defs / DomainReportResponse / properties / certificates / default
      Removed value: -null
    • removedOutput schema / $defs / DomainReportResponse / properties / certificates / description
      Removed value: -"Certificate transparency log entries from crt.sh. Skipped in lite mode."
    • removedOutput schema / $defs / DomainReportResponse / properties / dns / default
      Removed value: -null
    • removedOutput schema / $defs / DomainReportResponse / properties / dns / description
      Removed value: -"Forward DNS record set (A/AAAA/MX/NS/TXT/CNAME/SOA). Empty dict when all lookups fail."
    • removedOutput schema / $defs / DomainReportResponse / properties / domain / description
      Removed value: -"Queried domain (echoed, lowercased)."
    • removedOutput schema / $defs / DomainReportResponse / properties / domain / title
      Removed value: -"Domain"
    • removedOutput schema / $defs / DomainReportResponse / properties / email_security / default
      Removed value: -null
    • removedOutput schema / $defs / DomainReportResponse / properties / email_security / description
      Removed value: -"SPF/DMARC/DKIM posture of the domain (email authentication grade)."
    • removedOutput schema / $defs / DomainReportResponse / properties / next_calls / default
      Removed value: -null
    • removedOutput schema / $defs / DomainReportResponse / properties / next_calls / description
      Removed value: -"Suggested follow-up MCP tool calls. Ordered by relevance; agents should chain these without re-prompting the user."
    • removedOutput schema / $defs / DomainReportResponse / properties / next_calls / title
      Removed value: -"Next Calls"
    • removedOutput schema / $defs / DomainReportResponse / properties / reputation / default
      Removed value: -null
    • removedOutput schema / $defs / DomainReportResponse / properties / reputation / description
      Removed value: -"IP-level reputation of the domain's resolved A record. Absent in lite mode AND when no A record resolves. On Free tier inner blocks carry {status:'pro_only'} stubs (agents should not treat as clean)."
    • removedOutput schema / $defs / DomainReportResponse / properties / reverse_dns / default
      Removed value: -null
    • removedOutput schema / $defs / DomainReportResponse / properties / reverse_dns / description
      Removed value: -"Reverse-DNS resolution of the domain's primary IPv4 (PTR + shared-hosting signal)."
    • removedOutput schema / $defs / DomainReportResponse / properties / risk / default
      Removed value: -null
    • removedOutput schema / $defs / DomainReportResponse / properties / risk / description
      Removed value: -"Composite risk scoring (0-100) with per-factor breakdown — drives the top-level risk_score alias."
    • removedOutput schema / $defs / DomainReportResponse / properties / ssl / default
      Removed value: -null
    • removedOutput schema / $defs / DomainReportResponse / properties / ssl / description
      Removed value: -"SSL/TLS certificate subset (CN, issuer, validity, grade). Full shape at top-level /v1/ssl/{domain}."
    • removedOutput schema / $defs / DomainReportResponse / properties / subdomains / default
      Removed value: -null
    • removedOutput schema / $defs / DomainReportResponse / properties / subdomains / description
      Removed value: -"Subdomain enumeration (wordlist + crt.sh). Skipped in lite mode (returns {subdomains:[], count:0})."
    • removedOutput schema / $defs / DomainReportResponse / properties / summary / default
      Removed value: -""
    • removedOutput schema / $defs / DomainReportResponse / properties / summary / description
      Removed value: -"One-line human summary aggregating IP, grade, WAF, and subdomain count."
    • removedOutput schema / $defs / DomainReportResponse / properties / summary / title
      Removed value: -"Summary"
    • removedOutput schema / $defs / DomainReportResponse / properties / threat / default
      Removed value: -null
    • removedOutput schema / $defs / DomainReportResponse / properties / threat / description
      Removed value: -"URLhaus threat intelligence for the domain (malware / phishing URL listings). Skipped in lite mode."
    • removedOutput schema / $defs / DomainReportResponse / properties / verdict / default
      Removed value: -null
    • removedOutput schema / $defs / DomainReportResponse / properties / verdict / description
      Removed value: -"Falsifiability metadata: sources_queried, sources_unavailable, completeness, deterministic flag. Lets agents distinguish 'no data' from 'source failed' without re-running the call."
    • removedOutput schema / $defs / DomainReportResponse / properties / waf / default
      Removed value: -null
    • removedOutput schema / $defs / DomainReportResponse / properties / waf / description
      Removed value: -"WAF detection from live response headers (Cloudflare, AWS CloudFront, Akamai, Sucuri, etc.)."
    • removedOutput schema / $defs / DomainReportResponse / properties / whois / default
      Removed value: -null
    • removedOutput schema / $defs / DomainReportResponse / properties / whois / description
      Removed value: -"WHOIS extract (registrar, dates, nameservers, EPP status). Skipped in lite mode. Error branch populates `error`."
    • removedOutput schema / $defs / DomainReportResponse / title
      Removed value: -"DomainReportResponse"
    • removedOutput schema / $defs / DomainReputationInfo / description
      Removed value: -"Reputation block inside DomainReportResponse (IP-level enrichment of the resolved A record).\n\nDiffers from IpLookupResponse.reputation: no firehol block here (FireHOL is IP-only)."
    • removedOutput schema / $defs / DomainReputationInfo / properties / abuseipdb / default
      Removed value: -null
    • removedOutput schema / $defs / DomainReputationInfo / properties / abuseipdb / description
      Removed value: -"AbuseIPDB enrichment for the domain's resolved IP. Pro tier only — free tier returns {status:'pro_only', reason, upgrade_url} stub."
    • removedOutput schema / $defs / DomainReputationInfo / properties / shodan / default
      Removed value: -null
    • removedOutput schema / $defs / DomainReputationInfo / properties / shodan / description
      Removed value: -"Shodan enrichment for the domain's resolved IP. Pro tier only — free tier returns {status:'pro_only', reason, upgrade_url} stub."
    • removedOutput schema / $defs / DomainReputationInfo / title
      Removed value: -"DomainReputationInfo"
    • removedOutput schema / $defs / EmailSecurityInfo / properties / dkim_selectors / default
      Removed value: -null
    • removedOutput schema / $defs / EmailSecurityInfo / properties / dkim_selectors / description
      Removed value: -"DKIM selectors that responded to probing (e.g. ['google', 'selector1']). Empty when none found."
    • removedOutput schema / $defs / EmailSecurityInfo / properties / dkim_selectors / title
      Removed value: -"Dkim Selectors"
    • removedOutput schema / $defs / EmailSecurityInfo / properties / dkim_status / default
      Removed value: -null
    • removedOutput schema / $defs / EmailSecurityInfo / properties / dkim_status / description
      Removed value: -"Honest evidence label for DKIM. 'verified' when at least one selector responded (see dkim_selectors). 'unverifiable' when no probed selector matched — DKIM keys live at arbitrary operator-chosen selector names, so absence under common+date-based probes does not prove absence. Grade does not penalize 'unverifiable'."
    • removedOutput schema / $defs / EmailSecurityInfo / properties / dkim_status / title
      Removed value: -"Dkim Status"
    • removedOutput schema / $defs / EmailSecurityInfo / properties / dmarc / default
      Removed value: -null
    • removedOutput schema / $defs / EmailSecurityInfo / properties / dmarc / description
      Removed value: -"DMARC record string (v=DMARC1; p=...; ...). Null when no DMARC record is published at _dmarc.<domain>."
    • removedOutput schema / $defs / EmailSecurityInfo / properties / dmarc / title
      Removed value: -"Dmarc"
    • removedOutput schema / $defs / EmailSecurityInfo / properties / grade / default
      Removed value: -null
    • removedOutput schema / $defs / EmailSecurityInfo / properties / grade / description
      Removed value: -"Email-auth grade. When DKIM is verified: A=SPF+DMARC+DKIM, B=2 of 3, C=1 of 3. When DKIM is unverifiable: A=SPF+DMARC, B=one of SPF/DMARC, F=neither — DKIM absence is not penalized because it cannot be proven without selector knowledge."
    • removedOutput schema / $defs / EmailSecurityInfo / properties / grade / title
      Removed value: -"Grade"
    • removedOutput schema / $defs / EmailSecurityInfo / properties / issues / default
      Removed value: -null
    • removedOutput schema / $defs / EmailSecurityInfo / properties / issues / description
      Removed value: -"Human-readable issues (missing SPF, weak DMARC policy, etc.)."
    • removedOutput schema / $defs / EmailSecurityInfo / properties / issues / title
      Removed value: -"Issues"
    • removedOutput schema / $defs / EmailSecurityInfo / properties / spf / default
      Removed value: -null
    • removedOutput schema / $defs / EmailSecurityInfo / properties / spf / description
      Removed value: -"SPF record string (v=spf1 ...). Null when no SPF is published."
    • removedOutput schema / $defs / EmailSecurityInfo / properties / spf / title
      Removed value: -"Spf"
    • removedOutput schema / $defs / EmailSecurityInfo / title
      Removed value: -"EmailSecurityInfo"
    • removedOutput schema / $defs / ErrorDetail / description
      Removed value: -"Structured failure body. Codes mirror app/exceptions.AppException\nsubclasses; agent retry / upgrade decisions key off `code`, not `message`."
    • removedOutput schema / $defs / ErrorDetail / properties / code / description
      Removed value: -"Stable machine-readable failure category. Agents key retry/upgrade decisions off this."
    • removedOutput schema / $defs / ErrorDetail / properties / code / title
      Removed value: -"Code"
    • removedOutput schema / $defs / ErrorDetail / properties / docs_url / default
      Removed value: -null
    • removedOutput schema / $defs / ErrorDetail / properties / docs_url / description
      Removed value: -"Documentation pointer (e.g. tool input contract) when code='invalid_argument'."
    • removedOutput schema / $defs / ErrorDetail / properties / docs_url / title
      Removed value: -"Docs Url"
    • removedOutput schema / $defs / ErrorDetail / properties / message / description
      Removed value: -"Human-readable detail. Free text — never parse. Capped at 500 chars to prevent oversized upstream errors from bloating responses."
    • removedOutput schema / $defs / ErrorDetail / properties / message / title
      Removed value: -"Message"
    • removedOutput schema / $defs / ErrorDetail / properties / retry_after_seconds / default
      Removed value: -null
    • removedOutput schema / $defs / ErrorDetail / properties / retry_after_seconds / description
      Removed value: -"When code='rate_limit_exceeded', the minimum seconds to wait before retrying."
    • removedOutput schema / $defs / ErrorDetail / properties / retry_after_seconds / title
      Removed value: -"Retry After Seconds"
    • removedOutput schema / $defs / ErrorDetail / properties / upgrade_url / default
      Removed value: -null
    • removedOutput schema / $defs / ErrorDetail / properties / upgrade_url / description
      Removed value: -"Pricing/upgrade URL when code='tier_limit' or 'rate_limit_exceeded' on the Free tier."
    • removedOutput schema / $defs / ErrorDetail / properties / upgrade_url / title
      Removed value: -"Upgrade Url"
    • removedOutput schema / $defs / ErrorDetail / title
      Removed value: -"ErrorDetail"
    • removedOutput schema / $defs / ErrorResponse / description
      Removed value: -"MCP error envelope. Tool return type is always\n`SpecificResponse | ErrorResponse` — Union flag tells the agent which arm\narrived without parsing the inner body."
    • removedOutput schema / $defs / ErrorResponse / title
      Removed value: -"ErrorResponse"
    • removedOutput schema / $defs / MxDnsRecord / description
      Removed value: -"Single MX record embedded inside DomainReportResponse.dns.mx."
    • removedOutput schema / $defs / MxDnsRecord / properties / host / default
      Removed value: -null
    • removedOutput schema / $defs / MxDnsRecord / properties / host / description
      Removed value: -"MX hostname (trailing dot stripped)."
    • removedOutput schema / $defs / MxDnsRecord / properties / host / title
      Removed value: -"Host"
    • removedOutput schema / $defs / MxDnsRecord / properties / priority / default
      Removed value: -null
    • removedOutput schema / $defs / MxDnsRecord / properties / priority / description
      Removed value: -"MX preference (lower = higher priority)."
    • removedOutput schema / $defs / MxDnsRecord / properties / priority / title
      Removed value: -"Priority"
    • removedOutput schema / $defs / MxDnsRecord / title
      Removed value: -"MxDnsRecord"
    • removedOutput schema / $defs / PivotHint / description
      Removed value: -"A suggested follow-up MCP tool call. Surfaced inside response.next_calls so\nLLM agents can chain related lookups without manual prompting. Each hint names\nthe tool, the input value to pass, and a short reason explaining why this\npivot adds value in the current context."
    • removedOutput schema / $defs / PivotHint / properties / input / description
      Removed value: -"Suggested input value to pass to the tool — typically a CVE ID, CWE ID, domain, or IP. Pre-populated from the current response so the agent can call the next tool without re-deriving the argument."
    • removedOutput schema / $defs / PivotHint / properties / input / title
      Removed value: -"Input"
    • removedOutput schema / $defs / PivotHint / properties / params / default
      Removed value: -null
    • removedOutput schema / $defs / PivotHint / properties / params / description
      Removed value: -"Optional extra kwargs to pass alongside `input`. Used by pivot generators when the next call benefits from a secondary parameter, e.g. {'exclude_id': 'AML.T0051'} to skip the originating technique from a sibling-tactic search. Omitted when no extra args are needed."
    • removedOutput schema / $defs / PivotHint / properties / params / title
      Removed value: -"Params"
    • removedOutput schema / $defs / PivotHint / properties / reason / description
      Removed value: -"Short rationale (one sentence) for why this follow-up call adds value, e.g. 'Federal patch deadline + ransomware association', 'Public exploits / PoC availability'."
    • removedOutput schema / $defs / PivotHint / properties / reason / title
      Removed value: -"Reason"
    • removedOutput schema / $defs / PivotHint / properties / tool / description
      Removed value: -"Canonical MCP tool name to call next. Constrained to known operation_ids in tools/list — adding a new tool here requires expanding the Literal."
    • removedOutput schema / $defs / PivotHint / properties / tool / title
      Removed value: -"Tool"
    • removedOutput schema / $defs / PivotHint / title
      Removed value: -"PivotHint"
    • removedOutput schema / $defs / ReverseDnsInfo / properties / ip / default
      Removed value: -null
    • removedOutput schema / $defs / ReverseDnsInfo / properties / ip / description
      Removed value: -"Resolved IPv4 for the domain. Null when DNS fails or IP is private."
    • removedOutput schema / $defs / ReverseDnsInfo / properties / ip / title
      Removed value: -"Ip"
    • removedOutput schema / $defs / ReverseDnsInfo / properties / ptr / default
      Removed value: -null
    • removedOutput schema / $defs / ReverseDnsInfo / properties / ptr / description
      Removed value: -"PTR (reverse-DNS) hostname for the IP. Null when no PTR is published."
    • removedOutput schema / $defs / ReverseDnsInfo / properties / ptr / title
      Removed value: -"Ptr"
    • removedOutput schema / $defs / ReverseDnsInfo / properties / shared_hosting / default
      Removed value: -null
    • removedOutput schema / $defs / ReverseDnsInfo / properties / shared_hosting / description
      Removed value: -"True when PTR hostname differs from the queried domain (shared hosting signal). Absent when PTR lookup fails."
    • removedOutput schema / $defs / ReverseDnsInfo / properties / shared_hosting / title
      Removed value: -"Shared Hosting"
    • removedOutput schema / $defs / ReverseDnsInfo / title
      Removed value: -"ReverseDnsInfo"
    • removedOutput schema / $defs / RiskFactor / properties / detail / default
      Removed value: -null
    • removedOutput schema / $defs / RiskFactor / properties / detail / description
      Removed value: -"Human-readable justification for the score."
    • removedOutput schema / $defs / RiskFactor / properties / detail / title
      Removed value: -"Detail"
    • removedOutput schema / $defs / RiskFactor / properties / max / default
      Removed value: -null
    • removedOutput schema / $defs / RiskFactor / properties / max / description
      Removed value: -"Maximum possible points for this factor."
    • removedOutput schema / $defs / RiskFactor / properties / max / title
      Removed value: -"Max"
    • removedOutput schema / $defs / RiskFactor / properties / name / default
      Removed value: -null
    • removedOutput schema / $defs / RiskFactor / properties / name / description
      Removed value: -"Factor label (e.g. 'SSL/TLS', 'Email Security', 'IP Reputation')."
    • removedOutput schema / $defs / RiskFactor / properties / name / title
      Removed value: -"Name"
    • removedOutput schema / $defs / RiskFactor / properties / score / default
      Removed value: -null
    • removedOutput schema / $defs / RiskFactor / properties / score / description
      Removed value: -"Points earned by this factor (can be negative for penalties)."
    • removedOutput schema / $defs / RiskFactor / properties / score / title
      Removed value: -"Score"
    • removedOutput schema / $defs / RiskFactor / title
      Removed value: -"RiskFactor"
    • removedOutput schema / $defs / RiskInfo / properties / factors / default
      Removed value: -null
    • removedOutput schema / $defs / RiskInfo / properties / factors / description
      Removed value: -"Per-factor scoring breakdown (typically 8-9 factors)."
    • removedOutput schema / $defs / RiskInfo / properties / factors / title
      Removed value: -"Factors"
    • removedOutput schema / $defs / RiskInfo / properties / grade / default
      Removed value: -null
    • removedOutput schema / $defs / RiskInfo / properties / grade / description
      Removed value: -"Letter grade derived from score."
    • removedOutput schema / $defs / RiskInfo / properties / grade / title
      Removed value: -"Grade"
    • removedOutput schema / $defs / RiskInfo / properties / max_score / default
      Removed value: -null
    • removedOutput schema / $defs / RiskInfo / properties / max_score / description
      Removed value: -"Maximum achievable score (100 by default; drops by the corresponding factor's max when an upstream source fails — e.g. crt.sh timeout excludes the CT factor and max_score becomes 90, so grade is computed against the available signals)."
    • removedOutput schema / $defs / RiskInfo / properties / max_score / title
      Removed value: -"Max Score"
    • removedOutput schema / $defs / RiskInfo / properties / score / default
      Removed value: -null
    • removedOutput schema / $defs / RiskInfo / properties / score / description
      Removed value: -"Cumulative risk score (0-100)."
    • removedOutput schema / $defs / RiskInfo / properties / score / title
      Removed value: -"Score"
    • removedOutput schema / $defs / RiskInfo / title
      Removed value: -"RiskInfo"
    • removedOutput schema / $defs / ShodanRepInfo / description
      Removed value: -"Shodan full API enrichment (Pro tier only). Richer than InternetDB fields at top level."
    • removedOutput schema / $defs / ShodanRepInfo / properties / asn / default
      Removed value: -null
    • removedOutput schema / $defs / ShodanRepInfo / properties / asn / description
      Removed value: -"ASN string per Shodan (e.g. 'AS13335'); may differ from top-level asn int."
    • removedOutput schema / $defs / ShodanRepInfo / properties / asn / title
      Removed value: -"Asn"
    • removedOutput schema / $defs / ShodanRepInfo / properties / city / default
      Removed value: -null
    • removedOutput schema / $defs / ShodanRepInfo / properties / city / description
      Removed value: -"City name per Shodan geolocation."
    • removedOutput schema / $defs / ShodanRepInfo / properties / city / title
      Removed value: -"City"
    • removedOutput schema / $defs / ShodanRepInfo / properties / country_name / default
      Removed value: -null
    • removedOutput schema / $defs / ShodanRepInfo / properties / country_name / description
      Removed value: -"Country name per Shodan geolocation."
    • removedOutput schema / $defs / ShodanRepInfo / properties / country_name / title
      Removed value: -"Country Name"
    • removedOutput schema / $defs / ShodanRepInfo / properties / hostnames / description
      Removed value: -"Hostnames observed pointing to this IP per Shodan."
    • removedOutput schema / $defs / ShodanRepInfo / properties / hostnames / title
      Removed value: -"Hostnames"
    • removedOutput schema / $defs / ShodanRepInfo / properties / isp / default
      Removed value: -null
    • removedOutput schema / $defs / ShodanRepInfo / properties / isp / description
      Removed value: -"ISP per Shodan (may differ from AbuseIPDB/RIPE)."
    • removedOutput schema / $defs / ShodanRepInfo / properties / isp / title
      Removed value: -"Isp"
    • removedOutput schema / $defs / ShodanRepInfo / properties / last_update / default
      Removed value: -null
    • removedOutput schema / $defs / ShodanRepInfo / properties / last_update / description
      Removed value: -"ISO 8601 timestamp of Shodan's most recent data point for this IP."
    • removedOutput schema / $defs / ShodanRepInfo / properties / last_update / title
      Removed value: -"Last Update"
    • removedOutput schema / $defs / ShodanRepInfo / properties / org / default
      Removed value: -null
    • removedOutput schema / $defs / ShodanRepInfo / properties / org / description
      Removed value: -"Organization name owning the IP per Shodan."
    • removedOutput schema / $defs / ShodanRepInfo / properties / org / title
      Removed value: -"Org"
    • removedOutput schema / $defs / ShodanRepInfo / properties / os / default
      Removed value: -null
    • removedOutput schema / $defs / ShodanRepInfo / properties / os / description
      Removed value: -"Shodan-detected operating system (fingerprint-based, best-effort)."
    • removedOutput schema / $defs / ShodanRepInfo / properties / os / title
      Removed value: -"Os"
    • removedOutput schema / $defs / ShodanRepInfo / properties / ports / description
      Removed value: -"Open ports observed by Shodan full scan (superset of top-level InternetDB ports)."
    • removedOutput schema / $defs / ShodanRepInfo / properties / ports / title
      Removed value: -"Ports"
    • removedOutput schema / $defs / ShodanRepInfo / properties / reason / default
      Removed value: -null
    • removedOutput schema / $defs / ShodanRepInfo / properties / reason / description
      Removed value: -"Human-readable reason. Present when status is skipped/restricted/rate_limited/error/pro_only."
    • removedOutput schema / $defs / ShodanRepInfo / properties / reason / title
      Removed value: -"Reason"
    • removedOutput schema / $defs / ShodanRepInfo / properties / status / description
      Removed value: -"'ok' = data fetched; 'skipped' = API key not configured; 'restricted' = 403 (IP not available on free Shodan tier); 'rate_limited' = 429 quota exceeded; 'error' = transient HTTP/network failure; 'pro_only' = returned on Free tier as upsell hint."
    • removedOutput schema / $defs / ShodanRepInfo / properties / status / title
      Removed value: -"Status"
    • removedOutput schema / $defs / ShodanRepInfo / properties / upgrade_url / default
      Removed value: -null
    • removedOutput schema / $defs / ShodanRepInfo / properties / upgrade_url / description
      Removed value: -"Upgrade link returned when status='pro_only'."
    • removedOutput schema / $defs / ShodanRepInfo / properties / upgrade_url / title
      Removed value: -"Upgrade Url"
    • removedOutput schema / $defs / ShodanRepInfo / properties / vulns / description
      Removed value: -"CVE IDs Shodan has associated with banners on this IP."
    • removedOutput schema / $defs / ShodanRepInfo / properties / vulns / title
      Removed value: -"Vulns"
    • removedOutput schema / $defs / ShodanRepInfo / title
      Removed value: -"ShodanRepInfo"
    • removedOutput schema / $defs / SoaInfo / description
      Removed value: -"SOA record embedded inside DomainDnsInfo.soa."
    • removedOutput schema / $defs / SoaInfo / properties / mname / default
      Removed value: -null
    • removedOutput schema / $defs / SoaInfo / properties / mname / description
      Removed value: -"Primary nameserver (SOA MNAME)."
    • removedOutput schema / $defs / SoaInfo / properties / mname / title
      Removed value: -"Mname"
    • removedOutput schema / $defs / SoaInfo / properties / rname / default
      Removed value: -null
    • removedOutput schema / $defs / SoaInfo / properties / rname / description
      Removed value: -"Responsible party mailbox (SOA RNAME)."
    • removedOutput schema / $defs / SoaInfo / properties / rname / title
      Removed value: -"Rname"
    • removedOutput schema / $defs / SoaInfo / properties / serial / default
      Removed value: -null
    • removedOutput schema / $defs / SoaInfo / properties / serial / description
      Removed value: -"Zone serial number."
    • removedOutput schema / $defs / SoaInfo / properties / serial / title
      Removed value: -"Serial"
    • removedOutput schema / $defs / SoaInfo / title
      Removed value: -"SoaInfo"
    • removedOutput schema / $defs / SslInfoEmbedded / description
      Removed value: -"SSL subset embedded in the domain report. See top-level SslResponse for live SSL endpoint shape."
    • removedOutput schema / $defs / SslInfoEmbedded / properties / alpn / default
      Removed value: -null
    • removedOutput schema / $defs / SslInfoEmbedded / properties / alpn / description
      Removed value: -"Negotiated ALPN protocol (e.g. 'http/1.1', 'h2')."
    • removedOutput schema / $defs / SslInfoEmbedded / properties / alpn / title
      Removed value: -"Alpn"
    • removedOutput schema / $defs / SslInfoEmbedded / properties / cert_valid / default
      Removed value: -null
    • removedOutput schema / $defs / SslInfoEmbedded / properties / cert_valid / description
      Removed value: -"True only when chain verified AND hostname matches AND not expired. False when cert is readable but fails one or more validation checks (see validation_errors)."
    • removedOutput schema / $defs / SslInfoEmbedded / properties / cert_valid / title
      Removed value: -"Cert Valid"
    • removedOutput schema / $defs / SslInfoEmbedded / properties / common_name / default
      Removed value: -null
    • removedOutput schema / $defs / SslInfoEmbedded / properties / common_name / description
      Removed value: -"Leaf cert Subject CN."
    • removedOutput schema / $defs / SslInfoEmbedded / properties / common_name / title
      Removed value: -"Common Name"
    • removedOutput schema / $defs / SslInfoEmbedded / properties / days_remaining / default
      Removed value: -null
    • removedOutput schema / $defs / SslInfoEmbedded / properties / days_remaining / description
      Removed value: -"Days until expiry. Negative when already expired."
    • removedOutput schema / $defs / SslInfoEmbedded / properties / days_remaining / title
      Removed value: -"Days Remaining"
    • removedOutput schema / $defs / SslInfoEmbedded / properties / error / default
      Removed value: -null
    • removedOutput schema / $defs / SslInfoEmbedded / properties / error / description
      Removed value: -"Populated only on probe failure (timeout, connection refused, no port 443). Cert validation issues are NOT errors here — see cert_valid + validation_errors instead."
    • removedOutput schema / $defs / SslInfoEmbedded / properties / error / title
      Removed value: -"Error"
    • removedOutput schema / $defs / SslInfoEmbedded / properties / grade / default
      Removed value: -null
    • removedOutput schema / $defs / SslInfoEmbedded / properties / grade / description
      Removed value: -"SSL grade. A/B/C: cert_valid AND TLS modern. D: cert readable but invalid (self-signed, hostname mismatch, untrusted root). F: probe failure, expired, or legacy TLS."
    • removedOutput schema / $defs / SslInfoEmbedded / properties / grade / title
      Removed value: -"Grade"
    • removedOutput schema / $defs / SslInfoEmbedded / properties / issuer / default
      Removed value: -null
    • removedOutput schema / $defs / SslInfoEmbedded / properties / issuer / description
      Removed value: -"Leaf cert issuer organization name."
    • removedOutput schema / $defs / SslInfoEmbedded / properties / issuer / title
      Removed value: -"Issuer"
    • removedOutput schema / $defs / SslInfoEmbedded / properties / not_after / default
      Removed value: -null
    • removedOutput schema / $defs / SslInfoEmbedded / properties / not_after / description
      Removed value: -"notAfter (expiry) timestamp (ISO 8601 / UTC)."
    • removedOutput schema / $defs / SslInfoEmbedded / properties / not_after / title
      Removed value: -"Not After"
    • removedOutput schema / $defs / SslInfoEmbedded / properties / not_before / default
      Removed value: -null
    • removedOutput schema / $defs / SslInfoEmbedded / properties / not_before / description
      Removed value: -"notBefore timestamp (ISO 8601 / UTC)."
    • removedOutput schema / $defs / SslInfoEmbedded / properties / not_before / title
      Removed value: -"Not Before"
    • removedOutput schema / $defs / SslInfoEmbedded / properties / san / default
      Removed value: -null
    • removedOutput schema / $defs / SslInfoEmbedded / properties / san / description
      Removed value: -"Subject Alternative Names."
    • removedOutput schema / $defs / SslInfoEmbedded / properties / san / title
      Removed value: -"San"
    • removedOutput schema / $defs / SslInfoEmbedded / properties / serial_number / default
      Removed value: -null
    • removedOutput schema / $defs / SslInfoEmbedded / properties / serial_number / description
      Removed value: -"Hex-encoded cert serial number."
    • removedOutput schema / $defs / SslInfoEmbedded / properties / serial_number / title
      Removed value: -"Serial Number"
    • removedOutput schema / $defs / SslInfoEmbedded / properties / tls_version / default
      Removed value: -null
    • removedOutput schema / $defs / SslInfoEmbedded / properties / tls_version / description
      Removed value: -"Negotiated TLS protocol (e.g. 'TLSv1.3', 'TLSv1.2'). Empty on handshake failure."
    • removedOutput schema / $defs / SslInfoEmbedded / properties / tls_version / title
      Removed value: -"Tls Version"
    • removedOutput schema / $defs / SslInfoEmbedded / properties / validation_errors / default
      Removed value: -null
    • removedOutput schema / $defs / SslInfoEmbedded / properties / validation_errors / description
      Removed value: -"Canonical validation failure tags when cert_valid is False. Values: 'expired', 'self_signed', 'hostname_mismatch', 'untrusted_root', 'chain_incomplete'. Empty/null when cert_valid is True."
    • removedOutput schema / $defs / SslInfoEmbedded / properties / validation_errors / title
      Removed value: -"Validation Errors"
    • removedOutput schema / $defs / SslInfoEmbedded / properties / version / default
      Removed value: -null
    • removedOutput schema / $defs / SslInfoEmbedded / properties / version / description
      Removed value: -"X.509 version as returned by the ssl module (int 3 for v3; empty string on some parse paths)."
    • removedOutput schema / $defs / SslInfoEmbedded / properties / version / title
      Removed value: -"Version"
    • removedOutput schema / $defs / SslInfoEmbedded / title
      Removed value: -"SslInfoEmbedded"
    • removedOutput schema / $defs / SubdomainsInfo / properties / count / default
      Removed value: -null
    • removedOutput schema / $defs / SubdomainsInfo / properties / count / description
      Removed value: -"Total subdomains discovered."
    • removedOutput schema / $defs / SubdomainsInfo / properties / count / title
      Removed value: -"Count"
    • removedOutput schema / $defs / SubdomainsInfo / properties / found_via_crtsh / default
      Removed value: -null
    • removedOutput schema / $defs / SubdomainsInfo / properties / found_via_crtsh / description
      Removed value: -"Count discovered via crt.sh CT log query."
    • removedOutput schema / $defs / SubdomainsInfo / properties / found_via_crtsh / title
      Removed value: -"Found Via Crtsh"
    • removedOutput schema / $defs / SubdomainsInfo / properties / found_via_wordlist / default
      Removed value: -null
    • removedOutput schema / $defs / SubdomainsInfo / properties / found_via_wordlist / description
      Removed value: -"Count discovered via DNS brute-force wordlist."
    • removedOutput schema / $defs / SubdomainsInfo / properties / found_via_wordlist / title
      Removed value: -"Found Via Wordlist"
    • removedOutput schema / $defs / SubdomainsInfo / properties / sources / default
      Removed value: -null
    • removedOutput schema / $defs / SubdomainsInfo / properties / sources / description
      Removed value: -"Sources that produced hits (subset of ['wordlist', 'crt_sh'])."
    • removedOutput schema / $defs / SubdomainsInfo / properties / sources / title
      Removed value: -"Sources"
    • removedOutput schema / $defs / SubdomainsInfo / properties / subdomains / default
      Removed value: -null
    • removedOutput schema / $defs / SubdomainsInfo / properties / subdomains / description
      Removed value: -"Sorted unique subdomain list."
    • removedOutput schema / $defs / SubdomainsInfo / properties / subdomains / title
      Removed value: -"Subdomains"
    • removedOutput schema / $defs / SubdomainsInfo / properties / summary / default
      Removed value: -null
    • removedOutput schema / $defs / SubdomainsInfo / properties / summary / description
      Removed value: -"One-line human-readable summary."
    • removedOutput schema / $defs / SubdomainsInfo / properties / summary / title
      Removed value: -"Summary"
    • removedOutput schema / $defs / SubdomainsInfo / properties / warnings / default
      Removed value: -null
    • removedOutput schema / $defs / SubdomainsInfo / properties / warnings / description
      Removed value: -"Non-fatal warnings (e.g. 'crt.sh timeout', 'result truncated')."
    • removedOutput schema / $defs / SubdomainsInfo / properties / warnings / title
      Removed value: -"Warnings"
    • removedOutput schema / $defs / SubdomainsInfo / title
      Removed value: -"SubdomainsInfo"
    • removedOutput schema / $defs / TechItem / properties / category / title
      Removed value: -"Category"
    • removedOutput schema / $defs / TechItem / properties / name / title
      Removed value: -"Name"
    • removedOutput schema / $defs / TechItem / properties / source / title
      Removed value: -"Source"
    • removedOutput schema / $defs / TechItem / properties / version / default
      Removed value: -null
    • removedOutput schema / $defs / TechItem / properties / version / title
      Removed value: -"Version"
    • removedOutput schema / $defs / TechItem / title
      Removed value: -"TechItem"
    • removedOutput schema / $defs / ThreatInfo / properties / tags / default
      Removed value: -null
    • removedOutput schema / $defs / ThreatInfo / properties / tags / description
      Removed value: -"Deduped list of tags (up to 20)."
    • removedOutput schema / $defs / ThreatInfo / properties / tags / title
      Removed value: -"Tags"
    • removedOutput schema / $defs / ThreatInfo / properties / threat_types / default
      Removed value: -null
    • removedOutput schema / $defs / ThreatInfo / properties / threat_types / description
      Removed value: -"Deduped list of threat classes across all URLs."
    • removedOutput schema / $defs / ThreatInfo / properties / threat_types / title
      Removed value: -"Threat Types"
    • removedOutput schema / $defs / ThreatInfo / properties / url_count / default
      Removed value: -null
    • removedOutput schema / $defs / ThreatInfo / properties / url_count / description
      Removed value: -"Total URLs URLhaus has seen for this domain."
    • removedOutput schema / $defs / ThreatInfo / properties / url_count / title
      Removed value: -"Url Count"
    • removedOutput schema / $defs / ThreatInfo / properties / urlhaus_status / default
      Removed value: -null
    • removedOutput schema / $defs / ThreatInfo / properties / urlhaus_status / description
      Removed value: -"URLhaus lookup outcome. 'skipped' in lite mode; 'error' on API failure (treat as unavailable, not clean)."
    • removedOutput schema / $defs / ThreatInfo / properties / urlhaus_status / title
      Removed value: -"Urlhaus Status"
    • removedOutput schema / $defs / ThreatInfo / properties / urls / default
      Removed value: -null
    • removedOutput schema / $defs / ThreatInfo / properties / urls / description
      Removed value: -"Up to 20 offending URL entries."
    • removedOutput schema / $defs / ThreatInfo / properties / urls / title
      Removed value: -"Urls"
    • removedOutput schema / $defs / ThreatInfo / properties / urls_online / default
      Removed value: -null
    • removedOutput schema / $defs / ThreatInfo / properties / urls_online / description
      Removed value: -"Subset of url_count currently marked online."
    • removedOutput schema / $defs / ThreatInfo / properties / urls_online / title
      Removed value: -"Urls Online"
    • removedOutput schema / $defs / ThreatInfo / title
      Removed value: -"ThreatInfo"
    • removedOutput schema / $defs / ThreatUrlEntry / description
      Removed value: -"Single offending URL entry inside ThreatInfo.urls."
    • removedOutput schema / $defs / ThreatUrlEntry / properties / date_added / default
      Removed value: -null
    • removedOutput schema / $defs / ThreatUrlEntry / properties / date_added / description
      Removed value: -"When URLhaus first saw this URL."
    • removedOutput schema / $defs / ThreatUrlEntry / properties / date_added / title
      Removed value: -"Date Added"
    • removedOutput schema / $defs / ThreatUrlEntry / properties / status / default
      Removed value: -null
    • removedOutput schema / $defs / ThreatUrlEntry / properties / status / description
      Removed value: -"URLhaus status for this URL ('online', 'offline')."
    • removedOutput schema / $defs / ThreatUrlEntry / properties / status / title
      Removed value: -"Status"
    • removedOutput schema / $defs / ThreatUrlEntry / properties / tags / default
      Removed value: -null
    • removedOutput schema / $defs / ThreatUrlEntry / properties / tags / description
      Removed value: -"Tags assigned by URLhaus (malware family, kit, etc.)."
    • removedOutput schema / $defs / ThreatUrlEntry / properties / tags / title
      Removed value: -"Tags"
    • removedOutput schema / $defs / ThreatUrlEntry / properties / threat / default
      Removed value: -null
    • removedOutput schema / $defs / ThreatUrlEntry / properties / threat / description
      Removed value: -"Threat class (e.g. 'malware_download', 'phishing')."
    • removedOutput schema / $defs / ThreatUrlEntry / properties / threat / title
      Removed value: -"Threat"
    • removedOutput schema / $defs / ThreatUrlEntry / properties / url / default
      Removed value: -null
    • removedOutput schema / $defs / ThreatUrlEntry / properties / url / description
      Removed value: -"Offending URL observed in URLhaus."
    • removedOutput schema / $defs / ThreatUrlEntry / properties / url / title
      Removed value: -"Url"
    • removedOutput schema / $defs / ThreatUrlEntry / title
      Removed value: -"ThreatUrlEntry"
    • removedOutput schema / $defs / Verdict / properties / completeness / default
      Removed value: -"complete"
    • removedOutput schema / $defs / Verdict / properties / completeness / description
      Removed value: -"'complete' = every planned source returned data; 'partial' = at least one source in sources_unavailable failed or was skipped; 'minimal' = only the primary/required source returned, optional enrichment missing."
    • removedOutput schema / $defs / Verdict / properties / completeness / title
      Removed value: -"Completeness"
    • removedOutput schema / $defs / Verdict / properties / data_age_seconds / default
      Removed value: -null
    • removedOutput schema / $defs / Verdict / properties / data_age_seconds / description
      Removed value: -"Seconds elapsed since the oldest cached source was fetched, or null when every source was queried live for this request. Use to judge freshness."
    • removedOutput schema / $defs / Verdict / properties / data_age_seconds / title
      Removed value: -"Data Age Seconds"
    • removedOutput schema / $defs / Verdict / properties / deterministic / description
      Removed value: -"True when the response is fully reproducible from the listed sources for the same input at the same moment (no randomness, no model inference). False for endpoints that include probabilistic scoring or LLM output."
    • removedOutput schema / $defs / Verdict / properties / deterministic / title
      Removed value: -"Deterministic"
    • removedOutput schema / $defs / Verdict / properties / falsifiable_fields / description
      Removed value: -"Top-level response fields whose values a caller can independently re-derive from the named upstream sources (e.g. 'dns', 'ssl', 'whois'). Fields not in this list are derived/computed and cannot be directly re-verified."
    • removedOutput schema / $defs / Verdict / properties / falsifiable_fields / title
      Removed value: -"Falsifiable Fields"
    • removedOutput schema / $defs / Verdict / properties / sources_queried / description
      Removed value: -"Canonical source identifiers successfully consulted for this response (e.g. 'ripe_stat', 'shodan_internetdb', 'firehol'). Agent-readable list, order not significant."
    • removedOutput schema / $defs / Verdict / properties / sources_queried / title
      Removed value: -"Sources Queried"
    • removedOutput schema / $defs / Verdict / properties / sources_unavailable / description
      Removed value: -"Sources that were expected but not returned — either intentionally skipped (lite mode, tier gating) or failed (quota, timeout, upstream down). Empty list means every planned source produced data."
    • removedOutput schema / $defs / Verdict / properties / sources_unavailable / title
      Removed value: -"Sources Unavailable"
    • removedOutput schema / $defs / Verdict / title
      Removed value: -"Verdict"
    • removedOutput schema / $defs / WafInfo / properties / detected / default
      Removed value: -null
    • removedOutput schema / $defs / WafInfo / properties / detected / description
      Removed value: -"WAF product names detected from response headers (e.g. ['Cloudflare', 'AWS CloudFront'])."
    • removedOutput schema / $defs / WafInfo / properties / detected / title
      Removed value: -"Detected"
    • removedOutput schema / $defs / WafInfo / properties / waf_present / default
      Removed value: -null
    • removedOutput schema / $defs / WafInfo / properties / waf_present / description
      Removed value: -"True when `detected` is non-empty."
    • removedOutput schema / $defs / WafInfo / properties / waf_present / title
      Removed value: -"Waf Present"
    • removedOutput schema / $defs / WafInfo / title
      Removed value: -"WafInfo"
    • removedOutput schema / $defs / WhoisInfoEmbedded / description
      Removed value: -"WHOIS subset embedded in the domain report. Fields are best-effort regex extracts from the raw WHOIS text."
    • removedOutput schema / $defs / WhoisInfoEmbedded / properties / creation_date / default
      Removed value: -null
    • removedOutput schema / $defs / WhoisInfoEmbedded / properties / creation_date / description
      Removed value: -"Domain creation date (format depends on registrar)."
    • removedOutput schema / $defs / WhoisInfoEmbedded / properties / creation_date / title
      Removed value: -"Creation Date"
    • removedOutput schema / $defs / WhoisInfoEmbedded / properties / error / default
      Removed value: -null
    • removedOutput schema / $defs / WhoisInfoEmbedded / properties / error / description
      Removed value: -"Populated when the WHOIS TCP query failed (e.g. no WHOIS server for TLD, socket timeout)."
    • removedOutput schema / $defs / WhoisInfoEmbedded / properties / error / title
      Removed value: -"Error"
    • removedOutput schema / $defs / WhoisInfoEmbedded / properties / expiry_date / default
      Removed value: -null
    • removedOutput schema / $defs / WhoisInfoEmbedded / properties / expiry_date / description
      Removed value: -"Domain expiry date (format depends on registrar)."
    • removedOutput schema / $defs / WhoisInfoEmbedded / properties / expiry_date / title
      Removed value: -"Expiry Date"
    • removedOutput schema / $defs / WhoisInfoEmbedded / properties / name_servers / default
      Removed value: -null
    • removedOutput schema / $defs / WhoisInfoEmbedded / properties / name_servers / description
      Removed value: -"Authoritative nameservers per WHOIS."
    • removedOutput schema / $defs / WhoisInfoEmbedded / properties / name_servers / title
      Removed value: -"Name Servers"
    • removedOutput schema / $defs / WhoisInfoEmbedded / properties / raw_length / default
      Removed value: -null
    • removedOutput schema / $defs / WhoisInfoEmbedded / properties / raw_length / description
      Removed value: -"Byte length of raw WHOIS response (sanity indicator)."
    • removedOutput schema / $defs / WhoisInfoEmbedded / properties / raw_length / title
      Removed value: -"Raw Length"
    • removedOutput schema / $defs / WhoisInfoEmbedded / properties / registrar / default
      Removed value: -null
    • removedOutput schema / $defs / WhoisInfoEmbedded / properties / registrar / description
      Removed value: -"Registrar name as reported by the WHOIS server."
    • removedOutput schema / $defs / WhoisInfoEmbedded / properties / registrar / title
      Removed value: -"Registrar"
    • removedOutput schema / $defs / WhoisInfoEmbedded / properties / status / default
      Removed value: -null
    • removedOutput schema / $defs / WhoisInfoEmbedded / properties / status / description
      Removed value: -"EPP domain status (e.g. 'clientTransferProhibited'). String or list depending on registrar."
    • removedOutput schema / $defs / WhoisInfoEmbedded / properties / status / title
      Removed value: -"Status"
    • removedOutput schema / $defs / WhoisInfoEmbedded / properties / updated_date / default
      Removed value: -null
    • removedOutput schema / $defs / WhoisInfoEmbedded / properties / updated_date / description
      Removed value: -"Last-updated timestamp from WHOIS."
    • removedOutput schema / $defs / WhoisInfoEmbedded / properties / updated_date / title
      Removed value: -"Updated Date"
    • removedOutput schema / $defs / WhoisInfoEmbedded / title
      Removed value: -"WhoisInfoEmbedded"
    • removedOutput schema / properties / result / title
      Removed value: -"Result"
    • removedOutput schema / title
      Removed value: -"audit_domainOutput"
  6. Changed1 schema field changed
    • changedOutput schema / $defs / PivotHint / properties / tool / enum
      Previous value: -[
      -  "cve_lookup",
      -  "cve_search",
      -  "cve_leading",
      -  "bulk_cve_lookup",
      -  "calculate_risk_score",
      -  "get_cvss_details",
      -  "exploit_lookup",
      -  "kev_detail",
      -  "cwe_lookup",
      -  "subdomain_enum",
      -  "ssl_check",
      -  "tech_fingerprint",
      -  "asn_lookup",
      -  "ip_lookup",
      -  "ioc_lookup",
      -  "bulk_ioc_lookup",
      -  "hash_lookup",
      -  "threat_intel",
      -  "threat_report",
      -  "audit_domain",
      -  "domain_report",
      -  "dns_lookup",
      -  "whois_lookup",
      -  "wayback_lookup",
      -  "scan_headers",
      -  "check_headers",
      -  "check_secrets",
      -  "check_injection",
      -  "check_dependencies",
      -  "email_mx",
      -  "email_security_posture",
      -  "email_disposable",
      -  "email_verify",
      -  "robots_txt",
      -  "redirect_chain",
      -  "brand_assets",
      -  "seo_audit",
      -  "phone_lookup",
      -  "username_lookup",
      -  "password_check",
      -  "phishing_check",
      -  "atlas_technique_lookup",
      -  "atlas_technique_search",
      -  "bulk_atlas_technique_lookup",
      -  "atlas_case_study_lookup",
      -  "atlas_case_study_search",
      -  "d3fend_defense_lookup",
      -  "d3fend_defense_search",
      -  "d3fend_defense_for_attack",
      -  "d3fend_attack_coverage",
      -  "sigma_rule_lookup",
      -  "bulk_sigma_rule_lookup"
      -]New value: +[
      +  "cve_lookup",
      +  "cve_search",
      +  "cve_leading",
      +  "bulk_cve_lookup",
      +  "calculate_risk_score",
      +  "get_cvss_details",
      +  "exploit_lookup",
      +  "kev_detail",
      +  "cwe_lookup",
      +  "subdomain_enum",
      +  "ssl_check",
      +  "tech_fingerprint",
      +  "asn_lookup",
      +  "ip_lookup",
      +  "ioc_lookup",
      +  "bulk_ioc_lookup",
      +  "hash_lookup",
      +  "threat_intel",
      +  "threat_report",
      +  "audit_domain",
      +  "domain_report",
      +  "dns_lookup",
      +  "whois_lookup",
      +  "wayback_lookup",
      +  "scan_headers",
      +  "check_headers",
      +  "check_secrets",
      +  "check_injection",
      +  "check_dependencies",
      +  "email_mx",
      +  "email_security_posture",
      +  "email_disposable",
      +  "email_verify",
      +  "robots_txt",
      +  "redirect_chain",
      +  "brand_assets",
      +  "seo_audit",
      +  "phone_lookup",
      +  "username_lookup",
      +  "password_check",
      +  "phishing_check",
      +  "atlas_technique_lookup",
      +  "atlas_technique_search",
      +  "bulk_atlas_technique_lookup",
      +  "atlas_case_study_lookup",
      +  "atlas_case_study_search",
      +  "d3fend_defense_lookup",
      +  "d3fend_defense_search",
      +  "d3fend_defense_for_attack",
      +  "d3fend_attack_coverage",
      +  "sigma_rule_lookup",
      +  "bulk_sigma_rule_lookup",
      +  "tech_stack_cve_audit"
      +]
  7. Changed1 schema field changed
    • changedOutput schema / $defs / PivotHint / properties / tool / enum
      Previous value: -[
      -  "cve_lookup",
      -  "cve_search",
      -  "cve_leading",
      -  "bulk_cve_lookup",
      -  "calculate_risk_score",
      -  "get_cvss_details",
      -  "exploit_lookup",
      -  "kev_detail",
      -  "cwe_lookup",
      -  "subdomain_enum",
      -  "ssl_check",
      -  "tech_fingerprint",
      -  "asn_lookup",
      -  "ip_lookup",
      -  "ioc_lookup",
      -  "bulk_ioc_lookup",
      -  "hash_lookup",
      -  "threat_intel",
      -  "threat_report",
      -  "audit_domain",
      -  "domain_report",
      -  "dns_lookup",
      -  "whois_lookup",
      -  "wayback_lookup",
      -  "scan_headers",
      -  "check_headers",
      -  "check_secrets",
      -  "check_injection",
      -  "check_dependencies",
      -  "email_mx",
      -  "email_security_posture",
      -  "email_disposable",
      -  "email_verify",
      -  "robots_txt",
      -  "redirect_chain",
      -  "brand_assets",
      -  "seo_audit",
      -  "phone_lookup",
      -  "username_lookup",
      -  "password_check",
      -  "phishing_check",
      -  "atlas_technique_lookup",
      -  "atlas_technique_search",
      -  "bulk_atlas_technique_lookup",
      -  "atlas_case_study_lookup",
      -  "atlas_case_study_search",
      -  "d3fend_defense_lookup",
      -  "d3fend_defense_search",
      -  "d3fend_defense_for_attack",
      -  "d3fend_attack_coverage"
      -]New value: +[
      +  "cve_lookup",
      +  "cve_search",
      +  "cve_leading",
      +  "bulk_cve_lookup",
      +  "calculate_risk_score",
      +  "get_cvss_details",
      +  "exploit_lookup",
      +  "kev_detail",
      +  "cwe_lookup",
      +  "subdomain_enum",
      +  "ssl_check",
      +  "tech_fingerprint",
      +  "asn_lookup",
      +  "ip_lookup",
      +  "ioc_lookup",
      +  "bulk_ioc_lookup",
      +  "hash_lookup",
      +  "threat_intel",
      +  "threat_report",
      +  "audit_domain",
      +  "domain_report",
      +  "dns_lookup",
      +  "whois_lookup",
      +  "wayback_lookup",
      +  "scan_headers",
      +  "check_headers",
      +  "check_secrets",
      +  "check_injection",
      +  "check_dependencies",
      +  "email_mx",
      +  "email_security_posture",
      +  "email_disposable",
      +  "email_verify",
      +  "robots_txt",
      +  "redirect_chain",
      +  "brand_assets",
      +  "seo_audit",
      +  "phone_lookup",
      +  "username_lookup",
      +  "password_check",
      +  "phishing_check",
      +  "atlas_technique_lookup",
      +  "atlas_technique_search",
      +  "bulk_atlas_technique_lookup",
      +  "atlas_case_study_lookup",
      +  "atlas_case_study_search",
      +  "d3fend_defense_lookup",
      +  "d3fend_defense_search",
      +  "d3fend_defense_for_attack",
      +  "d3fend_attack_coverage",
      +  "sigma_rule_lookup",
      +  "bulk_sigma_rule_lookup"
      +]
  8. Changed1 schema field changed
    • changedOutput schema / $defs / PivotHint / properties / tool / enum
      Previous value: -[
      -  "cve_lookup",
      -  "cve_search",
      -  "cve_leading",
      -  "bulk_cve_lookup",
      -  "calculate_risk_score",
      -  "get_cvss_details",
      -  "exploit_lookup",
      -  "kev_detail",
      -  "cwe_lookup",
      -  "subdomain_enum",
      -  "ssl_check",
      -  "tech_fingerprint",
      -  "asn_lookup",
      -  "ip_lookup",
      -  "ioc_lookup",
      -  "bulk_ioc_lookup",
      -  "hash_lookup",
      -  "threat_intel",
      -  "threat_report",
      -  "audit_domain",
      -  "domain_report",
      -  "dns_lookup",
      -  "whois_lookup",
      -  "wayback_lookup",
      -  "scan_headers",
      -  "check_headers",
      -  "check_secrets",
      -  "check_injection",
      -  "check_dependencies",
      -  "email_mx",
      -  "email_disposable",
      -  "email_verify",
      -  "robots_txt",
      -  "redirect_chain",
      -  "brand_assets",
      -  "seo_audit",
      -  "phone_lookup",
      -  "username_lookup",
      -  "password_check",
      -  "phishing_check",
      -  "atlas_technique_lookup",
      -  "atlas_technique_search",
      -  "bulk_atlas_technique_lookup",
      -  "atlas_case_study_lookup",
      -  "atlas_case_study_search",
      -  "d3fend_defense_lookup",
      -  "d3fend_defense_search",
      -  "d3fend_defense_for_attack",
      -  "d3fend_attack_coverage"
      -]New value: +[
      +  "cve_lookup",
      +  "cve_search",
      +  "cve_leading",
      +  "bulk_cve_lookup",
      +  "calculate_risk_score",
      +  "get_cvss_details",
      +  "exploit_lookup",
      +  "kev_detail",
      +  "cwe_lookup",
      +  "subdomain_enum",
      +  "ssl_check",
      +  "tech_fingerprint",
      +  "asn_lookup",
      +  "ip_lookup",
      +  "ioc_lookup",
      +  "bulk_ioc_lookup",
      +  "hash_lookup",
      +  "threat_intel",
      +  "threat_report",
      +  "audit_domain",
      +  "domain_report",
      +  "dns_lookup",
      +  "whois_lookup",
      +  "wayback_lookup",
      +  "scan_headers",
      +  "check_headers",
      +  "check_secrets",
      +  "check_injection",
      +  "check_dependencies",
      +  "email_mx",
      +  "email_security_posture",
      +  "email_disposable",
      +  "email_verify",
      +  "robots_txt",
      +  "redirect_chain",
      +  "brand_assets",
      +  "seo_audit",
      +  "phone_lookup",
      +  "username_lookup",
      +  "password_check",
      +  "phishing_check",
      +  "atlas_technique_lookup",
      +  "atlas_technique_search",
      +  "bulk_atlas_technique_lookup",
      +  "atlas_case_study_lookup",
      +  "atlas_case_study_search",
      +  "d3fend_defense_lookup",
      +  "d3fend_defense_search",
      +  "d3fend_defense_for_attack",
      +  "d3fend_attack_coverage"
      +]
  9. Changed1 schema field changed
    • changedOutput schema / $defs / PivotHint / properties / tool / enum
      Previous value: -[
      -  "cve_lookup",
      -  "cve_search",
      -  "cve_leading",
      -  "bulk_cve_lookup",
      -  "exploit_lookup",
      -  "kev_detail",
      -  "cwe_lookup",
      -  "subdomain_enum",
      -  "ssl_check",
      -  "tech_fingerprint",
      -  "asn_lookup",
      -  "ip_lookup",
      -  "ioc_lookup",
      -  "bulk_ioc_lookup",
      -  "hash_lookup",
      -  "threat_intel",
      -  "threat_report",
      -  "audit_domain",
      -  "domain_report",
      -  "dns_lookup",
      -  "whois_lookup",
      -  "wayback_lookup",
      -  "scan_headers",
      -  "check_headers",
      -  "check_secrets",
      -  "check_injection",
      -  "check_dependencies",
      -  "email_mx",
      -  "email_disposable",
      -  "email_verify",
      -  "robots_txt",
      -  "redirect_chain",
      -  "brand_assets",
      -  "seo_audit",
      -  "phone_lookup",
      -  "username_lookup",
      -  "password_check",
      -  "phishing_check",
      -  "atlas_technique_lookup",
      -  "atlas_technique_search",
      -  "bulk_atlas_technique_lookup",
      -  "atlas_case_study_lookup",
      -  "atlas_case_study_search",
      -  "d3fend_defense_lookup",
      -  "d3fend_defense_search",
      -  "d3fend_defense_for_attack",
      -  "d3fend_attack_coverage"
      -]New value: +[
      +  "cve_lookup",
      +  "cve_search",
      +  "cve_leading",
      +  "bulk_cve_lookup",
      +  "calculate_risk_score",
      +  "get_cvss_details",
      +  "exploit_lookup",
      +  "kev_detail",
      +  "cwe_lookup",
      +  "subdomain_enum",
      +  "ssl_check",
      +  "tech_fingerprint",
      +  "asn_lookup",
      +  "ip_lookup",
      +  "ioc_lookup",
      +  "bulk_ioc_lookup",
      +  "hash_lookup",
      +  "threat_intel",
      +  "threat_report",
      +  "audit_domain",
      +  "domain_report",
      +  "dns_lookup",
      +  "whois_lookup",
      +  "wayback_lookup",
      +  "scan_headers",
      +  "check_headers",
      +  "check_secrets",
      +  "check_injection",
      +  "check_dependencies",
      +  "email_mx",
      +  "email_disposable",
      +  "email_verify",
      +  "robots_txt",
      +  "redirect_chain",
      +  "brand_assets",
      +  "seo_audit",
      +  "phone_lookup",
      +  "username_lookup",
      +  "password_check",
      +  "phishing_check",
      +  "atlas_technique_lookup",
      +  "atlas_technique_search",
      +  "bulk_atlas_technique_lookup",
      +  "atlas_case_study_lookup",
      +  "atlas_case_study_search",
      +  "d3fend_defense_lookup",
      +  "d3fend_defense_search",
      +  "d3fend_defense_for_attack",
      +  "d3fend_attack_coverage"
      +]
  10. Changed1 schema field changed
    • changedOutput schema / $defs / DomainDnsInfo / properties / total_txt_records / description
      Previous value: -"Honest pre-filter TXT record count (always emitted on domain_report). Equals len(txt) when include_all_txt=true. Null on /v1/dns/{domain} where TXT is not filtered."New value: +"Honest pre-filter TXT record count. Always emitted (domain_report, audit_domain, /v1/dns). Equals len(txt) when include_all_txt=true or on /v1/dns/{domain} (raw, unfiltered). 0 when no TXT records exist. Null only when the field is absent (older cached entries)."
  11. Changed1 schema field changed
    • changedOutput schema / $defs / PivotHint / properties / tool / enum
      Previous value: -[
      -  "cve_lookup",
      -  "cve_search",
      -  "cve_leading",
      -  "bulk_cve_lookup",
      -  "exploit_lookup",
      -  "kev_detail",
      -  "cwe_lookup",
      -  "subdomain_enum",
      -  "ssl_check",
      -  "tech_fingerprint",
      -  "asn_lookup",
      -  "ip_lookup",
      -  "ioc_lookup",
      -  "bulk_ioc_lookup",
      -  "hash_lookup",
      -  "threat_intel",
      -  "threat_report",
      -  "audit_domain",
      -  "domain_report",
      -  "dns_lookup",
      -  "whois_lookup",
      -  "wayback_lookup",
      -  "scan_headers",
      -  "check_headers",
      -  "check_secrets",
      -  "check_injection",
      -  "check_dependencies",
      -  "email_mx",
      -  "email_disposable",
      -  "phone_lookup",
      -  "username_lookup",
      -  "password_check",
      -  "phishing_check",
      -  "atlas_technique_lookup",
      -  "atlas_technique_search",
      -  "bulk_atlas_technique_lookup",
      -  "atlas_case_study_lookup",
      -  "atlas_case_study_search",
      -  "d3fend_defense_lookup",
      -  "d3fend_defense_search",
      -  "d3fend_defense_for_attack",
      -  "d3fend_attack_coverage"
      -]New value: +[
      +  "cve_lookup",
      +  "cve_search",
      +  "cve_leading",
      +  "bulk_cve_lookup",
      +  "exploit_lookup",
      +  "kev_detail",
      +  "cwe_lookup",
      +  "subdomain_enum",
      +  "ssl_check",
      +  "tech_fingerprint",
      +  "asn_lookup",
      +  "ip_lookup",
      +  "ioc_lookup",
      +  "bulk_ioc_lookup",
      +  "hash_lookup",
      +  "threat_intel",
      +  "threat_report",
      +  "audit_domain",
      +  "domain_report",
      +  "dns_lookup",
      +  "whois_lookup",
      +  "wayback_lookup",
      +  "scan_headers",
      +  "check_headers",
      +  "check_secrets",
      +  "check_injection",
      +  "check_dependencies",
      +  "email_mx",
      +  "email_disposable",
      +  "email_verify",
      +  "robots_txt",
      +  "redirect_chain",
      +  "brand_assets",
      +  "seo_audit",
      +  "phone_lookup",
      +  "username_lookup",
      +  "password_check",
      +  "phishing_check",
      +  "atlas_technique_lookup",
      +  "atlas_technique_search",
      +  "bulk_atlas_technique_lookup",
      +  "atlas_case_study_lookup",
      +  "atlas_case_study_search",
      +  "d3fend_defense_lookup",
      +  "d3fend_defense_search",
      +  "d3fend_defense_for_attack",
      +  "d3fend_attack_coverage"
      +]
  12. Changed3 schema fields changed
    • addedOutput schema / $defs
      Added value: +{
      +  "AbuseIpdbInfo": {
      +    "description": "AbuseIPDB reputation check (Pro tier only).",
      +    "properties": {
      +      "abuse_score": {
      +        "anyOf": [
      +          {
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "AbuseIPDB confidence-of-abuse score (0-100). Only present when status='ok'.",
      +        "title": "Abuse Score"
      +      },
      +      "country": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "ISO 3166-1 alpha-2 country code from AbuseIPDB geolocation (may differ from RIPE).",
      +        "title": "Country"
      +      },
      +      "is_tor": {
      +        "anyOf": [
      +          {
      +            "type": "boolean"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "AbuseIPDB's Tor exit flag (cross-reference with top-level tor_exit field).",
      +        "title": "Is Tor"
      +      },
      +      "isp": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "ISP name as reported by AbuseIPDB.",
      +        "title": "Isp"
      +      },
      +      "reason": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Human-readable reason string. Present when status is skipped/rate_limited/error/pro_only.",
      +        "title": "Reason"
      +      },
      +      "status": {
      +        "description": "'ok' = data fetched; 'skipped' = API key not configured; 'rate_limited' = AbuseIPDB quota exceeded; 'error' = transient HTTP/network failure; 'pro_only' = returned on Free tier as upsell hint (see upgrade_url).",
      +        "enum": [
      +          "ok",
      +          "skipped",
      +          "rate_limited",
      +          "error",
      +          "pro_only"
      +        ],
      +        "title": "Status",
      +        "type": "string"
      +      },
      +      "total_reports": {
      +        "anyOf": [
      +          {
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Number of reports submitted against this IP in the last 90 days.",
      +        "title": "Total Reports"
      +      },
      +      "upgrade_url": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Upgrade link returned when status='pro_only'.",
      +        "title": "Upgrade Url"
      +      },
      +      "usage_type": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "AbuseIPDB usage classification: 'Data Center/Web Hosting/Transit', 'ISP', 'Mobile ISP', etc.",
      +        "title": "Usage Type"
      +      }
      +    },
      +    "required": [
      +      "status"
      +    ],
      +    "title": "AbuseIpdbInfo",
      +    "type": "object"
      +  },
      +  "AuditResponse": {
      +    "properties": {
      +      "domain": {
      +        "description": "Queried domain (lowercased, no scheme).",
      +        "title": "Domain",
      +        "type": "string"
      +      },
      +      "live_headers": {
      +        "additionalProperties": {
      +          "type": "string"
      +        },
      +        "description": "Filtered HTTP response headers from the origin (lowercased keys). Sensitive headers (Set-Cookie, Authorization, etc.) are stripped before serialization.",
      +        "title": "Live Headers",
      +        "type": "object"
      +      },
      +      "next_calls": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "$ref": "#/$defs/PivotHint"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Suggested follow-up MCP tool calls. Ordered by relevance; agents should chain these without re-prompting the user.",
      +        "title": "Next Calls"
      +      },
      +      "report": {
      +        "anyOf": [
      +          {
      +            "$ref": "#/$defs/DomainReportResponse"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Full domain intelligence report — same shape as /v1/domain/{domain}. Contains DNS, WHOIS, SSL, subdomains, threat intel, reputation, and verdict. See DomainReportResponse."
      +      },
      +      "summary": {
      +        "default": "",
      +        "description": "One-line audit summary combining domain report summary + technology count.",
      +        "title": "Summary",
      +        "type": "string"
      +      },
      +      "technologies": {
      +        "$ref": "#/$defs/AuditTechInfo",
      +        "description": "Technology fingerprint detected from live response headers. See AuditTechInfo."
      +      },
      +      "verdict": {
      +        "anyOf": [
      +          {
      +            "$ref": "#/$defs/Verdict"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Falsifiability metadata: sources_queried, sources_unavailable, completeness, deterministic flag. Lets agents distinguish 'no data' from 'source failed' without re-running the call."
      +      }
      +    },
      +    "required": [
      +      "domain"
      +    ],
      +    "title": "AuditResponse",
      +    "type": "object"
      +  },
      +  "AuditTechInfo": {
      +    "description": "Technology fingerprint subset embedded in /v1/audit (no domain echo — outer AuditResponse carries it).",
      +    "properties": {
      +      "categories": {
      +        "additionalProperties": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "description": "Technologies grouped by category (e.g. {'cdn': ['Cloudflare'], 'webserver': ['nginx']}).",
      +        "title": "Categories",
      +        "type": "object"
      +      },
      +      "count": {
      +        "default": 0,
      +        "description": "Total number of detected technologies (== sum of categories).",
      +        "title": "Count",
      +        "type": "integer"
      +      },
      +      "summary": {
      +        "default": "",
      +        "description": "One-line summary of the detected stack.",
      +        "title": "Summary",
      +        "type": "string"
      +      },
      +      "technologies": {
      +        "description": "Detected technologies (name + category) inferred from response headers (e.g. Server, X-Powered-By).",
      +        "items": {
      +          "$ref": "#/$defs/TechItem"
      +        },
      +        "title": "Technologies",
      +        "type": "array"
      +      }
      +    },
      +    "title": "AuditTechInfo",
      +    "type": "object"
      +  },
      +  "CertificateSummary": {
      +    "additionalProperties": true,
      +    "description": "Single cert entry inside CertificatesInfo.certificates.",
      +    "properties": {
      +      "common_name": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Cert Subject CN.",
      +        "title": "Common Name"
      +      },
      +      "issuer": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Cert issuer CN or O.",
      +        "title": "Issuer"
      +      },
      +      "not_after": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "notAfter timestamp.",
      +        "title": "Not After"
      +      },
      +      "not_before": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "notBefore timestamp.",
      +        "title": "Not Before"
      +      }
      +    },
      +    "title": "CertificateSummary",
      +    "type": "object"
      +  },
      +  "CertificatesInfo": {
      +    "additionalProperties": true,
      +    "properties": {
      +      "certificates": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "$ref": "#/$defs/CertificateSummary"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Up to CT_MAX_CERTS recent unique certs (deduped by serial).",
      +        "title": "Certificates"
      +      },
      +      "crtsh_status": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "ok",
      +              "timeout",
      +              "rate_limited",
      +              "unavailable",
      +              "error"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Status of the crt.sh fetch behind certificates. Mirrors subdomains.crtsh_status so both halves of a domain_report agree on whether CT logs delivered. 'ok' means the upstream responded — total_certificates=0 with status='ok' is a real empty result. Anything else (timeout / rate_limited / unavailable / error) means the upstream did not deliver and the cert list may be missing entries.",
      +        "title": "Crtsh Status"
      +      },
      +      "error": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Populated when the crt.sh fetch failed (e.g. 'crt_sh_timeout', 'crt_sh_rate_limited', 'crt_sh_unavailable'). Distinguishes 'no certs found' from 'fetch failed'; risk_score skips the CT factor when this is set.",
      +        "title": "Error"
      +      },
      +      "total_certificates": {
      +        "anyOf": [
      +          {
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Total cert count from crt.sh (pre-dedup).",
      +        "title": "Total Certificates"
      +      }
      +    },
      +    "title": "CertificatesInfo",
      +    "type": "object"
      +  },
      +  "DomainDnsInfo": {
      +    "additionalProperties": true,
      +    "description": "DNS records per type. Keys are omitted (not null) when the lookup for that type fails.",
      +    "properties": {
      +      "a": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "A records (IPv4 addresses).",
      +        "title": "A"
      +      },
      +      "aaaa": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "AAAA records (IPv6 addresses).",
      +        "title": "Aaaa"
      +      },
      +      "cname": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "CNAME records.",
      +        "title": "Cname"
      +      },
      +      "mx": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "$ref": "#/$defs/MxDnsRecord"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "MX records as {priority, host} list.",
      +        "title": "Mx"
      +      },
      +      "ns": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "NS records (nameserver hostnames).",
      +        "title": "Ns"
      +      },
      +      "soa": {
      +        "anyOf": [
      +          {
      +            "$ref": "#/$defs/SoaInfo"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "SOA record (zone authority)."
      +      },
      +      "total_txt_records": {
      +        "anyOf": [
      +          {
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Honest pre-filter TXT record count (always emitted on domain_report). Equals len(txt) when include_all_txt=true. Null on /v1/dns/{domain} where TXT is not filtered.",
      +        "title": "Total Txt Records"
      +      },
      +      "txt": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "TXT records. By default in domain_report, filtered to security-relevant entries (SPF v=spf, DMARC v=DMARC, DKIM v=DKIM, MTA-STS v=STSv, TLS-RPT v=TLSRPTv). Pass ?include_all_txt=true to return every TXT including vendor verification strings.",
      +        "title": "Txt"
      +      }
      +    },
      +    "title": "DomainDnsInfo",
      +    "type": "object"
      +  },
      +  "DomainReportResponse": {
      +    "properties": {
      +      "certificates": {
      +        "anyOf": [
      +          {
      +            "$ref": "#/$defs/CertificatesInfo"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Certificate transparency log entries from crt.sh. Skipped in lite mode."
      +      },
      +      "dns": {
      +        "anyOf": [
      +          {
      +            "$ref": "#/$defs/DomainDnsInfo"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Forward DNS record set (A/AAAA/MX/NS/TXT/CNAME/SOA). Empty dict when all lookups fail."
      +      },
      +      "domain": {
      +        "description": "Queried domain (echoed, lowercased).",
      +        "title": "Domain",
      +        "type": "string"
      +      },
      +      "email_security": {
      +        "anyOf": [
      +          {
      +            "$ref": "#/$defs/EmailSecurityInfo"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "SPF/DMARC/DKIM posture of the domain (email authentication grade)."
      +      },
      +      "next_calls": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "$ref": "#/$defs/PivotHint"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Suggested follow-up MCP tool calls. Ordered by relevance; agents should chain these without re-prompting the user.",
      +        "title": "Next Calls"
      +      },
      +      "reputation": {
      +        "anyOf": [
      +          {
      +            "$ref": "#/$defs/DomainReputationInfo"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "IP-level reputation of the domain's resolved A record. Absent in lite mode AND when no A record resolves. On Free tier inner blocks carry {status:'pro_only'} stubs (agents should not treat as clean)."
      +      },
      +      "reverse_dns": {
      +        "anyOf": [
      +          {
      +            "$ref": "#/$defs/ReverseDnsInfo"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Reverse-DNS resolution of the domain's primary IPv4 (PTR + shared-hosting signal)."
      +      },
      +      "risk": {
      +        "anyOf": [
      +          {
      +            "$ref": "#/$defs/RiskInfo"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Composite risk scoring (0-100) with per-factor breakdown — drives the top-level risk_score alias."
      +      },
      +      "ssl": {
      +        "anyOf": [
      +          {
      +            "$ref": "#/$defs/SslInfoEmbedded"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "SSL/TLS certificate subset (CN, issuer, validity, grade). Full shape at top-level /v1/ssl/{domain}."
      +      },
      +      "subdomains": {
      +        "anyOf": [
      +          {
      +            "$ref": "#/$defs/SubdomainsInfo"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Subdomain enumeration (wordlist + crt.sh). Skipped in lite mode (returns {subdomains:[], count:0})."
      +      },
      +      "summary": {
      +        "default": "",
      +        "description": "One-line human summary aggregating IP, grade, WAF, and subdomain count.",
      +        "title": "Summary",
      +        "type": "string"
      +      },
      +      "threat": {
      +        "anyOf": [
      +          {
      +            "$ref": "#/$defs/ThreatInfo"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "URLhaus threat intelligence for the domain (malware / phishing URL listings). Skipped in lite mode."
      +      },
      +      "verdict": {
      +        "anyOf": [
      +          {
      +            "$ref": "#/$defs/Verdict"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Falsifiability metadata: sources_queried, sources_unavailable, completeness, deterministic flag. Lets agents distinguish 'no data' from 'source failed' without re-running the call."
      +      },
      +      "waf": {
      +        "anyOf": [
      +          {
      +            "$ref": "#/$defs/WafInfo"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "WAF detection from live response headers (Cloudflare, AWS CloudFront, Akamai, Sucuri, etc.)."
      +      },
      +      "whois": {
      +        "anyOf": [
      +          {
      +            "$ref": "#/$defs/WhoisInfoEmbedded"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "WHOIS extract (registrar, dates, nameservers, EPP status). Skipped in lite mode. Error branch populates `error`."
      +      }
      +    },
      +    "required": [
      +      "domain"
      +    ],
      +    "title": "DomainReportResponse",
      +    "type": "object"
      +  },
      +  "DomainReputationInfo": {
      +    "additionalProperties": true,
      +    "description": "Reputation block inside DomainReportResponse (IP-level enrichment of the resolved A record).\n\nDiffers from IpLookupResponse.reputation: no firehol block here (FireHOL is IP-only).",
      +    "properties": {
      +      "abuseipdb": {
      +        "anyOf": [
      +          {
      +            "$ref": "#/$defs/AbuseIpdbInfo"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "AbuseIPDB enrichment for the domain's resolved IP. Pro tier only — free tier returns {status:'pro_only', reason, upgrade_url} stub."
      +      },
      +      "shodan": {
      +        "anyOf": [
      +          {
      +            "$ref": "#/$defs/ShodanRepInfo"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Shodan enrichment for the domain's resolved IP. Pro tier only — free tier returns {status:'pro_only', reason, upgrade_url} stub."
      +      }
      +    },
      +    "title": "DomainReputationInfo",
      +    "type": "object"
      +  },
      +  "EmailSecurityInfo": {
      +    "additionalProperties": true,
      +    "properties": {
      +      "dkim_selectors": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "DKIM selectors that responded to probing (e.g. ['google', 'selector1']). Empty when none found.",
      +        "title": "Dkim Selectors"
      +      },
      +      "dkim_status": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "verified",
      +              "unverifiable"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Honest evidence label for DKIM. 'verified' when at least one selector responded (see dkim_selectors). 'unverifiable' when no probed selector matched — DKIM keys live at arbitrary operator-chosen selector names, so absence under common+date-based probes does not prove absence. Grade does not penalize 'unverifiable'.",
      +        "title": "Dkim Status"
      +      },
      +      "dmarc": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "DMARC record string (v=DMARC1; p=...; ...). Null when no DMARC record is published at _dmarc.<domain>.",
      +        "title": "Dmarc"
      +      },
      +      "grade": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "A",
      +              "B",
      +              "C",
      +              "F"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Email-auth grade. When DKIM is verified: A=SPF+DMARC+DKIM, B=2 of 3, C=1 of 3. When DKIM is unverifiable: A=SPF+DMARC, B=one of SPF/DMARC, F=neither — DKIM absence is not penalized because it cannot be proven without selector knowledge.",
      +        "title": "Grade"
      +      },
      +      "issues": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Human-readable issues (missing SPF, weak DMARC policy, etc.).",
      +        "title": "Issues"
      +      },
      +      "spf": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "SPF record string (v=spf1 ...). Null when no SPF is published.",
      +        "title": "Spf"
      +      }
      +    },
      +    "title": "EmailSecurityInfo",
      +    "type": "object"
      +  },
      +  "ErrorDetail": {
      +    "description": "Structured failure body. Codes mirror app/exceptions.AppException\nsubclasses; agent retry / upgrade decisions key off `code`, not `message`.",
      +    "properties": {
      +      "code": {
      +        "description": "Stable machine-readable failure category. Agents key retry/upgrade decisions off this.",
      +        "enum": [
      +          "invalid_argument",
      +          "not_found",
      +          "rate_limit_exceeded",
      +          "auth_required",
      +          "tier_limit",
      +          "upstream_timeout",
      +          "upstream_error",
      +          "internal_error"
      +        ],
      +        "title": "Code",
      +        "type": "string"
      +      },
      +      "docs_url": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Documentation pointer (e.g. tool input contract) when code='invalid_argument'.",
      +        "title": "Docs Url"
      +      },
      +      "message": {
      +        "description": "Human-readable detail. Free text — never parse. Capped at 500 chars to prevent oversized upstream errors from bloating responses.",
      +        "maxLength": 500,
      +        "title": "Message",
      +        "type": "string"
      +      },
      +      "retry_after_seconds": {
      +        "anyOf": [
      +          {
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "When code='rate_limit_exceeded', the minimum seconds to wait before retrying.",
      +        "title": "Retry After Seconds"
      +      },
      +      "upgrade_url": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Pricing/upgrade URL when code='tier_limit' or 'rate_limit_exceeded' on the Free tier.",
      +        "title": "Upgrade Url"
      +      }
      +    },
      +    "required": [
      +      "code",
      +      "message"
      +    ],
      +    "title": "ErrorDetail",
      +    "type": "object"
      +  },
      +  "ErrorResponse": {
      +    "description": "MCP error envelope. Tool return type is always\n`SpecificResponse | ErrorResponse` — Union flag tells the agent which arm\narrived without parsing the inner body.",
      +    "properties": {
      +      "error": {
      +        "$ref": "#/$defs/ErrorDetail"
      +      }
      +    },
      +    "required": [
      +      "error"
      +    ],
      +    "title": "ErrorResponse",
      +    "type": "object"
      +  },
      +  "MxDnsRecord": {
      +    "description": "Single MX record embedded inside DomainReportResponse.dns.mx.",
      +    "properties": {
      +      "host": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "MX hostname (trailing dot stripped).",
      +        "title": "Host"
      +      },
      +      "priority": {
      +        "anyOf": [
      +          {
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "MX preference (lower = higher priority).",
      +        "title": "Priority"
      +      }
      +    },
      +    "title": "MxDnsRecord",
      +    "type": "object"
      +  },
      +  "PivotHint": {
      +    "additionalProperties": true,
      +    "description": "A suggested follow-up MCP tool call. Surfaced inside response.next_calls so\nLLM agents can chain related lookups without manual prompting. Each hint names\nthe tool, the input value to pass, and a short reason explaining why this\npivot adds value in the current context.",
      +    "properties": {
      +      "input": {
      +        "description": "Suggested input value to pass to the tool — typically a CVE ID, CWE ID, domain, or IP. Pre-populated from the current response so the agent can call the next tool without re-deriving the argument.",
      +        "title": "Input",
      +        "type": "string"
      +      },
      +      "params": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": {
      +              "type": "string"
      +            },
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Optional extra kwargs to pass alongside `input`. Used by pivot generators when the next call benefits from a secondary parameter, e.g. {'exclude_id': 'AML.T0051'} to skip the originating technique from a sibling-tactic search. Omitted when no extra args are needed.",
      +        "title": "Params"
      +      },
      +      "reason": {
      +        "description": "Short rationale (one sentence) for why this follow-up call adds value, e.g. 'Federal patch deadline + ransomware association', 'Public exploits / PoC availability'.",
      +        "title": "Reason",
      +        "type": "string"
      +      },
      +      "tool": {
      +        "description": "Canonical MCP tool name to call next. Constrained to known operation_ids in tools/list — adding a new tool here requires expanding the Literal.",
      +        "enum": [
      +          "cve_lookup",
      +          "cve_search",
      +          "cve_leading",
      +          "bulk_cve_lookup",
      +          "exploit_lookup",
      +          "kev_detail",
      +          "cwe_lookup",
      +          "subdomain_enum",
      +          "ssl_check",
      +          "tech_fingerprint",
      +          "asn_lookup",
      +          "ip_lookup",
      +          "ioc_lookup",
      +          "bulk_ioc_lookup",
      +          "hash_lookup",
      +          "threat_intel",
      +          "threat_report",
      +          "audit_domain",
      +          "domain_report",
      +          "dns_lookup",
      +          "whois_lookup",
      +          "wayback_lookup",
      +          "scan_headers",
      +          "check_headers",
      +          "check_secrets",
      +          "check_injection",
      +          "check_dependencies",
      +          "email_mx",
      +          "email_disposable",
      +          "phone_lookup",
      +          "username_lookup",
      +          "password_check",
      +          "phishing_check",
      +          "atlas_technique_lookup",
      +          "atlas_technique_search",
      +          "bulk_atlas_technique_lookup",
      +          "atlas_case_study_lookup",
      +          "atlas_case_study_search",
      +          "d3fend_defense_lookup",
      +          "d3fend_defense_search",
      +          "d3fend_defense_for_attack",
      +          "d3fend_attack_coverage"
      +        ],
      +        "title": "Tool",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "tool",
      +      "input",
      +      "reason"
      +    ],
      +    "title": "PivotHint",
      +    "type": "object"
      +  },
      +  "ReverseDnsInfo": {
      +    "additionalProperties": true,
      +    "properties": {
      +      "ip": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Resolved IPv4 for the domain. Null when DNS fails or IP is private.",
      +        "title": "Ip"
      +      },
      +      "ptr": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "PTR (reverse-DNS) hostname for the IP. Null when no PTR is published.",
      +        "title": "Ptr"
      +      },
      +      "shared_hosting": {
      +        "anyOf": [
      +          {
      +            "type": "boolean"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "True when PTR hostname differs from the queried domain (shared hosting signal). Absent when PTR lookup fails.",
      +        "title": "Shared Hosting"
      +      }
      +    },
      +    "title": "ReverseDnsInfo",
      +    "type": "object"
      +  },
      +  "RiskFactor": {
      +    "properties": {
      +      "detail": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Human-readable justification for the score.",
      +        "title": "Detail"
      +      },
      +      "max": {
      +        "anyOf": [
      +          {
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Maximum possible points for this factor.",
      +        "title": "Max"
      +      },
      +      "name": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Factor label (e.g. 'SSL/TLS', 'Email Security', 'IP Reputation').",
      +        "title": "Name"
      +      },
      +      "score": {
      +        "anyOf": [
      +          {
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Points earned by this factor (can be negative for penalties).",
      +        "title": "Score"
      +      }
      +    },
      +    "title": "RiskFactor",
      +    "type": "object"
      +  },
      +  "RiskInfo": {
      +    "additionalProperties": true,
      +    "properties": {
      +      "factors": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "$ref": "#/$defs/RiskFactor"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Per-factor scoring breakdown (typically 8-9 factors).",
      +        "title": "Factors"
      +      },
      +      "grade": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "A",
      +              "B",
      +              "C",
      +              "D",
      +              "F"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Letter grade derived from score.",
      +        "title": "Grade"
      +      },
      +      "max_score": {
      +        "anyOf": [
      +          {
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Maximum achievable score (100 by default; drops by the corresponding factor's max when an upstream source fails — e.g. crt.sh timeout excludes the CT factor and max_score becomes 90, so grade is computed against the available signals).",
      +        "title": "Max Score"
      +      },
      +      "score": {
      +        "anyOf": [
      +          {
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Cumulative risk score (0-100).",
      +        "title": "Score"
      +      }
      +    },
      +    "title": "RiskInfo",
      +    "type": "object"
      +  },
      +  "ShodanRepInfo": {
      +    "description": "Shodan full API enrichment (Pro tier only). Richer than InternetDB fields at top level.",
      +    "properties": {
      +      "asn": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "ASN string per Shodan (e.g. 'AS13335'); may differ from top-level asn int.",
      +        "title": "Asn"
      +      },
      +      "city": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "City name per Shodan geolocation.",
      +        "title": "City"
      +      },
      +      "country_name": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Country name per Shodan geolocation.",
      +        "title": "Country Name"
      +      },
      +      "hostnames": {
      +        "description": "Hostnames observed pointing to this IP per Shodan.",
      +        "items": {
      +          "type": "string"
      +        },
      +        "title": "Hostnames",
      +        "type": "array"
      +      },
      +      "isp": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "ISP per Shodan (may differ from AbuseIPDB/RIPE).",
      +        "title": "Isp"
      +      },
      +      "last_update": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "ISO 8601 timestamp of Shodan's most recent data point for this IP.",
      +        "title": "Last Update"
      +      },
      +      "org": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Organization name owning the IP per Shodan.",
      +        "title": "Org"
      +      },
      +      "os": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Shodan-detected operating system (fingerprint-based, best-effort).",
      +        "title": "Os"
      +      },
      +      "ports": {
      +        "description": "Open ports observed by Shodan full scan (superset of top-level InternetDB ports).",
      +        "items": {
      +          "type": "integer"
      +        },
      +        "title": "Ports",
      +        "type": "array"
      +      },
      +      "reason": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Human-readable reason. Present when status is skipped/restricted/rate_limited/error/pro_only.",
      +        "title": "Reason"
      +      },
      +      "status": {
      +        "description": "'ok' = data fetched; 'skipped' = API key not configured; 'restricted' = 403 (IP not available on free Shodan tier); 'rate_limited' = 429 quota exceeded; 'error' = transient HTTP/network failure; 'pro_only' = returned on Free tier as upsell hint.",
      +        "enum": [
      +          "ok",
      +          "skipped",
      +          "restricted",
      +          "rate_limited",
      +          "error",
      +          "pro_only"
      +        ],
      +        "title": "Status",
      +        "type": "string"
      +      },
      +      "upgrade_url": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Upgrade link returned when status='pro_only'.",
      +        "title": "Upgrade Url"
      +      },
      +      "vulns": {
      +        "description": "CVE IDs Shodan has associated with banners on this IP.",
      +        "items": {
      +          "type": "string"
      +        },
      +        "title": "Vulns",
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "status"
      +    ],
      +    "title": "ShodanRepInfo",
      +    "type": "object"
      +  },
      +  "SoaInfo": {
      +    "additionalProperties": true,
      +    "description": "SOA record embedded inside DomainDnsInfo.soa.",
      +    "properties": {
      +      "mname": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Primary nameserver (SOA MNAME).",
      +        "title": "Mname"
      +      },
      +      "rname": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Responsible party mailbox (SOA RNAME).",
      +        "title": "Rname"
      +      },
      +      "serial": {
      +        "anyOf": [
      +          {
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Zone serial number.",
      +        "title": "Serial"
      +      }
      +    },
      +    "title": "SoaInfo",
      +    "type": "object"
      +  },
      +  "SslInfoEmbedded": {
      +    "additionalProperties": true,
      +    "description": "SSL subset embedded in the domain report. See top-level SslResponse for live SSL endpoint shape.",
      +    "properties": {
      +      "alpn": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Negotiated ALPN protocol (e.g. 'http/1.1', 'h2').",
      +        "title": "Alpn"
      +      },
      +      "cert_valid": {
      +        "anyOf": [
      +          {
      +            "type": "boolean"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "True only when chain verified AND hostname matches AND not expired. False when cert is readable but fails one or more validation checks (see validation_errors).",
      +        "title": "Cert Valid"
      +      },
      +      "common_name": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Leaf cert Subject CN.",
      +        "title": "Common Name"
      +      },
      +      "days_remaining": {
      +        "anyOf": [
      +          {
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Days until expiry. Negative when already expired.",
      +        "title": "Days Remaining"
      +      },
      +      "error": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Populated only on probe failure (timeout, connection refused, no port 443). Cert validation issues are NOT errors here — see cert_valid + validation_errors instead.",
      +        "title": "Error"
      +      },
      +      "grade": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "A",
      +              "B",
      +              "C",
      +              "D",
      +              "F"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "SSL grade. A/B/C: cert_valid AND TLS modern. D: cert readable but invalid (self-signed, hostname mismatch, untrusted root). F: probe failure, expired, or legacy TLS.",
      +        "title": "Grade"
      +      },
      +      "issuer": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Leaf cert issuer organization name.",
      +        "title": "Issuer"
      +      },
      +      "not_after": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "notAfter (expiry) timestamp (ISO 8601 / UTC).",
      +        "title": "Not After"
      +      },
      +      "not_before": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "notBefore timestamp (ISO 8601 / UTC).",
      +        "title": "Not Before"
      +      },
      +      "san": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Subject Alternative Names.",
      +        "title": "San"
      +      },
      +      "serial_number": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Hex-encoded cert serial number.",
      +        "title": "Serial Number"
      +      },
      +      "tls_version": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Negotiated TLS protocol (e.g. 'TLSv1.3', 'TLSv1.2'). Empty on handshake failure.",
      +        "title": "Tls Version"
      +      },
      +      "validation_errors": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Canonical validation failure tags when cert_valid is False. Values: 'expired', 'self_signed', 'hostname_mismatch', 'untrusted_root', 'chain_incomplete'. Empty/null when cert_valid is True.",
      +        "title": "Validation Errors"
      +      },
      +      "version": {
      +        "anyOf": [
      +          {
      +            "type": "integer"
      +          },
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "X.509 version as returned by the ssl module (int 3 for v3; empty string on some parse paths).",
      +        "title": "Version"
      +      }
      +    },
      +    "title": "SslInfoEmbedded",
      +    "type": "object"
      +  },
      +  "SubdomainsInfo": {
      +    "additionalProperties": true,
      +    "properties": {
      +      "count": {
      +        "anyOf": [
      +          {
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Total subdomains discovered.",
      +        "title": "Count"
      +      },
      +      "found_via_crtsh": {
      +        "anyOf": [
      +          {
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Count discovered via crt.sh CT log query.",
      +        "title": "Found Via Crtsh"
      +      },
      +      "found_via_wordlist": {
      +        "anyOf": [
      +          {
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Count discovered via DNS brute-force wordlist.",
      +        "title": "Found Via Wordlist"
      +      },
      +      "sources": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Sources that produced hits (subset of ['wordlist', 'crt_sh']).",
      +        "title": "Sources"
      +      },
      +      "subdomains": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Sorted unique subdomain list.",
      +        "title": "Subdomains"
      +      },
      +      "summary": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "One-line human-readable summary.",
      +        "title": "Summary"
      +      },
      +      "warnings": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Non-fatal warnings (e.g. 'crt.sh timeout', 'result truncated').",
      +        "title": "Warnings"
      +      }
      +    },
      +    "title": "SubdomainsInfo",
      +    "type": "object"
      +  },
      +  "TechItem": {
      +    "properties": {
      +      "category": {
      +        "title": "Category",
      +        "type": "string"
      +      },
      +      "name": {
      +        "title": "Name",
      +        "type": "string"
      +      },
      +      "source": {
      +        "title": "Source",
      +        "type": "string"
      +      },
      +      "version": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Version"
      +      }
      +    },
      +    "required": [
      +      "name",
      +      "category",
      +      "source"
      +    ],
      +    "title": "TechItem",
      +    "type": "object"
      +  },
      +  "ThreatInfo": {
      +    "additionalProperties": true,
      +    "properties": {
      +      "tags": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Deduped list of tags (up to 20).",
      +        "title": "Tags"
      +      },
      +      "threat_types": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Deduped list of threat classes across all URLs.",
      +        "title": "Threat Types"
      +      },
      +      "url_count": {
      +        "anyOf": [
      +          {
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Total URLs URLhaus has seen for this domain.",
      +        "title": "Url Count"
      +      },
      +      "urlhaus_status": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "clean",
      +              "listed",
      +              "error",
      +              "skipped"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "URLhaus lookup outcome. 'skipped' in lite mode; 'error' on API failure (treat as unavailable, not clean).",
      +        "title": "Urlhaus Status"
      +      },
      +      "urls": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "$ref": "#/$defs/ThreatUrlEntry"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Up to 20 offending URL entries.",
      +        "title": "Urls"
      +      },
      +      "urls_online": {
      +        "anyOf": [
      +          {
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Subset of url_count currently marked online.",
      +        "title": "Urls Online"
      +      }
      +    },
      +    "title": "ThreatInfo",
      +    "type": "object"
      +  },
      +  "ThreatUrlEntry": {
      +    "additionalProperties": true,
      +    "description": "Single offending URL entry inside ThreatInfo.urls.",
      +    "properties": {
      +      "date_added": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "When URLhaus first saw this URL.",
      +        "title": "Date Added"
      +      },
      +      "status": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "URLhaus status for this URL ('online', 'offline').",
      +        "title": "Status"
      +      },
      +      "tags": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Tags assigned by URLhaus (malware family, kit, etc.).",
      +        "title": "Tags"
      +      },
      +      "threat": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Threat class (e.g. 'malware_download', 'phishing').",
      +        "title": "Threat"
      +      },
      +      "url": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Offending URL observed in URLhaus.",
      +        "title": "Url"
      +      }
      +    },
      +    "title": "ThreatUrlEntry",
      +    "type": "object"
      +  },
      +  "Verdict": {
      +    "properties": {
      +      "completeness": {
      +        "default": "complete",
      +        "description": "'complete' = every planned source returned data; 'partial' = at least one source in sources_unavailable failed or was skipped; 'minimal' = only the primary/required source returned, optional enrichment missing.",
      +        "enum": [
      +          "complete",
      +          "partial",
      +          "minimal"
      +        ],
      +        "title": "Completeness",
      +        "type": "string"
      +      },
      +      "data_age_seconds": {
      +        "anyOf": [
      +          {
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Seconds elapsed since the oldest cached source was fetched, or null when every source was queried live for this request. Use to judge freshness.",
      +        "title": "Data Age Seconds"
      +      },
      +      "deterministic": {
      +        "description": "True when the response is fully reproducible from the listed sources for the same input at the same moment (no randomness, no model inference). False for endpoints that include probabilistic scoring or LLM output.",
      +        "title": "Deterministic",
      +        "type": "boolean"
      +      },
      +      "falsifiable_fields": {
      +        "description": "Top-level response fields whose values a caller can independently re-derive from the named upstream sources (e.g. 'dns', 'ssl', 'whois'). Fields not in this list are derived/computed and cannot be directly re-verified.",
      +        "items": {
      +          "type": "string"
      +        },
      +        "title": "Falsifiable Fields",
      +        "type": "array"
      +      },
      +      "sources_queried": {
      +        "description": "Canonical source identifiers successfully consulted for this response (e.g. 'ripe_stat', 'shodan_internetdb', 'firehol'). Agent-readable list, order not significant.",
      +        "items": {
      +          "type": "string"
      +        },
      +        "title": "Sources Queried",
      +        "type": "array"
      +      },
      +      "sources_unavailable": {
      +        "description": "Sources that were expected but not returned — either intentionally skipped (lite mode, tier gating) or failed (quota, timeout, upstream down). Empty list means every planned source produced data.",
      +        "items": {
      +          "type": "string"
      +        },
      +        "title": "Sources Unavailable",
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "deterministic"
      +    ],
      +    "title": "Verdict",
      +    "type": "object"
      +  },
      +  "WafInfo": {
      +    "additionalProperties": true,
      +    "properties": {
      +      "detected": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "WAF product names detected from response headers (e.g. ['Cloudflare', 'AWS CloudFront']).",
      +        "title": "Detected"
      +      },
      +      "waf_present": {
      +        "anyOf": [
      +          {
      +            "type": "boolean"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "True when `detected` is non-empty.",
      +        "title": "Waf Present"
      +      }
      +    },
      +    "title": "WafInfo",
      +    "type": "object"
      +  },
      +  "WhoisInfoEmbedded": {
      +    "additionalProperties": true,
      +    "description": "WHOIS subset embedded in the domain report. Fields are best-effort regex extracts from the raw WHOIS text.",
      +    "properties": {
      +      "creation_date": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Domain creation date (format depends on registrar).",
      +        "title": "Creation Date"
      +      },
      +      "error": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Populated when the WHOIS TCP query failed (e.g. no WHOIS server for TLD, socket timeout).",
      +        "title": "Error"
      +      },
      +      "expiry_date": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Domain expiry date (format depends on registrar).",
      +        "title": "Expiry Date"
      +      },
      +      "name_servers": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Authoritative nameservers per WHOIS.",
      +        "title": "Name Servers"
      +      },
      +      "raw_length": {
      +        "anyOf": [
      +          {
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Byte length of raw WHOIS response (sanity indicator).",
      +        "title": "Raw Length"
      +      },
      +      "registrar": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Registrar name as reported by the WHOIS server.",
      +        "title": "Registrar"
      +      },
      +      "status": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "EPP domain status (e.g. 'clientTransferProhibited'). String or list depending on registrar.",
      +        "title": "Status"
      +      },
      +      "updated_date": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Last-updated timestamp from WHOIS.",
      +        "title": "Updated Date"
      +      }
      +    },
      +    "title": "WhoisInfoEmbedded",
      +    "type": "object"
      +  }
      +}
    • addedOutput schema / properties / result / anyOf
      Added value: +[
      +  {
      +    "$ref": "#/$defs/AuditResponse"
      +  },
      +  {
      +    "$ref": "#/$defs/ErrorResponse"
      +  }
      +]
    • removedOutput schema / properties / result / type
      Removed value: -"string"
  13. Changed1 schema field changed
    • addedInput schema / properties / include_all_txt
      Added value: +{
      +  "default": false,
      +  "description": "Return every TXT record under report.dns.txt (default: False, only SPF/DMARC/DKIM/MTA-STS/TLS-RPT kept). report.dns.total_txt_records is always emitted with the honest pre-filter count. Default filter strips vendor verification strings (google-site-verification, ms=, facebook-domain-verification, etc.) that bloat the response without security signal. Set True only when you need the raw TXT inventory.",
      +  "title": "Include All Txt",
      +  "type": "boolean"
      +}
  14. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context: default TXT filtering to security-relevant entries, the honest pre-filter count, token costs, and the emitted next_calls. This goes beyond the annotations without contradicting 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 dense but well-organized, with a clear front-loaded purpose statement followed by parameter details, usage alternatives, and return structure. While it contains multiple sentences, each provides needed information; minor redundancy ('honest pre-filter count') could be trimmed, but overall it earns its length.

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 description is comprehensive for a tool of this complexity. It covers rate limits (30/hr Free, 500/hr Pro), token cost, response fields, default filtering behavior, and chaining recommendations. Since an output schema exists, the listed return keys are sufficient, and the description addresses operational aspects not in structured fields.

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

Parameters4/5

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

Schema coverage is 100%, so both parameters are well-described. The description adds extra meaning by explaining the include_all_txt default filter behavior, the total_txt_records field, and how the domain parameter relates to the overall audit. This enrichment justifies a score above the baseline of 3.

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 function: 'Perform comprehensive domain audit: combines domain_report + live HTTP security headers + technology fingerprinting.' It distinguishes itself from siblings by explicitly naming domain_report as a passive-only alternative and by mentioning next_calls to subdomain_enum and ssl_check.

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

Usage Guidelines5/5

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

The description provides explicit usage guidance: 'Use when you need the full picture (recon + active checks); use domain_report for passive-only assessment.' It also explains when to pass include_all_txt=true and how to chain next_calls, offering clear context for when to use this tool versus alternatives.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.5/5.0
Disambiguation4/5

Most tools have clearly distinct purposes, with differences between lookup/search/scan/audit for each domain. However, some overlap exists (e.g., email_mx vs email_security_posture, scan_headers vs contrast_scan) which could cause occasional confusion. Overall, boundaries are well-defined.

Naming Consistency5/5

Tool names follow a consistent verb_noun pattern (e.g., cve_lookup, check_headers, bulk_cve_lookup) with all lowercase underscores. Variations like kev_detail or ssl_check are minor and still predictable. No chaotic mixing of conventions.

Tool Count4/5

54 tools is high but justified by the broad cybersecurity scope (CVE, ATLAS, D3FEND, Sigma, domain, email, IOC, scanning). Some redundancy exists (e.g., three email-related tools), but the count is not excessive given the API's comprehensive feature set.

Completeness5/5

The tool set thoroughly covers the threat intelligence and domain investigation lifecycle: CVE/KEV/exploit/CWE, ATLAS/D3FEND/Sigma, DNS/WHOIS/SSL/subdomains, email security, IOC enrichment, and active scanning. No significant gaps are apparent for the stated cybersecurity purpose.