crewAIInc / crewAIInc/crewAI

[FEATURE] DNS Doctor tools: domain scan, DMARC upgrade, propagation check

Open
#7,300 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

vendor-pitch
Dominant language
Python
Stars
58.8k
Forks
8.5k
Avg merge
1d 15h
Merged PRs (30d)
109

Description

Feature Area

Integration with external tools

Is your feature request related to a an existing bug? Please link it here.

NA

Describe the solution you'd like

Add tools over the hosted DNS Doctor API to lib/crewai-tools, so a crew can check and fix a domain's DNS and email authentication without a model guessing at records:

  • DnsDoctorScanTool: the full report for a domain (SPF, DKIM, DMARC, MX, DNS health, blacklists, domain and TLS expiry) with deterministic per-check verdicts and copy-paste fix records produced by a validating engine.
  • DnsDoctorDmarcUpgradeTool: the next safe DMARC record for a domain, alignment-gated, with the rationale (the record can be null; then the rationale is the answer).
  • DnsDoctorPropagationTool: whether a DNS change has propagated, read from six locations on four continents.

No API key is needed; an optional DNSDOCTOR_API_TOKEN raises the rate limit. The tools use the existing requests dependency, relay responses verbatim as JSON text, and return transport failures (rate limit, 5xx, network) as text that says they are not a verdict about the domain, so an agent never reads an outage as a finding.

Describe alternatives you've considered

Wrapping the API in a custom tool inside each crew. That works, but every crew re-implements the same failure handling and loses the safety wording (verbatim records, transient is not a verdict) that keeps agents from inventing DNS records.

Additional context

Implementation is ready: tool folder with README, pydantic args_schema with an enum for record types, env_vars declared, exports in both __init__ files, the three generated tool.specs.json entries, and network-mocked tests (uv run --package crewai-tools pytest lib/crewai-tools/tests/tools/dns_doctor_tool_test.py, 6 passed; pre-commit clean). Authored with an AI coding assistant working from the contributing guide; please apply the llm-generated label if the reporter cannot.

Willingness to Contribute

Yes, I'd be happy to submit a pull request

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in lib/crewai-tools and run the named network-mocked test at lib/crewai-tools/tests/tools/dns_doctor_tool_test.py to understand the expected behavior. Done means the three DNS Doctor tools, README, schemas, environment declaration, exports, tool.specs.json entries, and transport-failure wording are covered by the tests and pre-commit remains clean.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
api, tooling
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.