Skip to main content
Glama
Panda Web Security Tools

Panda Web Security Tools

Panda Web Security Tools

Site, email and agent safety: SPF/DKIM/DMARC audits, AI/SEO readiness, website change monitoring, hidden AI instructions scanner.

Focused MCP server (4 tools) from the Panda Federation public-data toolkit. Prefer this over the 23-tool mega-server for better Tool Definition Quality Score (TDQS) / Glama coherence.

Umbrella Apify Store License: MIT

Install / Use

Needs a free Apify API token and uv.

uvx --from panda-federation-tools panda-web-security-tools

Same entry point from this repo:

uvx --from git+https://github.com/pandadad0214/panda-web-security-tools panda-web-security-tools

Cursor / Claude / VS Code: command uvx, args ["--from", "panda-federation-tools", "panda-web-security-tools"], env APIFY_TOKEN.

Related MCP server: intodns-mcp

Tools (4)

  • email_domain_security_checker

  • ai_search_seo_audit

  • website_change_monitor

  • hidden_ai_instructions_scanner

Each tool runs one Apify Actor on your account. Empty runs are not charged per result; every call is capped by run_max_charge_usd. Full schemas and prices: umbrella README.

Sibling domain servers

  • panda-research-tools — Scholarly integrity and papers: citation checks, literature and PubMed search, academic experts, PDF tables.

  • panda-public-funding-tools — US federal money and filings: grants, contracts, SBIR/STTR topics, SEC financials, clinical trials.

  • panda-leads-tools — Public leads and enrichment: NPI providers, podcasts, local businesses, hiring signals, website enrichment, team pages, topic trends, trucking carriers.

Index / compatibility mega-server: panda-federation-tools (use only when you truly need every tool).

TDQS standard

New tools join this domain only while the count stays in the 3–15 band. Descriptions follow the checklist in the umbrella repo. See tdqs-standard / project docs.

Built by Panda Federation. MIT licensed.

Available Tools

4 tools
ai_search_seo_auditAI Search & SEO Audit: GEO, llms.txt & Schema CheckerA
Read-only

Audit web pages for classic SEO and for AI-search readiness (ChatGPT, Perplexity, Claude, Google AI Overviews): titles, meta, schema/FAQ markup, author/date signals, blocked AI crawlers, llms.txt and ranked fixes, with an SEO score and an AI-readiness score per page. Unlike website_change_monitor (diffs pages over time) and hidden_ai_instructions_scanner (finds concealed prompt-injection text), this grades how discoverable and citable a page is. Use when you need an on-page SEO/GEO audit or an llms.txt draft. Do not use for change tracking (use website_change_monitor) or security scanning (use hidden_ai_instructions_scanner or email_domain_security_checker). Parameters: crawlInternalLinks multiplies pages: each URL can add up to that many same-site pages, and every page is billed, so maxPages/run_max_items is the real cost cap. generateLlmsTxt drafts one llms.txt per site lacking it at no extra charge. Pages that block our crawler are returned unbilled. Returns per item: agentSummary, url, seoScore, aiReadinessScore, title, metaDescription, h1, wordCount, schemaTypes, faqSchema, aiSearchBotsBlocked, aiTrainingBotsBlocked, llmsTxt, sitemapFound, canonical, noindex, crawlerBlocked, fixes.

Behavior: read-only; runs the Apify Actor pandadad0214/ai-search-seo-audit (https://apify.com/pandadad0214/ai-search-seo-audit) on your own Apify account. Price: $0.004 per page audited. Runs that find nothing are not charged per result, and spending is capped per call by run_max_charge_usd (default $0.50). run_max_items (default 50) limits items returned and fills maxPages when you leave it unset, so it also limits what is billed; setting maxPages higher can bill more than is returned. Most calls finish in 5-15 s for a few inputs; large inputs or crawls can take minutes, so raise run_timeout_secs (max 300) or shrink the input after a timeout error. Returns JSON {actor, count, items}; long text output is trimmed to whole items, with all items in structuredContent.

NameRequiredDescriptionDefault
urlsNoPage URLs. Pages to audit, one per line. https:// is added if missing (example.com/pricing works). Leave empty for a 2-page demo.
maxPagesNoMaximum pages. You pay per audited page, so this also caps the cost. Whole number, 1 to 2,000; default 50.
run_max_itemsNoOptional. Most results to return from this call (default from PANDA_MAX_ITEMS, 50). Also limits how many results the Actor produces and charges for, unless you set its own max field.
generateLlmsTxtNoDraft an llms.txt for sites without one. On by default: for each site with no /llms.txt, writes a ready-to-edit draft (from the audited pages and homepage links) into the LLMS_TXT_DRAFTS record and the Sites sheet. No extra charge.
run_timeout_secsNoOptional. Seconds to wait for results (default from PANDA_TIMEOUT_SECS, 120; max 300).
crawlInternalLinksNoAlso audit internal pages (per URL). 0 = audit only the URLs above. 1 to 100 = also audit up to this many same-site pages linked from each URL (good for a quick whole-site check from the homepage).
run_max_charge_usdNoOptional. Hard spending cap for this call in USD (default from PANDA_MAX_CHARGE_USD, 0.50).

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only cover read-only/open-world semantics, while the description adds the operationally decisive facts: per-page pricing at $0.004, spending caps via run_max_charge_usd, unbilled crawler-blocked pages, typical 5-15s runtime with a 300s ceiling, and the runtime backend. That is substantial context an agent cannot get from the annotations or schema.

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?

Front-loads purpose, then differentiation, then parameters, then return shape — a sensible order, and nearly every sentence carries information. It is on the long side, and the parameter section partially restates schema text rather than only adding the multiplier/cap interactions.

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?

No output schema exists, yet the description enumerates every returned field plus the JSON envelope, and it covers cost, timeouts, and billing edge cases. An agent has everything needed to invoke it and interpret the result without further probing.

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 the baseline is 3, but the description adds genuinely new semantics: crawlInternalLinks multiplies billed pages, run_max_items fills maxPages when unset, and raising maxPages can bill more than is returned. These interaction effects are not derivable from the individual schema descriptions.

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

Purpose5/5

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

States a specific verb and resource ('Audit web pages for classic SEO and for AI-search readiness') and enumerates the concrete checks (titles, meta, schema/FAQ markup, llms.txt, crawler blocking) so the agent knows exactly what the output grades. It also explicitly distinguishes itself from both siblings by naming what each of them does instead.

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?

Gives an explicit positive trigger ('Use when you need an on-page SEO/GEO audit or an llms.txt draft') and explicit exclusions with named alternatives for change tracking and security scanning. Nothing about routing is left to inference.

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

email_domain_security_checkerSPF, DKIM & DMARC Checker: Bulk Email Domain Security AuditA
Read-only

Audit email authentication for a list of domains: SPF, DKIM (about 40 common selectors), DMARC, MX provider, MTA-STS, TLS-RPT and BIMI, graded A-F with spoofing risk and plain-English fixes. Unlike company_website_enricher (firmographics, tech stack, contacts), this only grades mail security posture from public DNS. Use when you need deliverability or spoofing checks, a security prospect list, or a vendor review. Do not use for website SEO or AI-readiness (use ai_search_seo_audit) or for page-level prompt injection (use hidden_ai_instructions_scanner). Parameters: domains accept bare domains, emails or URLs and are normalized and de-duplicated. DKIM is only confirmed when a selector matches; add dkimSelectors you know are in use, otherwise a missing DKIM may be a false negative. Nonexistent or unresolvable domains are returned with a status and not charged. Returns per item: agentSummary, domain, grade, score (0-100), spoofable, mailProvider, spfRecord, spfAll, spfLookups, dmarcRecord, dmarcPolicy, dmarcReporting, dkimSelectorsFound, mtaSts, tlsRpt, bimi, mxHosts, fixes (prioritized), status.

Behavior: read-only; runs the Apify Actor pandadad0214/email-domain-security-checker (https://apify.com/pandadad0214/email-domain-security-checker) on your own Apify account. Price: $0.002 per domain checked. Runs that find nothing are not charged per result, and spending is capped per call by run_max_charge_usd (default $0.50). run_max_items (default 50) limits items returned and fills maxDomains when you leave it unset, so it also limits what is billed; setting maxDomains higher can bill more than is returned. Most calls finish in 5-15 s for a few inputs; large inputs or crawls can take minutes, so raise run_timeout_secs (max 300) or shrink the input after a timeout error. Returns JSON {actor, count, items}; long text output is trimmed to whole items, with all items in structuredContent.

NameRequiredDescriptionDefault
domainsNoDomains, emails or URLs. One per line: example.com, name@example.com or https://www.example.com/page all work (the domain is extracted, www. removed, duplicates dropped). Leave empty for a 3-domain demo.
maxDomainsNoMaximum domains. You pay per checked domain, so this also caps the cost. Whole number, 1 to 10,000; default 1,000.
dkimSelectorsNoExtra DKIM selectors. Optional. About 40 common selectors (google, selector1, selector2, k1, s1, s2, default…) are always tried. Add your own if you sign with a custom one, e.g. 20230601 or mailo.
run_max_itemsNoOptional. Most results to return from this call (default from PANDA_MAX_ITEMS, 50). Also limits how many results the Actor produces and charges for, unless you set its own max field.
run_timeout_secsNoOptional. Seconds to wait for results (default from PANDA_TIMEOUT_SECS, 120; max 300).
run_max_charge_usdNoOptional. Hard spending cap for this call in USD (default from PANDA_MAX_CHARGE_USD, 0.50).

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare read-only/open-world, but the description adds pricing ($0.002 per domain), the spending cap, timeout behavior and remediation advice (raise run_timeout_secs to 300, or shrink input). It also discloses the non-obvious billing quirk that run_max_items fills maxDomains and therefore limits what is charged, and warns that a missing DKIM result may be a false negative.

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?

Front-loaded with purpose and differentiation before the mechanics, and the return-field list is a compact enumeration rather than prose. It is dense — the behavior paragraph packs pricing, billing interaction, timeouts and output shape into one block — but nearly every sentence carries information an agent needs to call it correctly.

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?

With no output schema, the description compensates by listing the per-item return fields (grade, score, spoofable, spfRecord, dmarcPolicy, fixes, status) and the response envelope {actor, count, items}. Cost, timeout, failure handling for unresolvable domains and the no-charge-for-empty-runs rule are all covered, leaving nothing material an agent would need to guess.

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 already 100%, so most parameter meaning is supplied structurally, but the description still adds value: it ties dkimSelectors to the false-negative risk, explains that domains are normalized and de-duplicated across bare domains/emails/URLs, and spells out the cross-parameter interaction between maxDomains and run_max_items that the schema alone does not convey. The remaining parameters are restated rather than deepened.

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

Purpose5/5

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

States a specific verb and resource (audit email authentication for a list of domains) and enumerates exactly what is checked: SPF, DKIM, DMARC, MX provider, MTA-STS, TLS-RPT and BIMI, graded A-F. It then explicitly separates itself from company_website_enricher, ai_search_seo_audit and hidden_ai_instructions_scanner, so an agent can pick it out of the sibling set without opening a schema.

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?

Gives concrete triggers (deliverability or spoofing checks, a security prospect list, a vendor review) and explicit exclusions that route to named alternatives: SEO/AI-readiness goes to ai_search_seo_audit, page-level prompt injection goes to hidden_ai_instructions_scanner. Both when-to-use and when-not-to-use are covered.

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

hidden_ai_instructions_scannerHidden AI Instructions Scanner: Prompt Injection DetectorA
Read-only

Scan web pages for text hidden from people but read by AI agents (display:none, off-screen, tiny or same-color text, HTML comments, alt/meta/data attributes, zero-width and Unicode tag characters) and classify it as policy notice, manipulation or harmful prompt injection, with location and excerpt. Unlike ai_search_seo_audit (visible SEO and AI-readiness) and website_change_monitor (diffs over time), this is a security check on content an agent is about to read. Use when an agent or workflow will ingest a page and you need to know whether it carries hidden instructions, or when auditing your own site. Do not use for SEO grading (use ai_search_seo_audit) or for email security (use email_domain_security_checker). Parameters: renderJs=true runs a real browser to catch script-injected text (much slower, plus settleSecs per page); off is a fast HTTP read. agentUaDiff adds three fetches per page (GPTBot, ClaudeBot, ChatGPT-User) to detect cloaking. crawlDepth follows same-site links but maxPages always caps the run. Findings are leads for review, not proof of intent. Returns per item: page summaries (type page-summary, url, verdict, findings, categories, topSeverity, techniques, agentSummary) and findings (technique, location, excerpt, category, severity).

Behavior: read-only; runs the Apify Actor pandadad0214/hidden-ai-instructions-scanner (https://apify.com/pandadad0214/hidden-ai-instructions-scanner) on your own Apify account. Price: free (no per-result charge). Runs that find nothing are not charged per result, and spending is capped per call by run_max_charge_usd (default $0.50). run_max_items (default 50) limits items returned and fills maxPages when you leave it unset, so it also limits what is billed; setting maxPages higher can bill more than is returned. Most calls finish in 5-15 s for a few inputs; large inputs or crawls can take minutes, so raise run_timeout_secs (max 300) or shrink the input after a timeout error. Returns JSON {actor, count, items}; long text output is trimmed to whole items, with all items in structuredContent.

NameRequiredDescriptionDefault
urlsYesPage URLs. Pages to scan, one per line. Each URL is scanned once; links are not followed.
maxPagesNoMax pages. Hard cap on pages scanned in one run.
renderJsNoRender JavaScript (browser). Off: fast HTTP fetch, reads inline styles, rules, comments, meta, data-* and other attributes, JSON-LD/script data blocks, iframe srcdoc and Unicode tricks. On: loads each page in headless Chromium, waits for network idle plus the settle time (catches delayed injections), checks the computed style of every element, and walks open shadow roots and same-origin iframes.
crawlDepthNoCrawl depth. 0 = only the URLs you give. 1+ = also follow same-site links that many clicks deep (signed-out pages only). Max pages still caps the run.
settleSecsNoWait after load (render mode). Extra wait after network idle so text injected on a timer is caught.
agentUaDiffNoCheck AI-agent cloaking. Also fetch each page as GPTBot, ClaudeBot and ChatGPT-User and flag AI-addressed text served to those agents but not to a normal browser.
minSeverityNoMinimum severity. Drop findings below this severity. Choices: low = Low (include policy notices); medium = Medium; high = High only.low
timeoutSecsNoPage timeout. Per-page load timeout.
run_max_itemsNoOptional. Most results to return from this call (default from PANDA_MAX_ITEMS, 50). Also limits how many results the Actor produces and charges for, unless you set its own max field.
run_timeout_secsNoOptional. Seconds to wait for results (default from PANDA_TIMEOUT_SECS, 120; max 300).
run_max_charge_usdNoOptional. Hard spending cap for this call in USD (default from PANDA_MAX_CHARGE_USD, 0.50).

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnly/openWorld/non-destructive, and the description goes well beyond them: it names the backing Actor, states pricing (free, no per-result charge, uncapped-find runs not billed), the per-call spend cap, runtime expectations (5-15s typical, minutes for crawls), timeout remediation, and the important epistemic caveat that 'findings are leads for review, not proof of intent.' It also discloses the trimming behavior of long output.

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?

Purpose, differentiation, and exclusions are front-loaded in the first two sentences, and the parameter and pricing notes follow logically. It is dense and long for a single paragraph, with several clause-heavy sentences, but essentially every sentence carries operational information rather than filler.

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

Completeness5/5

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

For an 11-parameter tool with no output schema, the description covers the missing return shape explicitly (page-summary items and finding items with technique, location, excerpt, category, severity). Combined with runtime, cost, and timeout guidance, an agent has everything needed to call it correctly and interpret results.

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

Parameters5/5

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

Schema coverage is 100%, so the baseline would be 3, but the description adds genuine cross-parameter meaning: renderJs=true is 'much slower, plus settleSecs per page,' agentUaDiff 'adds three fetches per page,' crawlDepth is capped by maxPages, and run_max_items 'fills maxPages when you leave it unset, so it also limits what is billed.' That billing/limit interaction is not derivable from the schema alone.

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

Purpose5/5

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

States a specific verb and resource ('Scan web pages for text hidden from people but read by AI agents') and immediately enumerates the detection techniques. It explicitly distinguishes itself from both named siblings (ai_search_seo_audit for visible SEO, website_change_monitor for diffs), so an agent can disambiguate without opening any schema.

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?

Gives explicit when-to-use ('when an agent or workflow will ingest a page and you need to know whether it carries hidden instructions, or when auditing your own site') and explicit when-not-to-use with the alternative named for each ('Do not use for SEO grading... or for email security'). This is the full when/when-not/alternatives pattern.

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

website_change_monitorWebsite Change Monitor: Page Diffs, Price & Keyword AlertsA
Read-only

Check a watch list of web pages against snapshots saved by your previous run and report added and removed text, change percent, price changes and keyword appear/disappear alerts, with an optional webhook when something changes. Unlike ai_search_seo_audit (one-time quality audit) and hidden_ai_instructions_scanner (concealed AI-directed text), this is stateful diffing over time. Use when you need to track competitor pricing, terms, product or careers pages on a schedule. Do not use for a one-off page read or audit (use ai_search_seo_audit), or for pages behind a login. Parameters: the first run per monitorName only saves baselines (status 'baseline saved'); reuse the same monitorName for every later run, and use a new name for a separate watch list. cssSelector, ignorePatterns and ignoreNumbersAndDates cut false alarms from banners, counters and timestamps. Below minChangePercent the old snapshot is kept, so small edits accumulate. onlyReportChanges shrinks output but every page checked is still billed; unreachable pages are free. webhookUrl posts outside the Apify run; only set it if you control that endpoint. Returns per item: agentSummary, url, label, status, changed, changePercent, addedCount, removedCount, addedLines, removedLines, prices, priceChanges, keywordsPresent, keywordsAppeared, keywordsDisappeared, titleBefore, titleAfter, previousCheckAt.

Behavior: read-only; runs the Apify Actor pandadad0214/website-change-monitor (https://apify.com/pandadad0214/website-change-monitor) on your own Apify account. Price: $0.0015 per page checked. Runs that find nothing are not charged per result, and spending is capped per call by run_max_charge_usd (default $0.50). run_max_items (default 50) limits items returned and fills maxPages when you leave it unset, so it also limits what is billed; setting maxPages higher can bill more than is returned. Most calls finish in 5-15 s for a few inputs; large inputs or crawls can take minutes, so raise run_timeout_secs (max 300) or shrink the input after a timeout error. Returns JSON {actor, count, items}; long text output is trimmed to whole items, with all items in structuredContent.

NameRequiredDescriptionDefault
urlsNoPages to watch. One URL per line. Optional label after ' | ' (e.g. https://acme.com/pricing | Acme pricing). Leave empty for a 2-page demo.
maxPagesNoMaximum pages. You pay per page checked, so this also caps the cost.
webhookUrlNoWebhook URL for changes (optional). Optional https URL (Slack/Zapier/Make/n8n webhook). Gets a JSON POST listing changed pages, only when something changed.
cssSelectorNoOnly watch this part (CSS selector). Optional. Compare only the matching elements, e.g. main or #pricing. Ignores headers, footers and banners.
monitorNameNoMonitor name. Snapshots are saved in your account under this name (key-value store panda-change-monitor-). Use different names for separate watch lists; each run compares with the last run of the same name.default
run_max_itemsNoOptional. Most results to return from this call (default from PANDA_MAX_ITEMS, 50). Also limits how many results the Actor produces and charges for, unless you set its own max field.
watchKeywordsNoAlert keywords. Optional. Reports when any of these words appear on or disappear from a page.
ignorePatternsNoIgnore text matching (regex). Optional regular expressions removed before comparing (counters, timestamps, rotating promos).
minChangePercentNoMinimum change to report (%). Changes smaller than this are reported as 'unchanged (below threshold)' and the old snapshot is kept, so small edits add up.
run_timeout_secsNoOptional. Seconds to wait for results (default from PANDA_TIMEOUT_SECS, 120; max 300).
onlyReportChangesNoDataset: changed pages only. Skip unchanged pages in the dataset (handy for alerts and integrations). Every page checked is still billed; failed pages never are.
run_max_charge_usdNoOptional. Hard spending cap for this call in USD (default from PANDA_MAX_CHARGE_USD, 0.50).
ignoreNumbersAndDatesNoIgnore dates and times. Strip dates and clock times before comparing, to avoid noise from 'updated today' widgets.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly/openWorld/non-idempotent, but the description adds substantial context beyond them: the first-run-only-saves-baselines state machine, that the webhook posts outside the Apify run and only when something changed, that unreachable pages are free while unchanged pages are still billed at $0.0015/page, the run_max_charge_usd cap, and the 5-15 s / 300 s timeout envelope. It even reconciles with annotations by asserting 'read-only' while disclosing the persistent key-value snapshot store.

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 critical framing (what it is, what it is not, when to use) is front-loaded in the first three sentences, and the return-field list and billing paragraphs are placed after the decision-relevant content. It is long and some parameter prose duplicates the schema verbatim, but for a 13-parameter stateful tool with non-obvious cost semantics the density is largely earned.

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?

Despite having no output schema, the description enumerates the returned fields (agentSummary, status, addedLines, priceChanges, keywordsAppeared, titleBefore/After, previousCheckAt) and the envelope shape {actor, count, items}. It also covers cost model, spend cap, timeout remediation, and webhook side effects, leaving no material gap for calling the tool correctly.

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 the schema baseline is 3; the description goes further by explaining cross-parameter interactions the schema only states locally, notably that the first run per monitorName only saves a baseline and must be reused for later runs, and that run_max_items fills maxPages when left unset and therefore also bounds billing. It restates some parameters (webhookUrl, onlyReportChanges, ignorePatterns) that the schema already documents well, so it stops short of a 5.

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

Purpose5/5

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

States a specific verb and resource ('Check a watch list of web pages against snapshots saved by your previous run') and enumerates the concrete outputs: added/removed text, change percent, price changes, keyword alerts. It explicitly names the two sibling tools it is not (ai_search_seo_audit, hidden_ai_instructions_scanner) and characterizes itself as 'stateful diffing over time', so an agent can discriminate without opening any schema.

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?

Gives explicit when-to-use ('track competitor pricing, terms, product or careers pages on a schedule') and explicit when-not ('Do not use for a one-off page read or audit (use ai_search_seo_audit), or for pages behind a login'), naming the alternative to select instead. Exclusions cover both the wrong task shape and an unsupported page class.

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

Tool Schema Changelog

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

  1. 4 tool updatesv0.1.0
    • First observedai_search_seo_audit
    • First observedemail_domain_security_checker
    • First observedhidden_ai_instructions_scanner
    • First observedwebsite_change_monitor

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Email-deliverability tools for AI agents — 12 MCP tools across email verification, DNSBL across 50 zones, SPF/DKIM/DMARC analysis, spam-trap scoring, domain intelligence, and email finder. Free tier with no credit card.
    12
    39 npm
    1
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    MCP server for IntoDNS.ai providing 36 free tools for DNS, DMARC, SPF, DKIM, BIMI, DNSSEC, MTA-STS, FCrDNS, blacklist and email security checks. Citation-grade report snapshots with content hashes. No API key required.
    45
    300 npm
    2
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides live infrastructure monitoring for AI agents, including domain health checks, MCP server security posture, email blacklists, broken-link scans, and cloud vendor status. No signup or API key needed for public tools.
    MIT