{
  "name": "FastTool Tool Action Catalog",
  "canonical_url": "https://fasttool.app/tool-actions.json",
  "well_known_pointer": "https://fasttool.app/.well-known/tool-actions.json",
  "updated": "2026-06-18",
  "purpose": "Execution-grade metadata for reviewed FastTool tools: inputs, outputs, sample fixtures, acceptance checks, privacy limits, DOM hints, and agent handoff rules.",
  "default_start": "https://fasttool.app/answer-engine/",
  "tool_count": 125,
  "action_contracts": [
    {
      "schema_version": "2026-06-17",
      "tool_slug": "age-calculator",
      "name": "Age Calculator",
      "canonical_url": "https://fasttool.app/tools/age-calculator/",
      "category": "Lifestyle",
      "summary": "Calculate your exact age in years, months, days, total weeks, hours, and minutes. See your zodiac sign, Chinese zodiac, generation label, birthday weekday, and countdown to your next birthday.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Birth date: 1990-06-15. Reference date: 2026-06-13.",
      "expected_output": "Age should be about 35 years, 11 months, and 29 days, with the next birthday countdown visible.",
      "acceptance_checks": [
        "Checks age from a fixed reference date before using a real birthday.",
        "Shows years, months, days, and next-birthday context so the result can be sanity-checked.",
        "Keeps the calculation simple enough to verify manually."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for legal age verification, identity checks, immigration, insurance, or medical age-risk decisions.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "loan payment calculator",
        "mortgage payment estimate",
        "compare loan scenarios",
        "monthly payment calculator",
        "unit converter",
        "percentage calculator",
        "scientific calculator",
        "age calculator",
        "convert units for recipe",
        "workshop unit converter",
        "celsius fahrenheit inches cm",
        "convert measurement quickly",
        "basic bmi estimate",
        "calculate age and bmi"
      ],
      "primary_finish_routes": [
        {
          "title": "Compare Loan and Mortgage Payment Scenarios",
          "url": "https://fasttool.app/finish/compare-loan-and-mortgage-payment-scenarios/",
          "run_sheet_url": "https://fasttool.app/finish/compare-loan-and-mortgage-payment-scenarios/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/tool-finder/",
      "category_hub_url": "https://fasttool.app/fast-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/age-calculator/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/percentage-calculator/",
        "https://fasttool.app/tools/scientific-calculator/",
        "https://fasttool.app/tasks/run-quick-calculation/",
        "https://fasttool.app/tools/aspect-ratio-calculator/",
        "https://fasttool.app/tasks/convert-units-for-recipe-or-workshop/",
        "https://fasttool.app/tools/unit-converter/",
        "https://fasttool.app/tasks/check-bmi-age-basic-health-estimate/"
      ],
      "quality_badge": "Popular"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "agent-output-evaluator",
      "name": "Agent Output Evaluator",
      "canonical_url": "https://fasttool.app/tools/agent-output-evaluator/",
      "category": "Productivity",
      "summary": "Evaluate whether an AI agent result is actually done by parsing claimed work, evidence, acceptance tests, stop rules, residual risks, and remediation steps into a PASS, REVIEW, or FAIL verdict.",
      "reviewed": true,
      "reviewed_at": "2026-06-18",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "markdown_report",
        "json_verdict",
        "remediation_prompt"
      ],
      "sample_input": "Task: fix PageSpeed issues. Final answer: all fixed. Evidence: Lighthouse mobile 98, desktop 100, deployed URL, remaining Cloudflare warning. Acceptance tests: mobile performance above 95, accessibility 100, no syntax errors.",
      "expected_output": "The evaluator should parse claims, classify each acceptance test as pass, review, or unknown, flag possible stop-rule issues, return PASS, REVIEW, or FAIL with score, and export both a Markdown report and JSON verdict.",
      "acceptance_checks": [
        "Builds a claim ledger from the final answer instead of trusting broad completion language.",
        "Maps every acceptance test to pass, review, or unknown using pasted answer and evidence.",
        "Flags stop-rule issues and overbroad claims, then returns a remediation prompt plus copyable Markdown and JSON exports."
      ],
      "privacy_boundary": "Use public, low-risk rows or sample content first. The tool runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for legal audit certification, regulated compliance sign-off, security approval, medical or financial decisions, or verifying files and accounts it cannot inspect.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "agent output evaluator",
        "verify ai agent work",
        "ai agent final answer checker",
        "acceptance test evaluator",
        "agent proof checker",
        "is this ai work done",
        "agent remediation prompt",
        "ai agent tools",
        "agent ready page",
        "browser agent page audit",
        "ai crawler policy",
        "chatgpt search visibility",
        "answer engine visibility",
        "ai overview visibility"
      ],
      "primary_finish_routes": [
        {
          "title": "Verify AI Agent Work Before Accepting It",
          "url": "https://fasttool.app/finish/verify-ai-agent-work-before-accepting/",
          "run_sheet_url": "https://fasttool.app/finish/verify-ai-agent-work-before-accepting/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/prompt-rag-quality-kit/",
      "category_hub_url": "https://fasttool.app/fast-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/agent-output-evaluator/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/agent-task-contract-studio/",
        "https://fasttool.app/proof-pack-builder/",
        "https://fasttool.app/output-contract-studio/",
        "https://fasttool.app/live-quality-lab/",
        "https://fasttool.app/tools/ai-traffic-source-classifier/",
        "https://fasttool.app/tools/ai-agent-page-auditor/",
        "https://fasttool.app/tools/ai-crawler-policy-builder/",
        "https://fasttool.app/tools/query-fanout-simulator/"
      ],
      "quality_badge": "New",
      "evaluation_fields": [
        "claims",
        "evidence",
        "acceptance_tests",
        "stop_rules",
        "unsupported_claims",
        "residual_risks",
        "remediation_prompt"
      ],
      "verdicts": [
        "PASS",
        "REVIEW",
        "FAIL"
      ]
    },
    {
      "schema_version": "2026-06-18",
      "tool_slug": "agent-task-contract-studio",
      "name": "Agent Task Contract Studio",
      "canonical_url": "https://fasttool.app/tools/agent-task-contract-studio/",
      "category": "Productivity",
      "summary": "Build an AI-agent mission contract with objective, context, inputs, permissions, autonomy, risk score, acceptance tests, stop rules, evidence requirements, JSON receipt, and next-tool handoff.",
      "reviewed": true,
      "reviewed_at": "2026-06-18",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "json_receipt"
      ],
      "sample_input": "Goal: inspect a public website and ship product-quality fixes. Constraints: preserve canonical URLs, verify in a browser, do not change account settings.",
      "expected_output": "The studio should output a copyable agent handoff packet plus a JSON receipt with risk score, acceptance tests, stop conditions, evidence requirements, and a Context Window Budgeter next step.",
      "acceptance_checks": [
        "Makes agent work testable before execution starts.",
        "Separates objective, context, permissions, autonomy, risk, and stop conditions.",
        "Creates both human-readable handoff text and machine-readable JSON receipt."
      ],
      "privacy_boundary": "Use public drafts, low-risk sample text, or non-sensitive operational data first. The tool runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for autonomous high-risk actions, bypassing account permissions, hidden monitoring, legal instructions, or medical and financial decisions.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the exact sample or user input used, report the visible result, copy or summarize the JSON receipt, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "agent workflow proof passport",
        "prompt rag quality runbook",
        "ai agent workflow receipt",
        "prompt injection gate",
        "json schema from llm output",
        "context window budget",
        "embedding duplicate chunks",
        "agent mission contract",
        "ai agent task contract",
        "copyable agent handoff",
        "agent acceptance tests",
        "agent stop rules",
        "ai agent evidence checklist",
        "agent output evaluator",
        "verify ai agent work",
        "ai agent final answer checker",
        "acceptance test evaluator",
        "agent proof checker",
        "is this ai work done",
        "agent remediation prompt",
        "ai agent tools",
        "agent ready page",
        "browser agent page audit",
        "ai crawler policy",
        "chatgpt search visibility",
        "answer engine visibility",
        "ai overview visibility"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/kits/prompt-rag-quality-kit/",
      "category_hub_url": "https://fasttool.app/ai-agent-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/agent-task-contract-studio/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/kits/prompt-rag-quality-kit/",
        "https://fasttool.app/kits/prompt-rag-quality-kit/#workflow-console",
        "https://fasttool.app/tools/agent-task-contract-studio/",
        "https://fasttool.app/tools/context-window-budgeter/",
        "https://fasttool.app/tools/prompt-injection-scanner/",
        "https://fasttool.app/tools/rag-chunk-quality-scorer/",
        "https://fasttool.app/tools/embedding-similarity-explorer/",
        "https://fasttool.app/tools/llm-output-schema-extractor/",
        "https://fasttool.app/tools/ai-hallucination-likelihood-scorer/",
        "https://fasttool.app/tools/agent-output-evaluator/",
        "https://fasttool.app/proof-pack-builder/",
        "https://fasttool.app/output-contract-studio/",
        "https://fasttool.app/live-quality-lab/",
        "https://fasttool.app/tools/ai-traffic-source-classifier/",
        "https://fasttool.app/tools/ai-agent-page-auditor/",
        "https://fasttool.app/tools/ai-crawler-policy-builder/"
      ],
      "quality_badge": "New"
    },
    {
      "schema_version": "2026-06-18",
      "tool_slug": "ai-agent-discovery-passport",
      "name": "AI Agent Discovery Passport Studio",
      "canonical_url": "https://fasttool.app/tools/ai-agent-discovery-passport/",
      "category": "AI",
      "summary": "Generate and audit an AI-agent discovery passport: robots policy, llms.txt block, agents.json route card, ai-site JSON, action-contract stub, schema checklist, and launch receipt.",
      "reviewed": true,
      "reviewed_at": "2026-06-18",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "paste",
        "sample"
      ],
      "output_modes": [
        "robots_policy",
        "llms_block",
        "agents_json",
        "ai_site_json",
        "action_contract_stub",
        "json_handoff"
      ],
      "sample_input": "Site: https://example.com\nBrand: ExampleTools\nPrimary tool: Upload Checker\nPrimary URL: https://example.com/tools/upload-checker/\nInput: local file metadata\nOutput: upload readiness receipt\nBoundary: no malware scanning or legal compliance",
      "expected_output": "The studio should generate discovery files and an audit receipt: robots policy, llms.txt block, agents.json route card, ai-site JSON, action-contract stub, schema checklist, and launch blockers.",
      "acceptance_checks": [
        "Turns a site/tool brief into copyable AI-agent discovery files instead of only scoring the page.",
        "Audits crawl and index conflicts such as missing canonical URLs, missing llms.txt, and preview-domain leaks.",
        "Outputs a passport receipt with generated file snippets, launch blockers, next fixes, and agent handoff metadata."
      ],
      "privacy_boundary": "Use public, low-risk files or redacted rows first. Processing runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for guaranteed rankings, crawler access promises, legal SEO advice, or replacing Search Console and server logs.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench select",
          "#toolWorkbench canvas"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output",
          "canvas"
        ],
        "completion_signal": "Report the visible output, copy or summarize the proof receipt, and compare the result with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the exact sample or user input used, report the visible output, copy or summarize the proof receipt, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "ai agent discovery passport",
        "llms txt generator",
        "agents json generator",
        "ai-site json generator",
        "tool actions json stub",
        "ai agent site audit"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/kits/ai-era-proof-lab/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/ai-agent-discovery-passport/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/kits/ai-era-proof-lab/",
        "https://fasttool.app/tools/media-upload-doctor/",
        "https://fasttool.app/tools/audio-loudness-loop-inspector/"
      ],
      "quality_badge": "AI Proof",
      "receipt_schema": "ai-era-proof-receipt/v1"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "ai-agent-page-auditor",
      "name": "AI Agent Page Auditor",
      "canonical_url": "https://fasttool.app/tools/ai-agent-page-auditor/",
      "category": "SEO",
      "summary": "Audit whether a web page is easy for browser agents, ChatGPT Search, Perplexity, Copilot, and answer engines to understand, cite, and route.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "report"
      ],
      "sample_input": "Task: choose the best PDF compressor. Paste a page title, visible copy, buttons, form labels, headings, and sample output.",
      "expected_output": "The report should score direct answer clarity, agent action path, accessibility labels, trust boundaries, proof blocks, and machine-readable routes.",
      "acceptance_checks": [
        "Checks visible page structure instead of promising rankings.",
        "Separates human usefulness from agent-readability.",
        "Produces a copyable fix list for DOM text, labels, proof, schema, and route metadata."
      ],
      "privacy_boundary": "Use public drafts, low-risk sample text, or non-sensitive operational data first. The tool runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for guaranteed Google ranking, live crawl logs, security certification, or proving how a private AI system will rank a page.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "is my website traffic bots",
        "human vs bot traffic checker",
        "why is gsc lower than analytics",
        "direct traffic explanation",
        "ai crawler traffic",
        "chatgpt user agent traffic",
        "oai searchbot logs",
        "perplexitybot traffic",
        "ai agent tools",
        "agent ready page",
        "browser agent page audit",
        "ai crawler policy",
        "chatgpt search visibility",
        "answer engine visibility"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/kits/google-publishing-preflight-kit/",
      "category_hub_url": "https://fasttool.app/ai-agent-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/ai-agent-page-auditor/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/ai-crawler-policy-builder/",
        "https://fasttool.app/ai-agent-tools/",
        "https://fasttool.app/agent-routes.json",
        "https://fasttool.app/tools/ai-traffic-source-classifier/",
        "https://fasttool.app/tools/agent-output-evaluator/",
        "https://fasttool.app/tools/query-fanout-simulator/",
        "https://fasttool.app/tools/ai-citation-readiness-checker/",
        "https://fasttool.app/tools/aio-visibility-scorer/"
      ],
      "quality_badge": "New"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "ai-citation-readiness-checker",
      "name": "AI Citation Readiness Checker",
      "canonical_url": "https://fasttool.app/tools/ai-citation-readiness-checker/",
      "category": "SEO",
      "summary": "Check whether a page gives AI answer engines enough clear, sourceable, non-commodity information to quote or cite responsibly.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "report"
      ],
      "sample_input": "Question: how do I allow AI search bots but block AI training bots? Paste the visible draft page and source notes.",
      "expected_output": "The checker should score answerability, sourceability, originality, entity clarity, limitations, dates, and copyable citation-ready passages.",
      "acceptance_checks": [
        "Looks for quotable answer blocks and visible evidence.",
        "Penalizes vague commodity copy and unsupported claims.",
        "Outputs exact passages to improve rather than vague SEO advice."
      ],
      "privacy_boundary": "Use public drafts, low-risk sample text, or non-sensitive operational data first. The tool runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for guaranteed chatbot citations, legal compliance, journalism fact checking, or publishing regulated advice without expert review.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "ai agent tools",
        "agent ready page",
        "browser agent page audit",
        "ai crawler policy",
        "chatgpt search visibility",
        "answer engine visibility",
        "ai overview visibility",
        "llm ready content",
        "prompt injection scanner",
        "rag chunk quality"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/kits/ai-traffic-reality-kit/",
      "category_hub_url": "https://fasttool.app/ai-agent-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/ai-citation-readiness-checker/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/ai-traffic-source-classifier/",
        "https://fasttool.app/tools/agent-output-evaluator/",
        "https://fasttool.app/tools/ai-agent-page-auditor/",
        "https://fasttool.app/tools/ai-crawler-policy-builder/",
        "https://fasttool.app/tools/query-fanout-simulator/",
        "https://fasttool.app/tools/aio-visibility-scorer/",
        "https://fasttool.app/tools/llm-ready-content-scorer/",
        "https://fasttool.app/tools/eeat-audit-scorecard/"
      ],
      "quality_badge": "New"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "ai-crawler-policy-builder",
      "name": "AI Crawler Policy Builder",
      "canonical_url": "https://fasttool.app/tools/ai-crawler-policy-builder/",
      "category": "SEO",
      "summary": "Build a practical robots.txt policy for AI search bots, user-triggered agents, training crawlers, and answer-engine visibility without blocking the wrong crawler.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Goal: allow AI search visibility but block training reuse. Site sections: /tools/, /private/, /api/.",
      "expected_output": "The builder should output robots.txt rules, allowed bots, blocked bots, Cloudflare policy notes, and a human-readable decision memo.",
      "acceptance_checks": [
        "Distinguishes AI search crawlers, training crawlers, and user-triggered agents.",
        "Warns when a blanket AI block can reduce answer-engine visibility.",
        "Keeps robots.txt advice explicit and copyable."
      ],
      "privacy_boundary": "Use public drafts, low-risk sample text, or non-sensitive operational data first. The tool runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for legal advice, pay-per-crawl negotiation, bot authentication, WAF enforcement, or guarantees that every crawler obeys robots.txt.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "is my website traffic bots",
        "human vs bot traffic checker",
        "why is gsc lower than analytics",
        "direct traffic explanation",
        "ai crawler traffic",
        "chatgpt user agent traffic",
        "oai searchbot logs",
        "perplexitybot traffic",
        "ai agent tools",
        "agent ready page",
        "browser agent page audit",
        "ai crawler policy",
        "chatgpt search visibility",
        "answer engine visibility"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/kits/ai-traffic-reality-kit/",
      "category_hub_url": "https://fasttool.app/ai-agent-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/ai-crawler-policy-builder/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/ai-agent-page-auditor/",
        "https://fasttool.app/ai-agent-tools/",
        "https://fasttool.app/agent-routes.json",
        "https://fasttool.app/tools/ai-traffic-source-classifier/",
        "https://fasttool.app/tools/agent-output-evaluator/",
        "https://fasttool.app/tools/query-fanout-simulator/",
        "https://fasttool.app/tools/ai-citation-readiness-checker/",
        "https://fasttool.app/tools/aio-visibility-scorer/"
      ],
      "quality_badge": "New"
    },
    {
      "schema_version": "2026-06-18",
      "tool_slug": "ai-hallucination-likelihood-scorer",
      "name": "AI Hallucination Likelihood Scorer",
      "canonical_url": "https://fasttool.app/tools/ai-hallucination-likelihood-scorer/",
      "category": "Developer",
      "summary": "Audit an AI answer before publishing with claim-by-claim risk scoring, source coverage, unsupported claim queue, verification checklist, publish gate, JSON receipt, and output-evaluator handoff.",
      "reviewed": true,
      "reviewed_at": "2026-06-18",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "json_receipt"
      ],
      "sample_input": "Prompt: summarize a product launch. Answer: includes dates, named people, prices, approvals, quotes, and no source snippets.",
      "expected_output": "The report should show a 0-100 risk score, publish gate, claim ledger, unsupported claim queue, source coverage, verification checklist, and machine-readable audit receipt.",
      "acceptance_checks": [
        "Separates unsupported specificity from normal uncertainty.",
        "Builds a claim ledger for dates, numbers, entities, quotes, approvals, and superlatives.",
        "Keeps the output advisory and never claims to prove truth or falsehood by itself."
      ],
      "privacy_boundary": "Use public drafts or low-risk sample text first. The tool runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for legal fact checking, medical review, financial due diligence, plagiarism judgment, or proving whether an answer is true.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the exact sample or user input used, report the visible result, copy or summarize the JSON receipt, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "agent workflow proof passport",
        "prompt rag quality runbook",
        "ai agent workflow receipt",
        "prompt injection gate",
        "json schema from llm output",
        "context window budget",
        "embedding duplicate chunks",
        "ai claim verification queue",
        "hallucination claim ledger",
        "ai output publish gate",
        "unsupported ai claims",
        "llm answer fact check checklist",
        "ai agent tools",
        "agent ready page",
        "browser agent page audit",
        "ai crawler policy",
        "chatgpt search visibility",
        "answer engine visibility",
        "ai overview visibility",
        "llm ready content",
        "prompt injection scanner",
        "rag chunk quality",
        "prepare rag chunks",
        "rag quality checker",
        "llm output schema extractor",
        "embedding similarity checker"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/kits/prompt-rag-quality-kit/",
      "category_hub_url": "https://fasttool.app/ai-agent-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/ai-hallucination-likelihood-scorer/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/kits/prompt-rag-quality-kit/",
        "https://fasttool.app/kits/prompt-rag-quality-kit/#workflow-console",
        "https://fasttool.app/tools/agent-task-contract-studio/",
        "https://fasttool.app/tools/context-window-budgeter/",
        "https://fasttool.app/tools/prompt-injection-scanner/",
        "https://fasttool.app/tools/rag-chunk-quality-scorer/",
        "https://fasttool.app/tools/embedding-similarity-explorer/",
        "https://fasttool.app/tools/llm-output-schema-extractor/",
        "https://fasttool.app/tools/ai-hallucination-likelihood-scorer/",
        "https://fasttool.app/tools/agent-output-evaluator/",
        "https://fasttool.app/tools/ai-citation-readiness-checker/",
        "https://fasttool.app/tools/ai-traffic-source-classifier/",
        "https://fasttool.app/tools/ai-agent-page-auditor/",
        "https://fasttool.app/tools/ai-crawler-policy-builder/",
        "https://fasttool.app/tools/query-fanout-simulator/",
        "https://fasttool.app/tools/aio-visibility-scorer/"
      ],
      "quality_badge": "New"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "aio-visibility-scorer",
      "name": "AI Overview Visibility Scorer",
      "canonical_url": "https://fasttool.app/tools/aio-visibility-scorer/",
      "category": "SEO",
      "summary": "Score whether a page is likely to be useful for AI Overview style answers. Check answer clarity, entity coverage, structure, sourceability, and freshness.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "report"
      ],
      "sample_input": "Query: best browser PDF compressor. Paste a draft page with title, headings, FAQ, update date, citations, and clear steps.",
      "expected_output": "The score should separate answer clarity, entity coverage, structure, sourceability, and freshness, then list the highest-impact fixes.",
      "acceptance_checks": [
        "Runs a deterministic browser-side heuristic instead of claiming live SERP access.",
        "Separates page quality signals from ranking guarantees.",
        "Produces copyable recommendations that can be checked against the visible page."
      ],
      "privacy_boundary": "Use public drafts or low-risk sample text first. The tool runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for guaranteed AI Overview ranking, live Search Console reporting, legal SEO guarantees, or scraping private search results.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "ai agent tools",
        "agent ready page",
        "browser agent page audit",
        "ai crawler policy",
        "chatgpt search visibility",
        "answer engine visibility",
        "ai overview visibility",
        "llm ready content",
        "prompt injection scanner",
        "rag chunk quality"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/kits/ai-traffic-reality-kit/",
      "category_hub_url": "https://fasttool.app/ai-agent-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/aio-visibility-scorer/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/ai-traffic-source-classifier/",
        "https://fasttool.app/tools/agent-output-evaluator/",
        "https://fasttool.app/tools/ai-agent-page-auditor/",
        "https://fasttool.app/tools/ai-crawler-policy-builder/",
        "https://fasttool.app/tools/query-fanout-simulator/",
        "https://fasttool.app/tools/ai-citation-readiness-checker/",
        "https://fasttool.app/tools/llm-ready-content-scorer/",
        "https://fasttool.app/tools/eeat-audit-scorecard/"
      ],
      "quality_badge": "New"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "ai-text-summarizer",
      "name": "AI Text Summarizer",
      "canonical_url": "https://fasttool.app/tools/ai-text-summarizer/",
      "category": "Writing",
      "summary": "AI-powered text summarizer — condense long text into key sentences using smart extractive summarization.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "A 450 word meeting note with three decisions, two risks, and one owner per action item.",
      "expected_output": "Summary should preserve the decisions, risks, and owners without inventing new facts.",
      "acceptance_checks": [
        "Reviewed as an extractive productivity aid, not a factual authority.",
        "Best result comes from pasting structured notes with clear headings.",
        "Output should be compared with the original before forwarding."
      ],
      "privacy_boundary": "Use public or low-risk text first. Do not paste secrets or regulated records into a browser tool unless your own privacy review allows it.",
      "not_for": "Not for confidential contracts, medical records, legal advice, or any summary where hallucinated wording would create risk.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "summarize long notes into actions",
        "turn notes into action list",
        "meeting notes summarizer",
        "shorten notes clearly",
        "count words and characters",
        "check readability",
        "summarize notes",
        "markdown to html",
        "convert text case",
        "extract text from pdf for notes",
        "pdf text to summary",
        "copy pdf text cleanly",
        "summarize pdf notes",
        "plan pomodoro writing session"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/tool-finder/",
      "category_hub_url": "https://fasttool.app/ai-agent-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/ai-text-summarizer/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/readability-checker/",
        "https://fasttool.app/tools/markdown-to-html/",
        "https://fasttool.app/tools/case-converter/",
        "https://fasttool.app/tasks/check-copy-before-publishing/",
        "https://fasttool.app/tools/word-character-counter/",
        "https://fasttool.app/tasks/extract-text-from-pdf-for-notes/",
        "https://fasttool.app/tasks/summarize-long-notes-into-actions/",
        "https://fasttool.app/tasks/plan-pomodoro-writing-session/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "ai-traffic-source-classifier",
      "name": "AI Traffic Source Classifier",
      "canonical_url": "https://fasttool.app/tools/ai-traffic-source-classifier/",
      "category": "SEO",
      "summary": "Reconcile Cloudflare, GA4, Search Console, and raw log rows to separate likely human visits, direct or unknown browser traffic, AI crawlers, user-triggered AI agents, classic crawlers, training bots, suspicious automation, and Search Console evidence.",
      "reviewed": true,
      "reviewed_at": "2026-06-18",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "traffic_truth_report",
        "decision_memo"
      ],
      "sample_input": "Mozilla/5.0 Chrome referrer: direct\nOAI-SearchBot /tools/json-formatter/\nGooglebot /sitemap.xml\nPerplexityBot /ai-agent-tools/\nMozilla/5.0 Chrome referrer: https://www.google.com/",
      "expected_output": "The report should reconcile Cloudflare or server rows, GA4 engagement rows, Search Console clicks and impressions, and raw log user agents into clear traffic buckets, then output a copyable traffic truth decision memo.",
      "acceptance_checks": [
        "Loads Cloudflare, GA4, Search Console, raw-log, and mixed redacted presets without requiring an account.",
        "Separates direct or unknown browser rows from confirmed likely-human engagement instead of treating direct traffic as proof.",
        "Produces source reconciliation confidence, bucket counts, sample classifications, next checks, and a copyable decision memo without claiming legal forensics."
      ],
      "privacy_boundary": "Use public, low-risk rows or sample content first. The tool runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for legal bot forensics, fraud proof, ad-billing disputes, security enforcement, or replacing raw Cloudflare, server, and analytics logs.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "is my website traffic bots",
        "human vs bot traffic checker",
        "why is gsc lower than analytics",
        "direct traffic explanation",
        "ai crawler traffic",
        "chatgpt user agent traffic",
        "oai searchbot logs",
        "perplexitybot traffic",
        "ai agent tools",
        "agent ready page",
        "browser agent page audit",
        "ai crawler policy",
        "chatgpt search visibility",
        "answer engine visibility"
      ],
      "primary_finish_routes": [
        {
          "title": "Check AI Bot Traffic Before SEO Decisions",
          "url": "https://fasttool.app/finish/check-ai-bot-traffic-before-seo-decisions/",
          "run_sheet_url": "https://fasttool.app/finish/check-ai-bot-traffic-before-seo-decisions/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/ai-traffic-reality-kit/",
      "category_hub_url": "https://fasttool.app/ai-agent-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/ai-traffic-source-classifier/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/ai-crawler-policy-builder/",
        "https://fasttool.app/tools/ai-agent-page-auditor/",
        "https://fasttool.app/ai-agent-tools/",
        "https://fasttool.app/agent-routes.json",
        "https://fasttool.app/tools/agent-output-evaluator/",
        "https://fasttool.app/tools/query-fanout-simulator/",
        "https://fasttool.app/tools/ai-citation-readiness-checker/",
        "https://fasttool.app/tools/aio-visibility-scorer/"
      ],
      "quality_badge": "New",
      "source_presets": [
        "mixed redacted sample",
        "Cloudflare/server rows",
        "GA4 engagement export",
        "Google Search Console rows"
      ],
      "reconciliation_fields": [
        "source mix",
        "likely human visits",
        "direct or unknown browser rows",
        "AI crawlers",
        "user-triggered AI agents",
        "classic crawlers",
        "training/model crawlers",
        "suspicious automation",
        "Search Console evidence"
      ],
      "decision_outputs": [
        "traffic truth verdict",
        "source reconciliation confidence",
        "bucket counts",
        "sample classifications",
        "next checks",
        "copyable decision memo"
      ]
    },
    {
      "schema_version": "2026-06-18",
      "tool_slug": "amortization-calculator",
      "name": "Amortization Calculator",
      "canonical_url": "https://fasttool.app/tools/amortization-calculator/",
      "category": "Finance",
      "summary": "Calculate monthly loan payments, total interest, payoff date, extra-payment savings, and a downloadable amortization schedule.",
      "reviewed": true,
      "reviewed_at": "2026-06-18",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "principal",
        "apr",
        "term",
        "extra_payment"
      ],
      "output_modes": [
        "monthly_payment",
        "schedule_table",
        "csv_export",
        "json_receipt"
      ],
      "sample_input": "Loan: 250000. APR: 6.5%. Term: 30 years. Extra monthly payment: 100.",
      "expected_output": "The calculator should show monthly payment, total interest, payoff month, savings from extra payment, and a month-by-month schedule.",
      "acceptance_checks": [
        "Uses the standard fixed-rate amortization formula with a transparent monthly-rate calculation.",
        "Separates required payment from optional extra payment so the payoff and savings are inspectable.",
        "Exports schedule rows and a JSON receipt so the result can be checked outside the page."
      ],
      "privacy_boundary": "Use public, low-risk sample values first. Calculations run in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not lending advice, tax advice, affordability advice, mortgage approval, or a binding quote from a lender.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench select"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          ".stats-grid",
          "table",
          "[data-tool-result]"
        ],
        "completion_signal": "Report the visible result, summarize the steps or schedule, copy or summarize the JSON receipt, and compare with expected_output."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the exact sample or user input used, report the visible output, copy or summarize the JSON proof receipt, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "amortization calculator",
        "loan amortization schedule",
        "mortgage amortization calculator",
        "extra payment payoff calculator",
        "monthly payment schedule"
      ],
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/amortization-calculator/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "quality_badge": "Search Demand"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "api-rate-limit-calculator",
      "name": "API Rate Limit Calculator",
      "canonical_url": "https://fasttool.app/tools/api-rate-limit-calculator/",
      "category": "Developer",
      "summary": "Model API rate limits, burst traffic, 429 probability, queue depth, retry timing, and token-bucket headroom before an integration breaks.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Limit: 1200 requests per minute. Average: 14 rps. Peak: 38 rps. Latency: 300 ms. Burst: 250 requests.",
      "expected_output": "The result should show utilization, 429 risk, safe throughput, queue depth, and retry schedule with jitter guidance.",
      "acceptance_checks": [
        "Uses transparent capacity and burst math.",
        "Shows token-bucket and queue assumptions.",
        "Warns when retry behavior could amplify load."
      ],
      "privacy_boundary": "Use public drafts or low-risk sample text first. The tool runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for SLA guarantees, vendor billing, distributed systems certification, or production capacity planning without logs.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "ai agent tools",
        "agent ready page",
        "browser agent page audit",
        "ai crawler policy",
        "chatgpt search visibility",
        "answer engine visibility",
        "ai overview visibility",
        "llm ready content",
        "prompt injection scanner",
        "rag chunk quality"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/kits/api-debugging-request-kit/",
      "category_hub_url": "https://fasttool.app/json-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/api-rate-limit-calculator/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/ai-traffic-source-classifier/",
        "https://fasttool.app/tools/agent-output-evaluator/",
        "https://fasttool.app/tools/ai-agent-page-auditor/",
        "https://fasttool.app/tools/ai-crawler-policy-builder/",
        "https://fasttool.app/tools/query-fanout-simulator/",
        "https://fasttool.app/tools/ai-citation-readiness-checker/",
        "https://fasttool.app/tools/aio-visibility-scorer/",
        "https://fasttool.app/tools/llm-ready-content-scorer/"
      ],
      "quality_badge": "New"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "aspect-ratio-calculator",
      "name": "Aspect Ratio Calculator",
      "canonical_url": "https://fasttool.app/tools/aspect-ratio-calculator/",
      "category": "Design",
      "summary": "Calculate and convert aspect ratios for images, video, and responsive design. Enter width and height to find the ratio, or enter a ratio plus one dimension to calculate the other. Lock ratio toggle, common presets (16:9, 4:3, 1:1, 21:9, 9:16), visual preview rectangle, and platform-specific size recommendations for YouTube, Instagram, Twitter, Facebook, and LinkedIn.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Width: 1920. Height: 1080. Then lock 16:9 and change width to 1280.",
      "expected_output": "Ratio should show 16:9, and the matching locked height should be 720.",
      "acceptance_checks": [
        "Uses a well-known video size where the ratio is easy to verify.",
        "The lock behavior can be checked by changing one dimension.",
        "The preview rectangle gives a visual sanity check."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for print production tolerances, camera sensor calibration, or legal ad-spec certification.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "check color contrast",
        "generate color palette",
        "pick color from page",
        "css gradient generator",
        "aspect ratio calculator",
        "resize image for social card",
        "1200x630 image resize",
        "compress social image",
        "aspect ratio social image",
        "check accessible button colors",
        "button contrast checker",
        "wcag button color contrast",
        "css button color accessibility",
        "convert units for recipe"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/tool-finder/",
      "category_hub_url": "https://fasttool.app/fast-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/aspect-ratio-calculator/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/color-picker/",
        "https://fasttool.app/tools/color-palette-generator/",
        "https://fasttool.app/tools/css-gradient-generator/",
        "https://fasttool.app/tasks/choose-readable-colors/",
        "https://fasttool.app/tools/image-compressor/",
        "https://fasttool.app/tools/jpg-to-webp/",
        "https://fasttool.app/tools/png-to-jpg/",
        "https://fasttool.app/tasks/resize-image-for-social-card/"
      ],
      "quality_badge": "Upgraded"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "ats-resume-checker",
      "name": "ATS Resume Checker",
      "canonical_url": "https://fasttool.app/tools/ats-resume-checker/",
      "category": "Writing",
      "summary": "Check your resume against a job description — see keyword matches, missing keywords, and ATS compatibility score.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Paste a resume summary and a front-end developer job description that mentions accessibility, performance, testing, and TypeScript.",
      "expected_output": "The checker should identify role-aligned terms, missing keywords, readability issues, and sections that need human review before export.",
      "acceptance_checks": [
        "Compares a resume against a target role rather than scoring in isolation.",
        "Keeps the output advisory; it does not promise hiring outcomes.",
        "Pairs naturally with resume-builder for a complete application workflow."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for guaranteed ATS ranking, immigration, employment law, or replacing a human resume review.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "ats resume checker",
        "resume keyword checker",
        "match resume to job description",
        "make resume ats friendly",
        "ats resume builder",
        "resume keyword checker",
        "resume pdf before applying",
        "make resume match job description"
      ],
      "primary_finish_routes": [
        {
          "title": "Make a Resume Easier to Pass an ATS Check",
          "url": "https://fasttool.app/finish/make-resume-pass-ats-check/",
          "run_sheet_url": "https://fasttool.app/finish/make-resume-pass-ats-check/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/job-application-pdf-kit/",
      "category_hub_url": "https://fasttool.app/fast-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/ats-resume-checker/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/resume-keyword-checker/",
        "https://fasttool.app/tools/word-to-pdf/",
        "https://fasttool.app/tools/pdf-to-word/",
        "https://fasttool.app/tasks/build-ats-friendly-resume-before-applying/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "audio-cutter",
      "name": "Audio Cutter",
      "canonical_url": "https://fasttool.app/tools/audio-cutter/",
      "category": "Productivity",
      "summary": "Trim MP3, WAV, OGG, or M4A audio with a waveform, preview the selection, and download a WAV cut from your browser.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file"
      ],
      "sample_input": "Audio: harmless 8 second WAV or MP3 clip. Start: 1.0s. End: 4.0s.",
      "expected_output": "Trimmed WAV should download, play, and contain about 3 seconds of audio from the selected range.",
      "acceptance_checks": [
        "Waveform, numeric fields, and preview all refer to the same selected range.",
        "Output duration and WAV format are explicit.",
        "Browser decode errors are shown clearly for unsupported codecs."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for forensic audio, music mastering, copyrighted extraction without rights, or confidential recordings on untrusted devices.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "audio cutter",
        "trim audio online",
        "mp3 cutter",
        "cut podcast clip",
        "trim wav file",
        "video cutter",
        "video cut",
        "trim video",
        "compress video",
        "mp4 to mp3",
        "video to gif",
        "audio cutter",
        "extract audio from video",
        "cut audio online"
      ],
      "primary_finish_routes": [
        {
          "title": "Trim an Audio Clip for a Podcast or Upload",
          "url": "https://fasttool.app/finish/trim-audio-clip-for-podcast-or-upload/",
          "run_sheet_url": "https://fasttool.app/finish/trim-audio-clip-for-podcast-or-upload/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/tool-finder/",
      "category_hub_url": "https://fasttool.app/fast-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/audio-cutter/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/video-trimmer/",
        "https://fasttool.app/tools/video-compressor/",
        "https://fasttool.app/tools/mp4-to-mp3-converter/",
        "https://fasttool.app/tools/video-to-gif/",
        "https://fasttool.app/tools/video-cutter/",
        "https://fasttool.app/finish/convert-mp4-to-mp3-or-cut-audio/",
        "https://fasttool.app/tools/word-character-counter/",
        "https://fasttool.app/tools/text-diff/"
      ],
      "quality_badge": "Reviewed"
    },
    {
      "schema_version": "2026-06-18",
      "tool_slug": "audio-loudness-loop-inspector",
      "name": "Audio Loudness & Loop Inspector",
      "canonical_url": "https://fasttool.app/tools/audio-loudness-loop-inspector/",
      "category": "Audio",
      "summary": "Analyze local audio for peak, RMS, approximate loudness, clipping, silence, loop seam risk, and creator-ready proof without uploading the file.",
      "reviewed": true,
      "reviewed_at": "2026-06-18",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "file",
        "sample_audio",
        "settings"
      ],
      "output_modes": [
        "audio_report",
        "waveform_preview",
        "json_receipt",
        "copyable_memo"
      ],
      "sample_input": "Use sample tone. Target: podcast intro or loop. Need peak/RMS, silence, clipping, loop seam, and copyable receipt.",
      "expected_output": "The inspector should decode audio locally, show peak/RMS/duration/silence/loop seam stats, warn about clipping or hard seams, and copy a JSON receipt.",
      "acceptance_checks": [
        "Uses Web Audio to analyze peak, RMS, silence, rough loudness, and loop-edge discontinuity.",
        "Provides a sample tone path for verification without private audio.",
        "Separates creative readiness from mastering or broadcast compliance claims."
      ],
      "privacy_boundary": "Use public, low-risk files or redacted rows first. Processing runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for certified LUFS metering, mastering decisions, broadcast compliance, copyright detection, or medical hearing advice.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench select",
          "#toolWorkbench canvas"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output",
          "canvas"
        ],
        "completion_signal": "Report the visible output, copy or summarize the proof receipt, and compare the result with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the exact sample or user input used, report the visible output, copy or summarize the proof receipt, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "audio loudness analyzer online",
        "check audio clipping online",
        "loop seam detector",
        "rms peak audio checker",
        "audio file readiness",
        "podcast audio upload checker"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/kits/ai-era-proof-lab/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/audio-loudness-loop-inspector/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/kits/ai-era-proof-lab/",
        "https://fasttool.app/tools/ai-agent-discovery-passport/",
        "https://fasttool.app/tools/media-upload-doctor/"
      ],
      "quality_badge": "Audio Proof",
      "receipt_schema": "ai-era-proof-receipt/v1"
    },
    {
      "schema_version": "2026-06-18",
      "tool_slug": "audio-release-visual-pack-studio",
      "name": "Audio Release Visual Pack Studio",
      "canonical_url": "https://fasttool.app/tools/audio-release-visual-pack-studio/",
      "category": "Image",
      "summary": "Create a coherent release visual pack from a track brief: square cover, 16:9 thumbnail, 9:16 poster, waveform signature, palette tokens, and proof receipt.",
      "reviewed": true,
      "reviewed_at": "2026-06-18",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "brief",
        "sample_energy",
        "audio_file_optional",
        "settings"
      ],
      "output_modes": [
        "contact_sheet_png",
        "waveform_svg",
        "css_tokens",
        "json_receipt"
      ],
      "sample_input": "Artist: Radiant Grove Music. Track: Night Glass Current. Mood: rainlit lo-fi, soft house, midnight window. Use sample energy.",
      "expected_output": "The studio should render a contact sheet with square, 16:9, and 9:16 variants, show safe-zone and waveform signals, and export PNG/SVG/JSON proof.",
      "acceptance_checks": [
        "Creates a platform asset family, not a single decorative card.",
        "Uses deterministic mood and energy settings so the pack can be recreated.",
        "Checks exact dimensions, safe-zone labels, palette tokens, and nonblank output."
      ],
      "privacy_boundary": "Use public, low-risk files first. Processing runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for copyright clearance, final label approval, guaranteed platform crop behavior, or replacing a professional campaign review.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#toolWorkbench input",
          "#toolWorkbench textarea",
          "#toolWorkbench select",
          "#toolWorkbench canvas"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output",
          "canvas",
          "svg",
          "audio"
        ],
        "completion_signal": "Report the visible output, copy or summarize the JSON proof receipt, verify exported artifact availability, and disclose what was not verified."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the exact sample or user input used, report the visible output, copy or summarize the JSON proof receipt, verify exported artifact availability, and disclose anything not verified.",
      "query_aliases": [
        "audio release visual pack",
        "music release asset generator",
        "album visual contact sheet",
        "track thumbnail poster maker",
        "waveform release art"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/kits/creative-signal-lab/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/audio-release-visual-pack-studio/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/kits/creative-signal-lab/",
        "https://fasttool.app/tools/ui-screenshot-diff-proof-studio/",
        "https://fasttool.app/tools/visual-style-dna-contact-sheet/",
        "https://fasttool.app/tools/seamless-loop-crossfade-builder/"
      ],
      "quality_badge": "Release Pack",
      "receipt_schema": "creative-signal-receipt/v1"
    },
    {
      "schema_version": "2026-06-18",
      "tool_slug": "audio-reactive-visual-clip-maker",
      "name": "Audio-Reactive Visual Clip Maker",
      "canonical_url": "https://fasttool.app/tools/audio-reactive-visual-clip-maker/",
      "category": "Image",
      "summary": "Analyze local audio and generate waveform-driven visual covers, loop frames, sprite sheets, and proof receipts without uploading the file.",
      "reviewed": true,
      "reviewed_at": "2026-06-18",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "file",
        "sample_audio",
        "settings"
      ],
      "output_modes": [
        "visible_canvas",
        "png_export",
        "sprite_sheet",
        "json_receipt"
      ],
      "sample_input": "Mode: synthwave rings. Use sample tone. Duration window: 8 seconds. Size: 1080 x 1080. Sensitivity: 72.",
      "expected_output": "The maker should render a nonblank audio-reactive visual, show peak/RMS/duration stats, export a cover PNG or frame sheet, and copy JSON proof.",
      "acceptance_checks": [
        "Uses Web Audio analysis for waveform, RMS, peak, and frame-energy values.",
        "Provides a sample tone path so the tool can be verified without private audio.",
        "Falls back to still cover and sprite-sheet output when video recording is unsupported."
      ],
      "privacy_boundary": "Use public, low-risk drafts or local sample files first. Processing runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for mastering, exact LUFS certification, copyright clearance, or professional broadcast compliance.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench select",
          "#toolWorkbench canvas"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output",
          "canvas",
          "svg"
        ],
        "completion_signal": "Report the visible output, copy or summarize the JSON proof receipt, and compare the result with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the exact sample or user input used, report the visible output, copy or summarize the JSON proof receipt, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "audio reactive visual maker",
        "music visualizer online",
        "waveform cover generator",
        "audio visual clip maker",
        "lofi visualizer tool",
        "web audio visual export"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/kits/creative-output-lab/",
      "category_hub_url": "https://fasttool.app/design-color-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/audio-reactive-visual-clip-maker/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/kits/creative-output-lab/",
        "https://fasttool.app/tools/generative-visual-asset-studio/",
        "https://fasttool.app/tools/seamless-svg-pattern-tile-lab/",
        "https://fasttool.app/tools/open-graph-image-proof-composer/",
        "https://fasttool.app/tools/prompt-injection-defense-arena/"
      ],
      "quality_badge": "Creative Lab",
      "receipt_schema": "creative-output-receipt/v1"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "barcode-generator",
      "name": "Barcode Generator",
      "canonical_url": "https://fasttool.app/tools/barcode-generator/",
      "category": "Data",
      "summary": "Generate Code128, EAN-13, UPC-A, Code39 and ITF-14 barcodes in your browser — customize width, height, colors and download as PNG.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Create a Code 128 barcode for FAST-2026-001 and a QR code for https://fasttool.app/tool-finder/.",
      "expected_output": "The output should be a scannable code image with visible text, quiet space, and the selected format clearly labeled.",
      "acceptance_checks": [
        "Separates barcode-style product codes from URL-oriented QR codes.",
        "Uses harmless sample values that can be scanned safely.",
        "Works as a supporting step for printable labels and PDF packets."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for regulated inventory, payment credentials, official shipping labels, or identity documents without governance review.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "barcode generator",
        "create qr label",
        "barcode label for product",
        "print barcode png",
        "create product barcode",
        "print barcode label",
        "barcode png",
        "inventory barcode label"
      ],
      "primary_finish_routes": [
        {
          "title": "Create a Barcode Label for a Product",
          "url": "https://fasttool.app/finish/create-barcode-label-for-product/",
          "run_sheet_url": "https://fasttool.app/finish/create-barcode-label-for-product/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/tool-finder/",
      "category_hub_url": "https://fasttool.app/json-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/barcode-generator/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/qr-code-generator/",
        "https://fasttool.app/tools/image-to-pdf/",
        "https://fasttool.app/tools/png-to-webp/",
        "https://fasttool.app/tasks/create-a-barcode-or-qr-label/",
        "https://fasttool.app/tools/image-resizer/",
        "https://fasttool.app/finish/create-barcode-label-for-product/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "base64-encoder-decoder",
      "name": "Base64 Encode/Decode",
      "canonical_url": "https://fasttool.app/tools/base64-encoder-decoder/",
      "category": "Developer",
      "summary": "Encode and decode Base64 with text mode, file mode, image-to-Base64 data URI, Base64-to-image preview, URL-safe variant toggle, live conversion, character count, and download support.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Encode text: FastTool",
      "expected_output": "Encoded output should be RmFzdFRvb2w=. Decoding it should return FastTool exactly.",
      "acceptance_checks": [
        "Uses a standard Base64 fixture that is independently verifiable.",
        "Round-trip check proves the output was not transformed semantically.",
        "URL-safe mode should only change characters when needed."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not encryption, password storage, access-token hiding, or any security boundary.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "fix invalid json",
        "format api response",
        "convert yaml to json",
        "csv to json cleanup",
        "decode jwt safely",
        "generate password",
        "generate uuid",
        "hash text",
        "url encode",
        "base64 decode",
        "validate json before api call",
        "check request body json",
        "fix json payload",
        "api json formatter"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/kits/api-debugging-request-kit/",
      "category_hub_url": "https://fasttool.app/json-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/base64-encoder-decoder/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/yaml-to-json/",
        "https://fasttool.app/tools/csv-to-json/",
        "https://fasttool.app/tools/regex-tester/",
        "https://fasttool.app/tools/jwt-decoder/",
        "https://fasttool.app/tasks/fix-invalid-json/",
        "https://fasttool.app/tools/uuid-generator/",
        "https://fasttool.app/tools/hash-generator/",
        "https://fasttool.app/tools/url-encoder-decoder/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "bmi-calculator",
      "name": "BMI Calculator",
      "canonical_url": "https://fasttool.app/tools/bmi-calculator/",
      "category": "Health",
      "summary": "Calculate BMI with visual gauge, color-coded results, age/gender context, and BMI reference chart.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Weight: 70 kg. Height: 175 cm.",
      "expected_output": "BMI should be about 22.9, normally shown in the normal-weight range.",
      "acceptance_checks": [
        "Independent formula is weight / height_m^2.",
        "The test value is simple enough to verify with a calculator.",
        "Category text should match the numeric BMI range."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not a diagnosis, eating-disorder screening, pregnancy guidance, pediatric assessment, or personalized medical advice.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "basic bmi estimate",
        "calculate age and bmi",
        "bmi calculator not medical advice",
        "age calculator with bmi"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/tool-finder/",
      "category_hub_url": "https://fasttool.app/fast-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/bmi-calculator/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/age-calculator/",
        "https://fasttool.app/tools/percentage-calculator/",
        "https://fasttool.app/tools/scientific-calculator/",
        "https://fasttool.app/tools/unit-converter/",
        "https://fasttool.app/tasks/check-bmi-age-basic-health-estimate/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "botsitting-cost-calculator",
      "name": "Botsitting Cost Calculator",
      "canonical_url": "https://fasttool.app/tools/botsitting-cost-calculator/",
      "category": "Productivity",
      "summary": "Calculate the real cost of supervising AI work: prompt time, review time, reruns, corrections, error risk, and whether the automation actually saves money.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Manual task: 45 minutes. AI draft: 8 minutes. Review: 12 minutes. Reruns: 2. Error risk: 6%. Hourly rate: 65.",
      "expected_output": "The calculator should show net saved time, supervision cost, break-even point, risk-adjusted ROI, and whether to automate, assist, or keep manual.",
      "acceptance_checks": [
        "Counts review and correction time instead of assuming AI output is free.",
        "Makes error cost visible before a workflow is automated.",
        "Produces a decision memo that a manager or solo founder can reuse."
      ],
      "privacy_boundary": "Use public drafts, low-risk sample text, or non-sensitive operational data first. The tool runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for financial advice, guaranteed productivity claims, staffing decisions by itself, or enterprise procurement without real operational data.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "ai agent tools",
        "agent ready page",
        "browser agent page audit",
        "ai crawler policy",
        "chatgpt search visibility",
        "answer engine visibility",
        "ai overview visibility",
        "llm ready content",
        "prompt injection scanner",
        "rag chunk quality"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/tool-finder/",
      "category_hub_url": "https://fasttool.app/fast-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/botsitting-cost-calculator/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/ai-traffic-source-classifier/",
        "https://fasttool.app/tools/agent-output-evaluator/",
        "https://fasttool.app/tools/ai-agent-page-auditor/",
        "https://fasttool.app/tools/ai-crawler-policy-builder/",
        "https://fasttool.app/tools/query-fanout-simulator/",
        "https://fasttool.app/tools/ai-citation-readiness-checker/",
        "https://fasttool.app/tools/aio-visibility-scorer/",
        "https://fasttool.app/tools/llm-ready-content-scorer/"
      ],
      "quality_badge": "New"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "bulk-email-validator",
      "name": "Bulk Email Validator",
      "canonical_url": "https://fasttool.app/tools/bulk-email-validator/",
      "category": "Marketing",
      "summary": "Validate multiple email addresses at once — paste a list of emails and instantly see which are valid, which have invalid format, and which use disposable or role-based addresses.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Validate user@example.com, bad@@example, info@company.com, and test@mailinator.com.",
      "expected_output": "The result should separate valid-looking, invalid, disposable, and role-based addresses for manual review.",
      "acceptance_checks": [
        "Checks syntax and classification; it does not send mail.",
        "Supports clean import workflows without endorsing unsolicited outreach.",
        "Shows why consent and list provenance remain outside the browser tool."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for spam, purchased lists, deliverability guarantees, consent proof, or legal compliance review.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "bulk email validator",
        "clean email list",
        "validate emails before import",
        "remove invalid email addresses",
        "clean email list before import",
        "validate emails in bulk",
        "remove invalid emails from list"
      ],
      "primary_finish_routes": [
        {
          "title": "Clean an Email List Before Import",
          "url": "https://fasttool.app/finish/clean-email-list-before-import/",
          "run_sheet_url": "https://fasttool.app/finish/clean-email-list-before-import/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/tool-finder/",
      "category_hub_url": "https://fasttool.app/fast-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/bulk-email-validator/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/csv-to-json/",
        "https://fasttool.app/tools/word-character-counter/",
        "https://fasttool.app/tasks/clean-an-email-list-before-import/",
        "https://fasttool.app/tools/text-diff/",
        "https://fasttool.app/tools/case-converter/",
        "https://fasttool.app/finish/clean-email-list-before-import/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "bulk-image-resizer",
      "name": "Bulk Image Resizer",
      "canonical_url": "https://fasttool.app/tools/bulk-image-resizer/",
      "category": "Image",
      "summary": "Resize multiple images at once with custom dimensions, percentage scaling, or social media presets. Batch process and download as ZIP.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file"
      ],
      "sample_input": "Two small JPEG or PNG images, target width 800 px, keep aspect ratio on.",
      "expected_output": "Each exported image should keep its aspect ratio, have width near 800 px, and download as a batch package.",
      "acceptance_checks": [
        "Starts from harmless sample images before production assets.",
        "Output dimensions can be verified in the browser or file inspector.",
        "Batch flow checks that no file is silently skipped."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for forensic image preservation, medical images, legal evidence, or exact color-managed print workflows.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "bulk image resizer",
        "resize product images",
        "compress product photos",
        "batch resize images for upload",
        "make image smaller",
        "compress image for website",
        "resize image for upload",
        "jpg to webp",
        "webp to jpg",
        "compress image for upload",
        "make photo smaller for form",
        "reduce jpg size",
        "resize image under 1mb"
      ],
      "primary_finish_routes": [
        {
          "title": "Resize Bulk Images for a Product Listing",
          "url": "https://fasttool.app/finish/resize-bulk-images-for-product-listing/",
          "run_sheet_url": "https://fasttool.app/finish/resize-bulk-images-for-product-listing/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/image-upload-conversion-kit/",
      "category_hub_url": "https://fasttool.app/image-optimization-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/bulk-image-resizer/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/image-resizer/",
        "https://fasttool.app/tools/jpg-to-webp/",
        "https://fasttool.app/tools/webp-to-jpg/",
        "https://fasttool.app/tools/png-to-jpg/",
        "https://fasttool.app/tasks/make-image-smaller/",
        "https://fasttool.app/finish/compress-image-for-form-upload/",
        "https://fasttool.app/tools/image-compressor/",
        "https://fasttool.app/finish/resize-bulk-images-for-product-listing/"
      ],
      "quality_badge": "New"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "case-converter",
      "name": "Case Converter",
      "canonical_url": "https://fasttool.app/tools/case-converter/",
      "category": "Writing",
      "summary": "Convert text between UPPERCASE, lowercase, Title Case, Sentence case, camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE, aLtErNaTiNg CaSe, and Inverse Case with real-time preview and character stats.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Text: Merhaba Dunya",
      "expected_output": "Uppercase should be MERHABA DUNYA; lowercase should be merhaba dunya; title case should be Merhaba Dunya.",
      "acceptance_checks": [
        "Uses a short fixture with two words and mixed case.",
        "Expected output is deterministic and visually obvious.",
        "Multiple case modes make regressions easy to spot."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for locale-perfect legal names, transliteration, or language-sensitive capitalization rules.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "clean text case before publishing",
        "title case sentence case converter",
        "fix uppercase headline",
        "copy case converter",
        "count words and characters",
        "check readability",
        "summarize notes",
        "markdown to html",
        "convert text case",
        "prepare meta title description",
        "count meta description characters",
        "seo title length checker",
        "write page snippet",
        "convert markdown to clean html"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/tool-finder/",
      "category_hub_url": "https://fasttool.app/fast-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/case-converter/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/readability-checker/",
        "https://fasttool.app/tools/ai-text-summarizer/",
        "https://fasttool.app/tools/markdown-to-html/",
        "https://fasttool.app/tasks/check-copy-before-publishing/",
        "https://fasttool.app/tools/html-minifier/",
        "https://fasttool.app/tasks/prepare-meta-title-description/",
        "https://fasttool.app/tools/word-character-counter/",
        "https://fasttool.app/tasks/convert-markdown-to-clean-html/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "color-palette-generator",
      "name": "Color Palette Generator",
      "canonical_url": "https://fasttool.app/tools/color-palette-generator/",
      "category": "Design",
      "summary": "Generate beautiful color palettes from any base color. Choose from complementary, analogous, triadic, split-complementary, tetradic, and monochromatic harmonies. Export as CSS variables, Tailwind config, or SCSS. Built-in contrast checker with WCAG AA/AAA compliance.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Base color: #0A8D83. Harmony: complementary.",
      "expected_output": "Palette should include the base color and complementary family with copyable color values.",
      "acceptance_checks": [
        "The base color must stay visible in the generated palette.",
        "Exported CSS variables should match the displayed swatches.",
        "Contrast helper provides a practical quality check."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for final brand identity decisions without human design review.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "css button generator",
        "accessible button css",
        "button hover css generator",
        "check button color contrast",
        "color contrast checker",
        "accessible color palette",
        "readable brand colors",
        "wcag color check",
        "brand color palette generator",
        "check color contrast",
        "generate color palette",
        "pick color from page",
        "css gradient generator",
        "aspect ratio calculator"
      ],
      "primary_finish_routes": [
        {
          "title": "Create an Accessible CSS Button",
          "url": "https://fasttool.app/finish/create-accessible-css-button/",
          "run_sheet_url": "https://fasttool.app/finish/create-accessible-css-button/#smart-run-sheet"
        },
        {
          "title": "Choose a Readable Brand Color Palette",
          "url": "https://fasttool.app/finish/choose-readable-brand-color-palette/",
          "run_sheet_url": "https://fasttool.app/finish/choose-readable-brand-color-palette/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/tool-finder/",
      "category_hub_url": "https://fasttool.app/fast-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/color-palette-generator/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/color-picker/",
        "https://fasttool.app/tools/css-gradient-generator/",
        "https://fasttool.app/tools/aspect-ratio-calculator/",
        "https://fasttool.app/tasks/choose-readable-colors/",
        "https://fasttool.app/tasks/check-accessible-button-colors/",
        "https://fasttool.app/tools/css-button-generator/",
        "https://fasttool.app/finish/choose-readable-brand-color-palette/"
      ],
      "quality_badge": "Upgraded"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "color-picker",
      "name": "Color Picker",
      "canonical_url": "https://fasttool.app/tools/color-picker/",
      "category": "Design",
      "summary": "Pick colors with EyeDropper, get HEX/RGB/HSL/CMYK/HWB values, explore harmonies and gradients.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Pick or type color: #3366FF.",
      "expected_output": "HEX should stay #3366FF and RGB should be 51, 102, 255 or equivalent.",
      "acceptance_checks": [
        "Uses a known color with simple RGB conversion.",
        "Multiple color models should stay synchronized.",
        "Copy output can be checked against the visible swatch."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for calibrated display measurement, print color proofing, or legal color matching.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "check color contrast",
        "generate color palette",
        "pick color from page",
        "css gradient generator",
        "aspect ratio calculator",
        "check accessible button colors",
        "button contrast checker",
        "wcag button color contrast",
        "css button color accessibility",
        "svg to png logo",
        "convert svg to webp",
        "rasterize svg logo",
        "make png from svg",
        "color contrast checker"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/tool-finder/",
      "category_hub_url": "https://fasttool.app/fast-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/color-picker/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/color-palette-generator/",
        "https://fasttool.app/tools/css-gradient-generator/",
        "https://fasttool.app/tools/aspect-ratio-calculator/",
        "https://fasttool.app/tasks/choose-readable-colors/",
        "https://fasttool.app/tasks/check-accessible-button-colors/",
        "https://fasttool.app/tools/image-resizer/",
        "https://fasttool.app/tools/png-to-webp/",
        "https://fasttool.app/tools/image-compressor/"
      ],
      "quality_badge": "Trending"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "compound-interest-calculator",
      "name": "Compound Interest Calculator",
      "canonical_url": "https://fasttool.app/tools/compound-interest-calculator/",
      "category": "Finance",
      "summary": "Calculate compound interest with interactive growth chart, year-by-year table, and contribution breakdown.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Principal: 1000. Annual rate: 5%. Years: 10. No extra contribution.",
      "expected_output": "Future value should be about 1628.89 before taxes and fees.",
      "acceptance_checks": [
        "Independent fixture uses 1000*(1.05)^10.",
        "Chart and table should agree with the headline result.",
        "Contribution-free case isolates the core formula."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not financial advice, tax advice, investment recommendation, or guaranteed return projection.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "loan payment calculator",
        "mortgage payment estimate",
        "compound interest calculator",
        "percentage increase calculator",
        "calculate percentage change correctly",
        "old new value percentage",
        "percent change formula",
        "compare loan mortgage interest scenarios",
        "loan vs mortgage calculator",
        "compound interest scenario",
        "monthly payment comparison",
        "compare loan scenarios",
        "monthly payment calculator"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/tool-finder/",
      "category_hub_url": "https://fasttool.app/fast-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/compound-interest-calculator/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/mortgage-calculator/",
        "https://fasttool.app/tools/percentage-calculator/",
        "https://fasttool.app/tasks/compare-finance-estimates/",
        "https://fasttool.app/tools/scientific-calculator/",
        "https://fasttool.app/tools/unit-converter/",
        "https://fasttool.app/tools/loan-calculator/",
        "https://fasttool.app/tasks/calculate-percentage-change-correctly/",
        "https://fasttool.app/tasks/compare-loan-mortgage-interest-scenarios/"
      ]
    },
    {
      "schema_version": "2026-06-18",
      "tool_slug": "context-window-budgeter",
      "name": "Context Window Budgeter",
      "canonical_url": "https://fasttool.app/tools/context-window-budgeter/",
      "category": "AI",
      "summary": "Plan an AI-agent or RAG context window with system, history, retrieval, pasted packet, output reserve, tool-observation reserve, pressure gate, cost estimate, JSON receipt, and injection-gate handoff.",
      "reviewed": true,
      "reviewed_at": "2026-06-18",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "json_receipt"
      ],
      "sample_input": "Workflow: tool-using agent. Window: 128k. System: 2200 tokens. 24 turns. 14 retrieved chunks. Output and tool observation reserves included.",
      "expected_output": "The budget should show used tokens, remaining tokens, pressure decision, safe future turns, recommended reductions, JSON receipt, and a Prompt Injection Scanner handoff.",
      "acceptance_checks": [
        "Uses transparent token approximations so the math can be sanity-checked.",
        "Separates output and tool-observation reserves from input context.",
        "Produces a pass, watch, warn, or block decision before context pressure becomes a quality problem."
      ],
      "privacy_boundary": "Use public drafts or low-risk sample text first. The tool runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for exact vendor billing, tokenizer-perfect counts, contract pricing, or regulated capacity planning.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the exact sample or user input used, report the visible result, copy or summarize the JSON receipt, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "agent workflow proof passport",
        "prompt rag quality runbook",
        "ai agent workflow receipt",
        "prompt injection gate",
        "json schema from llm output",
        "context window budget",
        "embedding duplicate chunks",
        "context budget receipt",
        "ai agent context budget",
        "rag context planner",
        "token pressure gate",
        "context window handoff",
        "ai agent tools",
        "agent ready page",
        "browser agent page audit",
        "ai crawler policy",
        "chatgpt search visibility",
        "answer engine visibility",
        "ai overview visibility",
        "llm ready content",
        "prompt injection scanner",
        "rag chunk quality",
        "prepare rag chunks",
        "rag quality checker",
        "llm output schema extractor",
        "embedding similarity checker"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/kits/prompt-rag-quality-kit/",
      "category_hub_url": "https://fasttool.app/ai-agent-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/context-window-budgeter/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/kits/prompt-rag-quality-kit/",
        "https://fasttool.app/kits/prompt-rag-quality-kit/#workflow-console",
        "https://fasttool.app/tools/agent-task-contract-studio/",
        "https://fasttool.app/tools/context-window-budgeter/",
        "https://fasttool.app/tools/prompt-injection-scanner/",
        "https://fasttool.app/tools/rag-chunk-quality-scorer/",
        "https://fasttool.app/tools/embedding-similarity-explorer/",
        "https://fasttool.app/tools/llm-output-schema-extractor/",
        "https://fasttool.app/tools/ai-hallucination-likelihood-scorer/",
        "https://fasttool.app/tools/agent-output-evaluator/",
        "https://fasttool.app/tools/ai-traffic-source-classifier/",
        "https://fasttool.app/tools/ai-agent-page-auditor/",
        "https://fasttool.app/tools/ai-crawler-policy-builder/",
        "https://fasttool.app/tools/query-fanout-simulator/",
        "https://fasttool.app/tools/ai-citation-readiness-checker/",
        "https://fasttool.app/tools/aio-visibility-scorer/"
      ],
      "quality_badge": "New"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "css-button-generator",
      "name": "CSS Button Generator",
      "canonical_url": "https://fasttool.app/tools/css-button-generator/",
      "category": "Design",
      "summary": "Generate beautiful CSS buttons with live preview — customize color, size, border radius, shadow, hover effects, and copy the ready-to-use HTML and CSS code.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "report"
      ],
      "sample_input": "Generate a primary button using #0A8D83 background, white text, 12px radius, and a visible focus state.",
      "expected_output": "The generated HTML/CSS should have readable contrast, hover/focus states, and copyable code that matches the preview.",
      "acceptance_checks": [
        "Pairs with contrast checks before minifying CSS.",
        "Makes the focus state visible instead of treating styling as decoration.",
        "Useful for a concrete accessible-button workflow."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for formal accessibility certification, enterprise design-system approval, or replacing component QA.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "css button generator",
        "accessible button colors",
        "button hover css",
        "minify button css",
        "accessible button css",
        "button hover css generator",
        "check button color contrast",
        "color contrast checker",
        "accessible color palette",
        "readable brand colors",
        "wcag color check",
        "brand color palette generator"
      ],
      "primary_finish_routes": [
        {
          "title": "Create an Accessible CSS Button",
          "url": "https://fasttool.app/finish/create-accessible-css-button/",
          "run_sheet_url": "https://fasttool.app/finish/create-accessible-css-button/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/tool-finder/",
      "category_hub_url": "https://fasttool.app/fast-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/css-button-generator/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/color-contrast-checker/",
        "https://fasttool.app/tools/css-minifier/",
        "https://fasttool.app/tools/css-gradient-generator/",
        "https://fasttool.app/tasks/create-an-accessible-css-button/",
        "https://fasttool.app/tools/aspect-ratio-calculator/",
        "https://fasttool.app/finish/create-accessible-css-button/",
        "https://fasttool.app/tools/color-palette-generator/",
        "https://fasttool.app/tools/color-picker/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "css-gradient-generator",
      "name": "CSS Gradient Generator",
      "canonical_url": "https://fasttool.app/tools/css-gradient-generator/",
      "category": "Design",
      "summary": "Create stunning CSS gradients with linear, radial, and conic types. Angle slider, up to 8 color stops with position control, 20 beautiful presets, live preview, full-screen mode, and one-click CSS copy with vendor prefixes.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Linear gradient, 90 degrees, stops #0A8D83 at 0% and #F7C948 at 100%.",
      "expected_output": "CSS output should contain linear-gradient(90deg, ...) with both color stops.",
      "acceptance_checks": [
        "Fixture checks angle, stop order, and copyable CSS.",
        "Preview should visually match teal-to-yellow left/right direction.",
        "Export text can be pasted into a CSS file without extra markup."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for accessibility validation or brand-system approval by itself.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "css button generator",
        "accessible button css",
        "button hover css generator",
        "check button color contrast",
        "check color contrast",
        "generate color palette",
        "pick color from page",
        "css gradient generator",
        "aspect ratio calculator",
        "check accessible button colors",
        "button contrast checker",
        "wcag button color contrast",
        "css button color accessibility",
        "css button generator"
      ],
      "primary_finish_routes": [
        {
          "title": "Create an Accessible CSS Button",
          "url": "https://fasttool.app/finish/create-accessible-css-button/",
          "run_sheet_url": "https://fasttool.app/finish/create-accessible-css-button/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/tool-finder/",
      "category_hub_url": "https://fasttool.app/fast-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/css-gradient-generator/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/color-picker/",
        "https://fasttool.app/tools/color-palette-generator/",
        "https://fasttool.app/tools/aspect-ratio-calculator/",
        "https://fasttool.app/tasks/choose-readable-colors/",
        "https://fasttool.app/tasks/check-accessible-button-colors/",
        "https://fasttool.app/tools/color-contrast-checker/",
        "https://fasttool.app/tools/css-minifier/",
        "https://fasttool.app/tasks/create-an-accessible-css-button/"
      ],
      "quality_badge": "Upgraded"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "css-minifier",
      "name": "CSS Minifier & Beautifier",
      "canonical_url": "https://fasttool.app/tools/css-minifier/",
      "category": "Developer",
      "summary": "Minify or beautify CSS code with syntax highlighting, line numbers, and size stats — paste, upload, or drop a .css file and get optimized output instantly.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "CSS: .card { color: red; padding: 8px; }",
      "expected_output": "Minified output should remove unnecessary whitespace while preserving .card, color:red, and padding:8px.",
      "acceptance_checks": [
        "Checks semantic preservation instead of only file size.",
        "Input is small enough to compare by eye.",
        "Beautify mode should restore readable indentation."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for compiling Sass/Less, fixing invalid CSS, or production build replacement.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "css minifier",
        "javascript minifier",
        "html minifier",
        "sql formatter",
        "html css js minifier",
        "minify code before publish",
        "minify html online",
        "frontend snippet minifier",
        "minify css js html before publish",
        "compress front end code",
        "javascript css html minifier",
        "minify static website",
        "css button generator",
        "accessible button colors"
      ],
      "primary_finish_routes": [
        {
          "title": "Minify HTML, CSS, and JavaScript Before Publishing",
          "url": "https://fasttool.app/finish/minify-html-css-js-before-publish/",
          "run_sheet_url": "https://fasttool.app/finish/minify-html-css-js-before-publish/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/tool-finder/",
      "category_hub_url": "https://fasttool.app/json-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/css-minifier/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/javascript-minifier/",
        "https://fasttool.app/tools/html-minifier/",
        "https://fasttool.app/tools/sql-formatter/",
        "https://fasttool.app/tasks/clean-code-snippets/",
        "https://fasttool.app/tools/regex-tester/",
        "https://fasttool.app/tasks/minify-front-end-before-publish/",
        "https://fasttool.app/tools/color-contrast-checker/",
        "https://fasttool.app/tools/css-gradient-generator/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "csv-to-json",
      "name": "CSV to JSON Converter",
      "canonical_url": "https://fasttool.app/tools/csv-to-json/",
      "category": "Data",
      "summary": "Convert CSV to JSON or JSON to CSV with auto-delimiter detection. Upload .csv files or paste data. Preview table, toggle header row, handle quoted fields and edge cases. Download or copy output.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file",
        "report"
      ],
      "sample_input": "CSV: name,score\\nAda,10\\nLin,9",
      "expected_output": "JSON should be an array with two objects and keys name and score.",
      "acceptance_checks": [
        "Header row behavior is visible in the output.",
        "Two-row fixture catches single-row parsing bugs.",
        "Quoted delimiter handling can be checked after the baseline passes."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for private customer exports, regulated datasets, or million-row ETL jobs.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "convert csv to json for spreadsheet",
        "json to csv table",
        "csv json round trip",
        "spreadsheet json cleanup",
        "csv to json",
        "json to csv",
        "yaml to json",
        "convert data for automation",
        "format structured data",
        "fix invalid json",
        "format api response",
        "convert yaml to json",
        "csv to json cleanup",
        "decode jwt safely"
      ],
      "primary_finish_routes": [
        {
          "title": "Convert CSV, JSON, or YAML for Automation",
          "url": "https://fasttool.app/finish/convert-csv-json-yaml-for-automation/",
          "run_sheet_url": "https://fasttool.app/finish/convert-csv-json-yaml-for-automation/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/api-debugging-request-kit/",
      "category_hub_url": "https://fasttool.app/json-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/csv-to-json/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/yaml-to-json/",
        "https://fasttool.app/tools/regex-tester/",
        "https://fasttool.app/tools/base64-encoder-decoder/",
        "https://fasttool.app/tools/jwt-decoder/",
        "https://fasttool.app/tasks/fix-invalid-json/",
        "https://fasttool.app/tools/json-to-csv/",
        "https://fasttool.app/tools/json-formatter/",
        "https://fasttool.app/tools/word-character-counter/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "curl-to-code",
      "name": "cURL to Code Converter",
      "canonical_url": "https://fasttool.app/tools/curl-to-code/",
      "category": "Developer",
      "summary": "Convert cURL commands to JavaScript fetch, Python requests, PHP cURL, Node.js axios, Go net/http, and Ruby net/http with syntax-highlighted output and one-click copy.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file"
      ],
      "sample_input": "Convert a cURL request with a placeholder Authorization header and JSON body {\"event\":\"signup\",\"plan\":\"starter\"}.",
      "expected_output": "The generated code should preserve method, headers, URL, and JSON body without exposing live credentials.",
      "acceptance_checks": [
        "Works with placeholder secrets only.",
        "Pairs with JSON validation and URL encoding routes.",
        "Makes generated code reviewable before it reaches production."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for production API security review, credential handling, rate-limit design, or automatic deployment.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "curl to code",
        "prepare api request",
        "format json request body",
        "encode api url parameters",
        "curl to python requests",
        "curl to javascript fetch",
        "convert curl to code",
        "api curl command to code",
        "jwt decoder",
        "decode jwt payload",
        "inspect jwt claims",
        "jwt expired check",
        "decode bearer token"
      ],
      "primary_finish_routes": [
        {
          "title": "Convert a cURL Request to a Code Snippet",
          "url": "https://fasttool.app/finish/convert-curl-request-to-code-snippet/",
          "run_sheet_url": "https://fasttool.app/finish/convert-curl-request-to-code-snippet/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/api-debugging-request-kit/",
      "category_hub_url": "https://fasttool.app/json-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/curl-to-code/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/json-formatter/",
        "https://fasttool.app/tools/jwt-decoder/",
        "https://fasttool.app/tools/url-encoder-decoder/",
        "https://fasttool.app/tools/hash-generator/",
        "https://fasttool.app/tasks/prepare-an-api-curl-request/",
        "https://fasttool.app/tools/url-parser/",
        "https://fasttool.app/tools/base64-encoder-decoder/",
        "https://fasttool.app/finish/convert-curl-request-to-code-snippet/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "date-calculator",
      "name": "Date Calculator",
      "canonical_url": "https://fasttool.app/tools/date-calculator/",
      "category": "Productivity",
      "summary": "Calculate exact date differences, business days, ISO week numbers, leap-year details, or add and subtract days from any date.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Start date: 2024-02-28. End date: 2024-03-01. Add 30 days to 2026-01-01.",
      "expected_output": "Difference should account for leap day; adding 30 days to 2026-01-01 should return 2026-01-31.",
      "acceptance_checks": [
        "Uses leap-year fixture to catch off-by-one errors.",
        "Shows total days, business days, ISO week, and day-of-week details separately.",
        "Add/subtract mode is independently verifiable."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for legal deadlines, payroll compliance, tax filing deadlines, or jurisdiction-specific business-day rules.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "business days calculator",
        "days between dates",
        "deadline calculator",
        "add days to date",
        "workday deadline"
      ],
      "primary_finish_routes": [
        {
          "title": "Calculate Business Days or a Deadline",
          "url": "https://fasttool.app/finish/calculate-business-days-or-deadline/",
          "run_sheet_url": "https://fasttool.app/finish/calculate-business-days-or-deadline/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/tool-finder/",
      "category_hub_url": "https://fasttool.app/fast-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/date-calculator/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/unit-converter/",
        "https://fasttool.app/tools/percentage-calculator/",
        "https://fasttool.app/tools/pomodoro-timer/",
        "https://fasttool.app/tools/word-character-counter/",
        "https://fasttool.app/finish/calculate-business-days-or-deadline/"
      ],
      "quality_badge": "Reviewed"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "eeat-audit-scorecard",
      "name": "E-E-A-T Audit Scorecard",
      "canonical_url": "https://fasttool.app/tools/eeat-audit-scorecard/",
      "category": "SEO",
      "summary": "Audit visible page copy for experience, expertise, authority, and trust signals with weighted scoring, YMYL sensitivity, and fix priorities.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "report"
      ],
      "sample_input": "Paste a health, finance, product review, or tool page with author details, dates, citations, schema, and limitations.",
      "expected_output": "The scorecard should produce an A-F grade, E/E/A/T sub-scores, missing trust signals, and prioritized fixes.",
      "acceptance_checks": [
        "Checks visible trust signals rather than claiming Google knows the author.",
        "Raises the bar for YMYL-sensitive pages.",
        "Produces specific fix priorities for thin or unsupported pages."
      ],
      "privacy_boundary": "Use public drafts or low-risk sample text first. The tool runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for guaranteeing rankings, AdSense approval, legal compliance, medical review, or reputation scoring.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "ai agent tools",
        "agent ready page",
        "browser agent page audit",
        "ai crawler policy",
        "chatgpt search visibility",
        "answer engine visibility",
        "ai overview visibility",
        "llm ready content",
        "prompt injection scanner",
        "rag chunk quality"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/kits/ai-traffic-reality-kit/",
      "category_hub_url": "https://fasttool.app/ai-agent-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/eeat-audit-scorecard/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/ai-traffic-source-classifier/",
        "https://fasttool.app/tools/agent-output-evaluator/",
        "https://fasttool.app/tools/ai-agent-page-auditor/",
        "https://fasttool.app/tools/ai-crawler-policy-builder/",
        "https://fasttool.app/tools/query-fanout-simulator/",
        "https://fasttool.app/tools/ai-citation-readiness-checker/",
        "https://fasttool.app/tools/aio-visibility-scorer/",
        "https://fasttool.app/tools/llm-ready-content-scorer/"
      ],
      "quality_badge": "New"
    },
    {
      "schema_version": "2026-06-18",
      "tool_slug": "embedding-similarity-explorer",
      "name": "Embedding Similarity Explorer",
      "canonical_url": "https://fasttool.app/tools/embedding-similarity-explorer/",
      "category": "Developer",
      "summary": "Compare text snippets with a deterministic TF-IDF cosine matrix, surface near-duplicates, and explain which terms drive similarity.",
      "reviewed": true,
      "reviewed_at": "2026-06-18",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file",
        "report"
      ],
      "sample_input": "Paste five knowledge-base snippets separated by --- including two near duplicates and one unrelated section.",
      "expected_output": "The matrix should show most similar pair, most distant pair, duplicate risk, and a copyable CSV similarity table.",
      "acceptance_checks": [
        "Uses deterministic local vectors so results are repeatable.",
        "Explains similarity through shared weighted terms.",
        "Separates proxy similarity from real vendor embeddings."
      ],
      "privacy_boundary": "Use public drafts or low-risk sample text first. The tool runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for confidential corpora on untrusted devices, legal discovery, or replacing production embedding evaluation.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "agent workflow proof passport",
        "prompt rag quality runbook",
        "ai agent workflow receipt",
        "prompt injection gate",
        "json schema from llm output",
        "context window budget",
        "embedding duplicate chunks",
        "rag chunk quality",
        "prepare rag chunks",
        "prompt injection scanner",
        "rag quality checker",
        "llm output schema extractor",
        "embedding similarity checker",
        "ai agent tools",
        "agent ready page",
        "browser agent page audit",
        "ai crawler policy",
        "chatgpt search visibility",
        "answer engine visibility",
        "ai overview visibility",
        "llm ready content"
      ],
      "primary_finish_routes": [
        {
          "title": "Prepare RAG Chunks Before Indexing",
          "url": "https://fasttool.app/finish/prepare-rag-chunks-before-indexing/",
          "run_sheet_url": "https://fasttool.app/finish/prepare-rag-chunks-before-indexing/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/prompt-rag-quality-kit/",
      "category_hub_url": "https://fasttool.app/ai-agent-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/embedding-similarity-explorer/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/kits/prompt-rag-quality-kit/",
        "https://fasttool.app/kits/prompt-rag-quality-kit/#workflow-console",
        "https://fasttool.app/tools/agent-task-contract-studio/",
        "https://fasttool.app/tools/context-window-budgeter/",
        "https://fasttool.app/tools/prompt-injection-scanner/",
        "https://fasttool.app/tools/rag-chunk-quality-scorer/",
        "https://fasttool.app/tools/embedding-similarity-explorer/",
        "https://fasttool.app/tools/llm-output-schema-extractor/",
        "https://fasttool.app/tools/ai-hallucination-likelihood-scorer/",
        "https://fasttool.app/tools/agent-output-evaluator/",
        "https://fasttool.app/tools/ai-traffic-source-classifier/",
        "https://fasttool.app/tools/ai-agent-page-auditor/",
        "https://fasttool.app/tools/ai-crawler-policy-builder/",
        "https://fasttool.app/tools/query-fanout-simulator/",
        "https://fasttool.app/tools/ai-citation-readiness-checker/",
        "https://fasttool.app/tools/aio-visibility-scorer/"
      ],
      "quality_badge": "New"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "excel-to-pdf",
      "name": "Excel to PDF Converter",
      "canonical_url": "https://fasttool.app/tools/excel-to-pdf/",
      "category": "Document",
      "summary": "Turn Excel workbooks into printable PDF tables with sheet selection, layout options, and local export.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file",
        "report"
      ],
      "sample_input": "Workbook with one sheet: Name, Score; Ada, 10; Lin, 9.",
      "expected_output": "PDF preview or download should show the table content in readable rows.",
      "acceptance_checks": [
        "Uses a tiny workbook so visual PDF output is easy to verify.",
        "Sheet selection and layout controls are visible before export.",
        "Downloaded file should be non-empty and open as a PDF."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for legally exact invoices, audited financial statements, complex macros, or pixel-perfect Excel print fidelity.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "excel to pdf",
        "powerpoint to pdf",
        "html to pdf",
        "compress converted pdf",
        "convert spreadsheet to pdf",
        "print excel table as pdf",
        "xlsx to pdf online",
        "xlsx to pdf",
        "send excel report as pdf",
        "spreadsheet pdf handout",
        "extract table from pdf",
        "pdf table to csv",
        "pdf table extractor",
        "copy pdf table to spreadsheet"
      ],
      "primary_finish_routes": [
        {
          "title": "Convert an Excel Report to PDF for a Client",
          "url": "https://fasttool.app/finish/convert-excel-report-to-pdf-for-client/",
          "run_sheet_url": "https://fasttool.app/finish/convert-excel-report-to-pdf-for-client/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/pdf-cleanup-rescue-kit/",
      "category_hub_url": "https://fasttool.app/pdf-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/excel-to-pdf/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/powerpoint-to-pdf/",
        "https://fasttool.app/tools/html-to-pdf/",
        "https://fasttool.app/tools/pdf-compressor/",
        "https://fasttool.app/tasks/convert-office-to-pdf/",
        "https://fasttool.app/tools/csv-to-json/",
        "https://fasttool.app/tools/json-to-csv/",
        "https://fasttool.app/tasks/convert-excel-report-to-pdf/",
        "https://fasttool.app/tasks/extract-pdf-table-for-spreadsheet/"
      ],
      "quality_badge": "New"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "image-metadata-stripper",
      "name": "EXIF & Photo Privacy Cleaner",
      "canonical_url": "https://fasttool.app/tools/image-metadata-stripper/",
      "category": "Image",
      "summary": "Remove EXIF, GPS, XMP, and common photo metadata locally in your browser, preview the clean copy, and verify the output with a privacy receipt.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file",
        "report"
      ],
      "sample_input": "JPG photo containing EXIF APP1 metadata with a GPS directory and camera model fields.",
      "expected_output": "The cleaner should report GPS/EXIF before processing, export a clean JPG/PNG/WebP copy, then show metadata_after.exif_marker=false and metadata_after.gps_directory=false.",
      "acceptance_checks": [
        "Real browser file upload path is used, not a static claim.",
        "The source file is scanned before canvas re-encoding.",
        "The exported blob is scanned again so the after-check proves common metadata markers were removed.",
        "The result includes a copyable privacy receipt and a not-for legal evidence boundary."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for legal redaction, forensic evidence, archival preservation, face/license-plate blurring, or recovering hidden information.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "remove exif",
        "remove metadata from photo",
        "remove gps from photo",
        "photo privacy cleaner",
        "strip exif online",
        "clean photo before posting",
        "remove camera data from image",
        "image metadata remover"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/kits/image-upload-conversion-kit/",
      "category_hub_url": "https://fasttool.app/image-optimization-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/image-metadata-stripper/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/file-readiness-checker/",
        "https://fasttool.app/tools/image-compressor/",
        "https://fasttool.app/proof-pack-builder/"
      ],
      "quality_badge": "Reviewed"
    },
    {
      "schema_version": "2026-06-18",
      "tool_slug": "generative-visual-asset-studio",
      "name": "Generative Visual Asset Studio",
      "canonical_url": "https://fasttool.app/tools/generative-visual-asset-studio/",
      "category": "Design",
      "summary": "Create seedable procedural visuals for thumbnails, hero backgrounds, prompt cards, and brand-safe motion stills with PNG, SVG, CSS, and JSON replay output.",
      "reviewed": true,
      "reviewed_at": "2026-06-18",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "seed"
      ],
      "output_modes": [
        "visible_canvas",
        "png_export",
        "svg_export",
        "css_snippet",
        "json_receipt"
      ],
      "sample_input": "Preset: editorial aurora. Seed: fasttool-creative-lab. Size: 1200 x 630. Title: Launch Proof. Palette: teal, ink, gold.",
      "expected_output": "The studio should render a nonblank 1200 x 630 visual, show seed replay data, pass a contrast/readability check, and export PNG/SVG/CSS plus JSON receipt.",
      "acceptance_checks": [
        "Uses a deterministic seed so the same visual can be recreated.",
        "Checks nonblank canvas pixels, contrast, dimensions, and export byte size.",
        "Outputs a replay receipt instead of a one-off decorative image."
      ],
      "privacy_boundary": "Use public, low-risk drafts or local sample files first. Processing runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for brand identity approval, legal advertising proof, copyrighted character art, or replacing a professional campaign design review.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench select",
          "#toolWorkbench canvas"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output",
          "canvas",
          "svg"
        ],
        "completion_signal": "Report the visible output, copy or summarize the JSON proof receipt, and compare the result with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the exact sample or user input used, report the visible output, copy or summarize the JSON proof receipt, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "generative visual asset studio",
        "procedural thumbnail generator",
        "seeded background generator",
        "ai prompt card visual maker",
        "creative coding visual generator",
        "browser generative art export"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/kits/creative-output-lab/",
      "category_hub_url": "https://fasttool.app/design-color-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/generative-visual-asset-studio/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/kits/creative-output-lab/",
        "https://fasttool.app/tools/audio-reactive-visual-clip-maker/",
        "https://fasttool.app/tools/seamless-svg-pattern-tile-lab/",
        "https://fasttool.app/tools/open-graph-image-proof-composer/",
        "https://fasttool.app/tools/prompt-injection-defense-arena/"
      ],
      "quality_badge": "Creative Lab",
      "receipt_schema": "creative-output-receipt/v1"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "google-snippet-preview",
      "name": "Google Snippet Preview",
      "canonical_url": "https://fasttool.app/tools/google-snippet-preview/",
      "category": "SEO",
      "summary": "Preview exactly how your page title, URL, and meta description will appear in Google search results before publishing. Instantly spot truncation issues, optimize for click-through rates, and fine-tune your SEO metadata with real-time character counts.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "report"
      ],
      "sample_input": "Preview title 'JPG to PDF Converter' and description 'Convert images into one PDF locally with ordering and margin controls.'",
      "expected_output": "The preview should show likely title and description length/truncation so the page promise can be checked before publishing.",
      "acceptance_checks": [
        "Focuses on snippet fit and promise matching, not ranking guarantees.",
        "Complements meta-tag-generator and title/meta length tools.",
        "Supports the task route for writing a Google snippet before publishing."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for guaranteed rankings, CTR promises, or hiding weak page content behind polished metadata.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "google snippet preview",
        "write meta description",
        "title tag checker",
        "seo snippet length",
        "meta title checker",
        "open graph preview",
        "seo preflight checklist",
        "open graph preview",
        "social share image preview",
        "og image size",
        "preview title description image",
        "social preview checker",
        "og image preview",
        "check link preview before sharing"
      ],
      "primary_finish_routes": [
        {
          "title": "Check a Google Snippet Before Publishing",
          "url": "https://fasttool.app/finish/check-google-snippet-before-publish/",
          "run_sheet_url": "https://fasttool.app/finish/check-google-snippet-before-publish/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/google-publishing-preflight-kit/",
      "category_hub_url": "https://fasttool.app/ai-agent-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/google-snippet-preview/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/meta-tag-generator/",
        "https://fasttool.app/tools/image-resizer/",
        "https://fasttool.app/tools/color-contrast-checker/",
        "https://fasttool.app/tasks/prepare-open-graph-image-and-preview/",
        "https://fasttool.app/tools/readability-checker/",
        "https://fasttool.app/tools/word-character-counter/",
        "https://fasttool.app/tasks/write-a-google-snippet-before-publishing/",
        "https://fasttool.app/tools/image-compressor/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "hash-generator",
      "name": "Hash Generator (SHA/MD5)",
      "canonical_url": "https://fasttool.app/tools/hash-generator/",
      "category": "Security",
      "summary": "Generate MD5, SHA-1, SHA-256, SHA-384, SHA-512 hashes for text or files. HMAC mode, compare hashes, drag-and-drop file hashing, uppercase/lowercase toggle.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Text: FastTool. Algorithm: SHA-256.",
      "expected_output": "Same input and algorithm should always produce the same hash; a one-character change should produce a different hash.",
      "acceptance_checks": [
        "Determinism check catches accidental salting or encoding drift.",
        "Compare mode helps verify pasted hashes.",
        "File mode and text mode are kept conceptually separate."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not password storage design, encryption, malware analysis, or proof of legal file custody.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "generate password",
        "generate uuid",
        "hash text",
        "url encode",
        "base64 decode",
        "qr code generator",
        "url encode link",
        "create qr for url",
        "decode jwt without sharing secret",
        "inspect jwt payload",
        "jwt decoder safe",
        "read jwt claims",
        "create strong password workflow",
        "generate password and uuid"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/tool-finder/",
      "category_hub_url": "https://fasttool.app/fast-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/hash-generator/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/uuid-generator/",
        "https://fasttool.app/tools/url-encoder-decoder/",
        "https://fasttool.app/tools/base64-encoder-decoder/",
        "https://fasttool.app/tools/jwt-decoder/",
        "https://fasttool.app/tasks/generate-security-values/",
        "https://fasttool.app/tasks/create-safe-qr-link/",
        "https://fasttool.app/tools/json-formatter/",
        "https://fasttool.app/tasks/decode-jwt-without-sharing-secret/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "heic-to-jpg",
      "name": "HEIC to JPG Converter",
      "canonical_url": "https://fasttool.app/tools/heic-to-jpg/",
      "category": "Image",
      "summary": "Convert iPhone HEIC/HEIF photos to JPG format instantly in your browser. Batch support with adjustable quality. Browser-side where supported.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file",
        "report"
      ],
      "sample_input": "Convert a harmless iPhone HEIC photo sample to JPG under a 5 MB upload limit.",
      "expected_output": "The output should open as JPG, preserve orientation, and remain acceptable for the destination form.",
      "acceptance_checks": [
        "Explains browser support limitations before real photos are used.",
        "Keeps the original HEIC until upload succeeds.",
        "Solves a common upload-compatibility task."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for legal evidence, medical images, archival masters, or recovering lost image detail.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "heic to jpg",
        "convert iphone photo to jpg",
        "heic upload not accepted",
        "jpg photo compressor",
        "heic to jpg for upload",
        "form does not accept heic",
        "make heic smaller"
      ],
      "primary_finish_routes": [
        {
          "title": "Convert HEIC Photos to JPG for a Form Upload",
          "url": "https://fasttool.app/finish/convert-heic-to-jpg-for-form-upload/",
          "run_sheet_url": "https://fasttool.app/finish/convert-heic-to-jpg-for-form-upload/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/image-upload-conversion-kit/",
      "category_hub_url": "https://fasttool.app/image-optimization-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/heic-to-jpg/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/image-compressor/",
        "https://fasttool.app/tools/image-resizer/",
        "https://fasttool.app/tools/jpg-to-webp/",
        "https://fasttool.app/tasks/convert-heic-photos-to-jpg-for-upload/",
        "https://fasttool.app/tools/jpg-to-pdf/",
        "https://fasttool.app/tools/image-to-pdf/",
        "https://fasttool.app/finish/convert-heic-to-jpg-for-form-upload/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "html-minifier",
      "name": "HTML Minifier & Beautifier",
      "canonical_url": "https://fasttool.app/tools/html-minifier/",
      "category": "Developer",
      "summary": "Minify or beautify HTML code with syntax highlighting, line numbers, size stats, and live preview — paste, upload, or drop an .html file.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "HTML: <div class=\"card\">\\n  <h1>Hello</h1>\\n</div>",
      "expected_output": "Minified output should keep div.card and h1 content while removing unnecessary whitespace.",
      "acceptance_checks": [
        "Fixture protects tag and attribute preservation.",
        "Live preview can catch broken markup quickly.",
        "Beautify mode should make the same HTML readable again."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for sanitizing untrusted HTML, fixing XSS, or replacing a production HTML pipeline.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "html css js minifier",
        "minify code before publish",
        "minify html online",
        "frontend snippet minifier",
        "css minifier",
        "javascript minifier",
        "html minifier",
        "sql formatter",
        "seo preflight checklist",
        "check page quality before publishing",
        "compress image before publishing",
        "readability check",
        "convert html to pdf in browser",
        "html invoice to pdf"
      ],
      "primary_finish_routes": [
        {
          "title": "Minify HTML, CSS, and JavaScript Before Publishing",
          "url": "https://fasttool.app/finish/minify-html-css-js-before-publish/",
          "run_sheet_url": "https://fasttool.app/finish/minify-html-css-js-before-publish/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/tool-finder/",
      "category_hub_url": "https://fasttool.app/json-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/html-minifier/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/javascript-minifier/",
        "https://fasttool.app/tools/sql-formatter/",
        "https://fasttool.app/tasks/clean-code-snippets/",
        "https://fasttool.app/tools/readability-checker/",
        "https://fasttool.app/tools/image-compressor/",
        "https://fasttool.app/tools/color-contrast-checker/",
        "https://fasttool.app/tasks/publish-preflight-check/",
        "https://fasttool.app/tools/pdf-compressor/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "html-to-pdf",
      "name": "HTML to PDF Converter",
      "canonical_url": "https://fasttool.app/tools/html-to-pdf/",
      "category": "Document",
      "summary": "Convert raw HTML or local .html files to PDF with preview, CSS controls, and browser-only export.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file"
      ],
      "sample_input": "HTML: <h1>Invoice</h1><p>Total: 5</p>",
      "expected_output": "PDF output should contain the heading Invoice and the total text in a readable layout.",
      "acceptance_checks": [
        "Tiny HTML fixture isolates conversion from styling complexity.",
        "Preview should match the downloaded PDF content.",
        "Output should open as a standard PDF file."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for signed documents, exact print compliance, invoices that require tax validation, or confidential records.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "convert html to pdf in browser",
        "html invoice to pdf",
        "save html as pdf online",
        "web page html to pdf",
        "html to pdf",
        "convert webpage to pdf",
        "save html as pdf",
        "web page pdf export",
        "merge pdf files",
        "compress pdf before email",
        "convert html to pdf",
        "extract text from pdf",
        "split pdf pages",
        "excel to pdf"
      ],
      "primary_finish_routes": [
        {
          "title": "Convert an HTML Page to PDF Before Sharing",
          "url": "https://fasttool.app/finish/convert-html-page-to-pdf-before-sharing/",
          "run_sheet_url": "https://fasttool.app/finish/convert-html-page-to-pdf-before-sharing/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/pdf-cleanup-rescue-kit/",
      "category_hub_url": "https://fasttool.app/pdf-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/html-to-pdf/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/pdf-compressor/",
        "https://fasttool.app/tools/pdf-splitter/",
        "https://fasttool.app/tools/pdf-text-extractor/",
        "https://fasttool.app/tools/pdf-to-image/",
        "https://fasttool.app/tasks/prepare-pdf-packet/",
        "https://fasttool.app/tools/powerpoint-to-pdf/",
        "https://fasttool.app/tasks/convert-office-to-pdf/",
        "https://fasttool.app/tools/html-minifier/"
      ],
      "quality_badge": "New"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "image-compressor",
      "name": "Image Compressor",
      "canonical_url": "https://fasttool.app/tools/image-compressor/",
      "category": "Image",
      "summary": "Compress images in your browser, reduce file size while keeping quality.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "One sample JPG around 1 MB, quality set to 70%.",
      "expected_output": "Output file should be smaller than the input while still displaying the same image content.",
      "acceptance_checks": [
        "Checks file-size reduction and visual preview together.",
        "Quality slider gives a repeatable compression setting.",
        "Download name and image type should be clear to the user."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for archival masters, forensic evidence, medical imaging, or lossless preservation.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "make image smaller",
        "compress image for website",
        "resize image for upload",
        "jpg to webp",
        "webp to jpg",
        "compress image for upload",
        "make photo smaller for form",
        "reduce jpg size",
        "resize image under 1mb",
        "remove exif",
        "remove metadata from photo",
        "remove gps from photo",
        "photo privacy cleaner",
        "strip exif online"
      ],
      "primary_finish_routes": [
        {
          "title": "Compress an Image for a Form Upload",
          "url": "https://fasttool.app/finish/compress-image-for-form-upload/",
          "run_sheet_url": "https://fasttool.app/finish/compress-image-for-form-upload/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/image-upload-conversion-kit/",
      "category_hub_url": "https://fasttool.app/image-optimization-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/image-compressor/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/image-resizer/",
        "https://fasttool.app/tools/bulk-image-resizer/",
        "https://fasttool.app/tools/jpg-to-webp/",
        "https://fasttool.app/tools/webp-to-jpg/",
        "https://fasttool.app/tools/png-to-jpg/",
        "https://fasttool.app/tasks/make-image-smaller/",
        "https://fasttool.app/file-readiness-checker/",
        "https://fasttool.app/proof-pack-builder/"
      ],
      "quality_badge": "Popular"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "image-resizer",
      "name": "Image Resizer",
      "canonical_url": "https://fasttool.app/tools/image-resizer/",
      "category": "Image",
      "summary": "Resize images to any dimension instantly in your browser.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Image: 1200 x 800 px. Target width: 600 px. Keep aspect ratio.",
      "expected_output": "Output should be about 600 x 400 px.",
      "acceptance_checks": [
        "Simple 3:2 image makes aspect-ratio math easy.",
        "Preview plus downloaded dimensions can be checked independently.",
        "Aspect-ratio lock should prevent stretching."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for print DPI proofing, legal image evidence, or professional color-managed resizing.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "resize image for social card",
        "1200x630 image resize",
        "compress social image",
        "aspect ratio social image",
        "resize profile picture",
        "make square profile image",
        "compress profile photo",
        "social avatar image size",
        "profile picture size converter",
        "crop image for profile",
        "make avatar image smaller",
        "resize headshot online",
        "bulk image resizer",
        "resize product images"
      ],
      "primary_finish_routes": [
        {
          "title": "Resize Bulk Images for a Product Listing",
          "url": "https://fasttool.app/finish/resize-bulk-images-for-product-listing/",
          "run_sheet_url": "https://fasttool.app/finish/resize-bulk-images-for-product-listing/#smart-run-sheet"
        },
        {
          "title": "Resize a Profile Picture for Social Upload",
          "url": "https://fasttool.app/finish/resize-profile-picture-for-social-upload/",
          "run_sheet_url": "https://fasttool.app/finish/resize-profile-picture-for-social-upload/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/image-upload-conversion-kit/",
      "category_hub_url": "https://fasttool.app/image-optimization-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/image-resizer/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/bulk-image-resizer/",
        "https://fasttool.app/tools/jpg-to-webp/",
        "https://fasttool.app/tools/webp-to-jpg/",
        "https://fasttool.app/tools/png-to-jpg/",
        "https://fasttool.app/tasks/make-image-smaller/",
        "https://fasttool.app/tools/image-compressor/",
        "https://fasttool.app/tools/aspect-ratio-calculator/",
        "https://fasttool.app/tasks/resize-image-for-social-card/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "image-to-pdf",
      "name": "Image to PDF Converter",
      "canonical_url": "https://fasttool.app/tools/image-to-pdf/",
      "category": "Document",
      "summary": "Convert JPG, PNG, and WebP images into one ordered PDF in the browser with drag reorder, page size, margin, fit mode, and quality controls.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file"
      ],
      "sample_input": "Images: two small PNG or JPG files. Page size: A4. Fit: contain. Margin: 12 mm.",
      "expected_output": "Downloaded file should open as a PDF with both images in the selected order.",
      "acceptance_checks": [
        "Checks real PDF output, not only a preview.",
        "Drag reorder and page-size settings are visible before export.",
        "Output remains local to the browser and can be opened for verification."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for signed documents, legal evidence bundles, exact print color proofing, or confidential production files without your own review.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "turn photos into pdf",
        "make one pdf from images",
        "jpg to pdf for upload",
        "scan photos into pdf online",
        "extract images from pdf",
        "save pictures from pdf",
        "pdf image extractor",
        "pull images out of pdf",
        "download pdf images",
        "wifi qr code generator",
        "create guest wifi qr",
        "print wifi qr code",
        "wifi password qr",
        "jpg to pdf"
      ],
      "primary_finish_routes": [
        {
          "title": "Turn Photos Into One PDF for Upload",
          "url": "https://fasttool.app/finish/turn-photos-into-pdf-for-upload/",
          "run_sheet_url": "https://fasttool.app/finish/turn-photos-into-pdf-for-upload/#smart-run-sheet"
        },
        {
          "title": "Extract Images From a PDF for Review",
          "url": "https://fasttool.app/finish/extract-images-from-pdf-for-review/",
          "run_sheet_url": "https://fasttool.app/finish/extract-images-from-pdf-for-review/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/pdf-cleanup-rescue-kit/",
      "category_hub_url": "https://fasttool.app/pdf-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/image-to-pdf/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/qr-code-generator/",
        "https://fasttool.app/tools/password-generator/",
        "https://fasttool.app/tools/color-contrast-checker/",
        "https://fasttool.app/tasks/create-guest-wifi-qr-code/",
        "https://fasttool.app/tools/pdf-page-rotator/",
        "https://fasttool.app/tools/pdf-page-remover/",
        "https://fasttool.app/tools/pdf-compressor/",
        "https://fasttool.app/tasks/turn-photos-into-one-pdf/"
      ],
      "quality_badge": "Popular"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "internal-link-graph-builder",
      "name": "Internal Link Graph Builder",
      "canonical_url": "https://fasttool.app/tools/internal-link-graph-builder/",
      "category": "SEO",
      "summary": "Force-directed internal link graph with PageRank-ranked hubs, orphan page detection, and cluster analysis. Exports SVG.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "report"
      ],
      "sample_input": "https://fasttool.app/|https://fasttool.app/ai-agent-tools/\nhttps://fasttool.app/ai-agent-tools/|https://fasttool.app/tools/ai-crawler-policy-builder/",
      "expected_output": "The report should identify hubs, orphan-like URLs, cluster balance, and routes needing stronger links.",
      "acceptance_checks": [
        "Turns internal linking into visible graph checks.",
        "Helps agents and crawlers find high-value pages faster.",
        "Keeps the output based on pasted routes, not hidden crawl claims."
      ],
      "privacy_boundary": "Use public, low-risk rows or sample content first. The tool runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for full enterprise crawling, JavaScript-rendered link discovery, PageRank guarantees, or backlink analysis.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "open graph preview",
        "social preview checker",
        "og image preview",
        "check link preview before sharing",
        "ai agent tools",
        "agent ready page",
        "browser agent page audit",
        "ai crawler policy",
        "chatgpt search visibility",
        "answer engine visibility",
        "ai overview visibility",
        "llm ready content",
        "prompt injection scanner",
        "rag chunk quality"
      ],
      "primary_finish_routes": [
        {
          "title": "Prepare an Open Graph Image and Social Preview",
          "url": "https://fasttool.app/finish/prepare-og-image-and-social-preview/",
          "run_sheet_url": "https://fasttool.app/finish/prepare-og-image-and-social-preview/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/google-publishing-preflight-kit/",
      "category_hub_url": "https://fasttool.app/ai-agent-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/internal-link-graph-builder/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/ai-traffic-source-classifier/",
        "https://fasttool.app/tools/agent-output-evaluator/",
        "https://fasttool.app/tools/ai-agent-page-auditor/",
        "https://fasttool.app/tools/ai-crawler-policy-builder/",
        "https://fasttool.app/tools/query-fanout-simulator/",
        "https://fasttool.app/tools/ai-citation-readiness-checker/",
        "https://fasttool.app/tools/aio-visibility-scorer/",
        "https://fasttool.app/tools/llm-ready-content-scorer/"
      ],
      "quality_badge": "New"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "invoice-generator",
      "name": "Invoice Generator",
      "canonical_url": "https://fasttool.app/tools/invoice-generator/",
      "category": "Business",
      "summary": "Create a professional invoice with company details, line items, tax, discount, notes, payment details, preview, print, and direct PDF download.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file",
        "report"
      ],
      "sample_input": "One line item: Consulting, qty 2, unit price 100, tax 10%, discount 0%.",
      "expected_output": "Invoice total should be 220.00 in the selected currency and the PDF download should preserve the previewed invoice.",
      "acceptance_checks": [
        "Independent subtotal and tax math are easy to verify.",
        "Preview, print, and direct PDF download use the same invoice content.",
        "Payment and notes sections are optional and visible before export."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for tax advice, legal invoicing compliance, audited accounting, payment collection, or storing sensitive client data.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "create invoice pdf",
        "free invoice generator",
        "send client invoice pdf",
        "invoice with tax and discount",
        "invoice pdf for client",
        "make invoice and check total"
      ],
      "primary_finish_routes": [
        {
          "title": "Create a Client Invoice PDF and Check the Totals",
          "url": "https://fasttool.app/finish/create-invoice-pdf-for-client/",
          "run_sheet_url": "https://fasttool.app/finish/create-invoice-pdf-for-client/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/client-invoice-payment-kit/",
      "category_hub_url": "https://fasttool.app/fast-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/invoice-generator/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/html-to-pdf/",
        "https://fasttool.app/tools/word-to-pdf/",
        "https://fasttool.app/tools/pdf-compressor/",
        "https://fasttool.app/tools/pdf-merger/",
        "https://fasttool.app/tasks/create-client-invoice-pdf/",
        "https://fasttool.app/tools/percentage-calculator/",
        "https://fasttool.app/finish/create-invoice-pdf-for-client/"
      ],
      "quality_badge": "Upgraded"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "javascript-minifier",
      "name": "JavaScript Minifier & Beautifier",
      "canonical_url": "https://fasttool.app/tools/javascript-minifier/",
      "category": "Developer",
      "summary": "Minify or beautify JavaScript code with syntax highlighting, line numbers, and size stats — paste, upload, or drop a .js file and get optimized output instantly.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "JS: function add(a, b) { return a + b; }",
      "expected_output": "Minified output should keep the add function behavior while removing unnecessary whitespace.",
      "acceptance_checks": [
        "Small fixture makes behavior preservation easy to reason about.",
        "Beautify mode should restore readable formatting.",
        "Syntax errors should be surfaced instead of hidden."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for transpiling TypeScript, bundling modules, security auditing, or replacing a production build step.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "minify css js html before publish",
        "compress front end code",
        "javascript css html minifier",
        "minify static website",
        "css minifier",
        "javascript minifier",
        "html minifier",
        "sql formatter",
        "html css js minifier",
        "minify code before publish",
        "minify html online",
        "frontend snippet minifier"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/tool-finder/",
      "category_hub_url": "https://fasttool.app/json-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/javascript-minifier/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/html-minifier/",
        "https://fasttool.app/tools/sql-formatter/",
        "https://fasttool.app/tasks/clean-code-snippets/",
        "https://fasttool.app/tools/css-minifier/",
        "https://fasttool.app/tools/regex-tester/",
        "https://fasttool.app/tasks/minify-front-end-before-publish/",
        "https://fasttool.app/tools/google-snippet-preview/",
        "https://fasttool.app/tools/text-diff/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "jpg-to-pdf",
      "name": "JPG to PDF Converter",
      "canonical_url": "https://fasttool.app/tools/jpg-to-pdf/",
      "category": "Document",
      "summary": "Convert JPG, PNG, or WebP images into a downloadable PDF with drag reorder, fit-to-image, A4 or Letter page sizing, orientation, and margin controls.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file"
      ],
      "sample_input": "Images: two small JPG files. Page size: A4. Margin: small.",
      "expected_output": "Downloaded PDF should contain two pages in the selected order and open as a standard PDF.",
      "acceptance_checks": [
        "Checks real PDF download, not only preview state.",
        "Drag reorder, page sizing, orientation, and margin controls are visible before export.",
        "Output can be verified by opening the generated PDF and checking page count."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for signed documents, evidence preservation, exact print color proofing, or confidential production files without your own review.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "jpg to pdf",
        "turn photos into pdf",
        "combine images into pdf",
        "receipt photos to pdf",
        "make one pdf from images",
        "jpg to pdf for upload",
        "scan photos into pdf online",
        "heic to jpg for upload",
        "convert iphone photo to jpg",
        "form does not accept heic",
        "make heic smaller"
      ],
      "primary_finish_routes": [
        {
          "title": "Turn Photos Into One PDF for Upload",
          "url": "https://fasttool.app/finish/turn-photos-into-pdf-for-upload/",
          "run_sheet_url": "https://fasttool.app/finish/turn-photos-into-pdf-for-upload/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/pdf-cleanup-rescue-kit/",
      "category_hub_url": "https://fasttool.app/pdf-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/jpg-to-pdf/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/image-to-pdf/",
        "https://fasttool.app/tools/pdf-page-rotator/",
        "https://fasttool.app/tools/pdf-page-remover/",
        "https://fasttool.app/tools/pdf-compressor/",
        "https://fasttool.app/tasks/turn-photos-into-one-pdf/",
        "https://fasttool.app/tools/image-compressor/",
        "https://fasttool.app/tools/image-resizer/",
        "https://fasttool.app/finish/convert-heic-to-jpg-for-form-upload/"
      ],
      "quality_badge": "Popular"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "jpg-to-webp",
      "name": "JPG to WebP Converter",
      "canonical_url": "https://fasttool.app/tools/jpg-to-webp/",
      "category": "Image",
      "summary": "Convert JPG images to WebP format with adjustable quality. Smaller file size, same visual quality.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file"
      ],
      "sample_input": "One sample JPG photo, quality 80%.",
      "expected_output": "Output should download as WebP and visually match the source with a smaller or comparable file size.",
      "acceptance_checks": [
        "Checks format change and visible preview, not only a download event.",
        "Quality setting is explicit and repeatable.",
        "File extension should match the chosen output format."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for legal evidence conversion, medical images, or guaranteed archival compatibility.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "convert image to webp for website",
        "jpg to webp online",
        "webp to jpg fallback",
        "png to jpg for web",
        "webp to jpg",
        "jpg to webp",
        "png to webp",
        "convert image for website",
        "make web image smaller",
        "make image smaller",
        "compress image for website",
        "resize image for upload",
        "jpg to webp",
        "webp to jpg"
      ],
      "primary_finish_routes": [
        {
          "title": "Convert WebP, JPG, or PNG for a Website",
          "url": "https://fasttool.app/finish/convert-webp-jpg-png-for-website/",
          "run_sheet_url": "https://fasttool.app/finish/convert-webp-jpg-png-for-website/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/image-upload-conversion-kit/",
      "category_hub_url": "https://fasttool.app/image-optimization-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/jpg-to-webp/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/image-resizer/",
        "https://fasttool.app/tools/bulk-image-resizer/",
        "https://fasttool.app/tools/webp-to-jpg/",
        "https://fasttool.app/tools/png-to-jpg/",
        "https://fasttool.app/tasks/make-image-smaller/",
        "https://fasttool.app/tools/image-compressor/",
        "https://fasttool.app/tools/aspect-ratio-calculator/",
        "https://fasttool.app/tasks/resize-image-for-social-card/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "json-formatter",
      "name": "JSON Formatter & Validator",
      "canonical_url": "https://fasttool.app/tools/json-formatter/",
      "category": "Developer",
      "summary": "Format, minify, and validate JSON with syntax highlighting, tree view, JSON path on click, error detection with line/column, stats, and file upload/download.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file"
      ],
      "sample_input": "JSON: {\"name\":\"FastTool\",\"tags\":[\"json\",\"tool\"],\"active\":true}",
      "expected_output": "Formatted output should be valid indented JSON with the same keys and values.",
      "acceptance_checks": [
        "Known-valid JSON catches formatter regressions without relying on guesswork.",
        "Minify and format should preserve data identity.",
        "Validation errors should include a clear line or character hint for bad JSON."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for secrets, access tokens, private customer records, or regulated data.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "fix invalid json",
        "format api response",
        "convert yaml to json",
        "csv to json cleanup",
        "decode jwt safely",
        "validate json before api call",
        "check request body json",
        "fix json payload",
        "api json formatter",
        "fix json error",
        "json validator",
        "api response formatter",
        "unexpected token json",
        "convert csv to json for spreadsheet"
      ],
      "primary_finish_routes": [
        {
          "title": "Fix a JSON API Error Fast",
          "url": "https://fasttool.app/finish/fix-json-api-error-fast/",
          "run_sheet_url": "https://fasttool.app/finish/fix-json-api-error-fast/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/api-debugging-request-kit/",
      "category_hub_url": "https://fasttool.app/json-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/json-formatter/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/yaml-to-json/",
        "https://fasttool.app/tools/csv-to-json/",
        "https://fasttool.app/tools/regex-tester/",
        "https://fasttool.app/tools/base64-encoder-decoder/",
        "https://fasttool.app/tools/jwt-decoder/",
        "https://fasttool.app/tasks/fix-invalid-json/",
        "https://fasttool.app/tasks/validate-json-before-api-call/",
        "https://fasttool.app/tools/json-to-csv/"
      ],
      "quality_badge": "Popular"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "json-to-csv",
      "name": "JSON to CSV",
      "canonical_url": "https://fasttool.app/tools/json-to-csv/",
      "category": "Data",
      "summary": "Convert JSON arrays to CSV format and download.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file",
        "report"
      ],
      "sample_input": "JSON: [{\"name\":\"Ada\",\"score\":10},{\"name\":\"Lin\",\"score\":9}]",
      "expected_output": "CSV should include name and score headers with two data rows.",
      "acceptance_checks": [
        "Array-of-objects fixture maps cleanly to CSV headers.",
        "Row count should stay two after conversion.",
        "Download and copy outputs should match the preview."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for private exports, nested enterprise data, or compliance-grade data transformation.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "csv to json",
        "json to csv",
        "yaml to json",
        "convert data for automation",
        "format structured data",
        "convert csv to json for spreadsheet",
        "json to csv table",
        "csv json round trip",
        "spreadsheet json cleanup",
        "excel to pdf",
        "convert spreadsheet to pdf",
        "print excel table as pdf",
        "xlsx to pdf online",
        "extract table from pdf"
      ],
      "primary_finish_routes": [
        {
          "title": "Convert CSV, JSON, or YAML for Automation",
          "url": "https://fasttool.app/finish/convert-csv-json-yaml-for-automation/",
          "run_sheet_url": "https://fasttool.app/finish/convert-csv-json-yaml-for-automation/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/api-debugging-request-kit/",
      "category_hub_url": "https://fasttool.app/json-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/json-to-csv/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/json-formatter/",
        "https://fasttool.app/tools/yaml-to-json/",
        "https://fasttool.app/tools/word-character-counter/",
        "https://fasttool.app/tasks/convert-csv-json-for-spreadsheet/",
        "https://fasttool.app/tools/csv-to-json/",
        "https://fasttool.app/tools/pdf-compressor/",
        "https://fasttool.app/tasks/convert-excel-report-to-pdf/",
        "https://fasttool.app/tools/excel-to-pdf/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "jwt-decoder",
      "name": "JWT Decoder",
      "canonical_url": "https://fasttool.app/tools/jwt-decoder/",
      "category": "Security",
      "summary": "Decode and inspect JWT tokens with color-coded header, payload, and signature sections. Check expiry status, verify HMAC-SHA256 signatures, and explore common JWT claims.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Dummy JWT with header {alg: HS256} and payload {sub: demo, exp: 4102444800}.",
      "expected_output": "Decoder should show readable header and payload. It should not claim trust unless signature verification is configured.",
      "acceptance_checks": [
        "Fixture separates decoding from verification.",
        "Expiry display should be based on the exp claim.",
        "Warnings should make unsigned or unverified tokens clear."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for trusting login sessions, bypassing auth, storing tokens, or validating production security without server-side verification.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "decode jwt without sharing secret",
        "inspect jwt payload",
        "jwt decoder safe",
        "read jwt claims",
        "jwt decoder",
        "decode jwt payload",
        "inspect jwt claims",
        "jwt expired check",
        "decode bearer token",
        "fix invalid json",
        "format api response",
        "convert yaml to json",
        "csv to json cleanup",
        "decode jwt safely"
      ],
      "primary_finish_routes": [
        {
          "title": "Decode a JWT Before Debugging an API",
          "url": "https://fasttool.app/finish/decode-jwt-before-debugging-api/",
          "run_sheet_url": "https://fasttool.app/finish/decode-jwt-before-debugging-api/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/api-debugging-request-kit/",
      "category_hub_url": "https://fasttool.app/fast-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/jwt-decoder/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/yaml-to-json/",
        "https://fasttool.app/tools/csv-to-json/",
        "https://fasttool.app/tools/regex-tester/",
        "https://fasttool.app/tools/base64-encoder-decoder/",
        "https://fasttool.app/tasks/fix-invalid-json/",
        "https://fasttool.app/tools/uuid-generator/",
        "https://fasttool.app/tools/hash-generator/",
        "https://fasttool.app/tools/url-encoder-decoder/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "keyword-cannibalization-detector",
      "name": "Keyword Cannibalization Detector",
      "canonical_url": "https://fasttool.app/tools/keyword-cannibalization-detector/",
      "category": "SEO",
      "summary": "TF-IDF cosine similarity between two pages targeting the same keyword. Identifies merge vs differentiate opportunities.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "report"
      ],
      "sample_input": "fast tools|/fast-tools/\nfree online tools|/best-free-tools/\nai agent tools|/ai-agent-tools/",
      "expected_output": "The report should flag likely overlap, suggest primary URLs, and recommend merge, redirect, or differentiation actions.",
      "acceptance_checks": [
        "Checks intent overlap before adding more thin pages.",
        "Protects strong hubs from being split across duplicate targets.",
        "Outputs routing decisions instead of generic keyword stuffing advice."
      ],
      "privacy_boundary": "Use public, low-risk rows or sample content first. The tool runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for live ranking diagnosis, private Search Console analysis, backlink scoring, or guaranteed canonical selection.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "ai agent tools",
        "agent ready page",
        "browser agent page audit",
        "ai crawler policy",
        "chatgpt search visibility",
        "answer engine visibility",
        "ai overview visibility",
        "llm ready content",
        "prompt injection scanner",
        "rag chunk quality"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/kits/ai-traffic-reality-kit/",
      "category_hub_url": "https://fasttool.app/pdf-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/keyword-cannibalization-detector/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/ai-traffic-source-classifier/",
        "https://fasttool.app/tools/agent-output-evaluator/",
        "https://fasttool.app/tools/ai-agent-page-auditor/",
        "https://fasttool.app/tools/ai-crawler-policy-builder/",
        "https://fasttool.app/tools/query-fanout-simulator/",
        "https://fasttool.app/tools/ai-citation-readiness-checker/",
        "https://fasttool.app/tools/aio-visibility-scorer/",
        "https://fasttool.app/tools/llm-ready-content-scorer/"
      ],
      "quality_badge": "New"
    },
    {
      "schema_version": "2026-06-18",
      "tool_slug": "lcm-calculator",
      "name": "LCM Calculator",
      "canonical_url": "https://fasttool.app/tools/lcm-calculator/",
      "category": "Math",
      "summary": "Find the least common multiple for two or more numbers with GCD, prime-factor steps, multiples proof, and a copyable calculation receipt.",
      "reviewed": true,
      "reviewed_at": "2026-06-18",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "numbers",
        "textarea"
      ],
      "output_modes": [
        "numeric_result",
        "steps",
        "json_receipt"
      ],
      "sample_input": "Numbers: 12, 18, 30",
      "expected_output": "LCM should be 180, GCD should be 6, and the prime factor proof should show 2^2 × 3^2 × 5.",
      "acceptance_checks": [
        "Uses exact integer arithmetic for normal classroom and work values.",
        "Shows GCD, prime-factor proof, and common-multiple verification instead of only one headline number.",
        "Supports more than two numbers because real LCM tasks often involve schedules, fractions, and repeat intervals."
      ],
      "privacy_boundary": "Use public, low-risk sample values first. Calculations run in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for cryptographic number theory, arbitrary-precision research math, legal/tax decisions, or values too large to verify in a browser.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench select"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          ".stats-grid",
          "table",
          "[data-tool-result]"
        ],
        "completion_signal": "Report the visible result, summarize the steps or schedule, copy or summarize the JSON receipt, and compare with expected_output."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the exact sample or user input used, report the visible output, copy or summarize the JSON proof receipt, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "lcm calculator",
        "least common multiple calculator",
        "lcm of numbers",
        "find lcm with steps",
        "gcd and lcm calculator"
      ],
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/lcm-calculator/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "quality_badge": "Search Demand"
    },
    {
      "schema_version": "2026-06-18",
      "tool_slug": "llm-output-schema-extractor",
      "name": "LLM Output Schema Extractor",
      "canonical_url": "https://fasttool.app/tools/llm-output-schema-extractor/",
      "category": "Developer",
      "summary": "Infer a production LLM output contract from JSON, fenced JSON, JSONL, or JSON-like samples with Draft 2020-12 schema, field ledger, optional-field confidence, parse warnings, JSON receipt, and hallucination-audit handoff.",
      "reviewed": true,
      "reviewed_at": "2026-06-18",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "json_receipt"
      ],
      "sample_input": "Paste three or more LLM JSON objects with status, priority, tags, nested metrics, optional fields, and repeated enum-like values.",
      "expected_output": "The tool should infer a copyable JSON Schema, field confidence ledger, enum candidates, optional fields, parse warnings, production output rules, and an output-contract receipt.",
      "acceptance_checks": [
        "Uses structured parsing and reports parse or repair limits.",
        "Makes optional fields, enum assumptions, and confidence visible.",
        "Outputs copyable JSON Schema plus a production output-contract receipt."
      ],
      "privacy_boundary": "Use public drafts or low-risk sample text first. The tool runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for validating untrusted production contracts, security schema review, or replacing tests around a real API.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the exact sample or user input used, report the visible result, copy or summarize the JSON receipt, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "agent workflow proof passport",
        "prompt rag quality runbook",
        "ai agent workflow receipt",
        "prompt injection gate",
        "json schema from llm output",
        "context window budget",
        "embedding duplicate chunks",
        "llm output contract",
        "schema confidence ledger",
        "structured output schema",
        "jsonl schema extractor",
        "rag chunk quality",
        "prepare rag chunks",
        "prompt injection scanner",
        "rag quality checker",
        "llm output schema extractor",
        "embedding similarity checker",
        "ai agent tools",
        "agent ready page",
        "browser agent page audit",
        "ai crawler policy",
        "chatgpt search visibility",
        "answer engine visibility",
        "ai overview visibility",
        "llm ready content"
      ],
      "primary_finish_routes": [
        {
          "title": "Prepare RAG Chunks Before Indexing",
          "url": "https://fasttool.app/finish/prepare-rag-chunks-before-indexing/",
          "run_sheet_url": "https://fasttool.app/finish/prepare-rag-chunks-before-indexing/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/prompt-rag-quality-kit/",
      "category_hub_url": "https://fasttool.app/ai-agent-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/llm-output-schema-extractor/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/kits/prompt-rag-quality-kit/",
        "https://fasttool.app/kits/prompt-rag-quality-kit/#workflow-console",
        "https://fasttool.app/tools/agent-task-contract-studio/",
        "https://fasttool.app/tools/context-window-budgeter/",
        "https://fasttool.app/tools/prompt-injection-scanner/",
        "https://fasttool.app/tools/rag-chunk-quality-scorer/",
        "https://fasttool.app/tools/embedding-similarity-explorer/",
        "https://fasttool.app/tools/llm-output-schema-extractor/",
        "https://fasttool.app/tools/ai-hallucination-likelihood-scorer/",
        "https://fasttool.app/tools/agent-output-evaluator/",
        "https://fasttool.app/tools/ai-traffic-source-classifier/",
        "https://fasttool.app/tools/ai-agent-page-auditor/",
        "https://fasttool.app/tools/ai-crawler-policy-builder/",
        "https://fasttool.app/tools/query-fanout-simulator/",
        "https://fasttool.app/tools/ai-citation-readiness-checker/",
        "https://fasttool.app/tools/aio-visibility-scorer/"
      ],
      "quality_badge": "New"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "llm-ready-content-scorer",
      "name": "LLM-Ready Content Scorer",
      "canonical_url": "https://fasttool.app/tools/llm-ready-content-scorer/",
      "category": "Writing",
      "summary": "Check if content is easy for LLMs to quote, summarize, retrieve, and use safely. Score chunkability, fact density, answerability, structure, and trust signals.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "report"
      ],
      "sample_input": "Target question: how do I compress a PDF under 10 MB? Paste a draft help page with steps, limits, examples, and source notes.",
      "expected_output": "The report should show LLM readiness, weak sections, missing trust signals, and practical edits that make the text easier to retrieve and cite.",
      "acceptance_checks": [
        "Uses visible text structure, facts, and query coverage as inspectable signals.",
        "Keeps the output advisory and avoids pretending to know private model behavior.",
        "Encourages human review for factual or regulated material."
      ],
      "privacy_boundary": "Use public drafts or low-risk sample text first. The tool runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for guaranteed chatbot citations, medical/legal/financial authority, or automatic publishing without editorial review.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "ai agent tools",
        "agent ready page",
        "browser agent page audit",
        "ai crawler policy",
        "chatgpt search visibility",
        "answer engine visibility",
        "ai overview visibility",
        "llm ready content",
        "prompt injection scanner",
        "rag chunk quality"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/tool-finder/",
      "category_hub_url": "https://fasttool.app/fast-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/llm-ready-content-scorer/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/ai-traffic-source-classifier/",
        "https://fasttool.app/tools/agent-output-evaluator/",
        "https://fasttool.app/tools/ai-agent-page-auditor/",
        "https://fasttool.app/tools/ai-crawler-policy-builder/",
        "https://fasttool.app/tools/query-fanout-simulator/",
        "https://fasttool.app/tools/ai-citation-readiness-checker/",
        "https://fasttool.app/tools/aio-visibility-scorer/",
        "https://fasttool.app/tools/eeat-audit-scorecard/"
      ],
      "quality_badge": "New"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "loan-calculator",
      "name": "Loan Calculator",
      "canonical_url": "https://fasttool.app/tools/loan-calculator/",
      "category": "Finance",
      "summary": "Calculate loan payments with SVG balance chart, amortization table, extra payment savings, and payoff date for monthly, biweekly, or weekly schedules.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Loan: 10000. APR: 7%. Term: 36 months.",
      "expected_output": "Monthly payment should be about 308.77 before lender fees.",
      "acceptance_checks": [
        "Independent amortization formula verifies the headline payment.",
        "Amortization table should reconcile with total principal and interest.",
        "Extra-payment settings can be tested after the baseline."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not lending advice, approval estimate, tax advice, or a binding quote from a lender.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "loan payment calculator",
        "mortgage payment estimate",
        "compound interest calculator",
        "percentage increase calculator",
        "compare loan mortgage interest scenarios",
        "loan vs mortgage calculator",
        "compound interest scenario",
        "monthly payment comparison",
        "compare loan scenarios",
        "monthly payment calculator",
        "calculate percentage change correctly",
        "percentage increase calculator",
        "old new value percentage",
        "percent change formula"
      ],
      "primary_finish_routes": [
        {
          "title": "Compare Loan and Mortgage Payment Scenarios",
          "url": "https://fasttool.app/finish/compare-loan-and-mortgage-payment-scenarios/",
          "run_sheet_url": "https://fasttool.app/finish/compare-loan-and-mortgage-payment-scenarios/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/loan-scenario-comparison-kit/",
      "category_hub_url": "https://fasttool.app/fast-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/loan-calculator/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/mortgage-calculator/",
        "https://fasttool.app/tools/compound-interest-calculator/",
        "https://fasttool.app/tools/percentage-calculator/",
        "https://fasttool.app/tasks/compare-finance-estimates/",
        "https://fasttool.app/tools/scientific-calculator/",
        "https://fasttool.app/tools/unit-converter/",
        "https://fasttool.app/tasks/calculate-percentage-change-correctly/",
        "https://fasttool.app/tasks/compare-loan-mortgage-interest-scenarios/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "markdown-table-generator",
      "name": "Markdown Table Generator",
      "canonical_url": "https://fasttool.app/tools/markdown-table-generator/",
      "category": "Writing",
      "summary": "Generate markdown tables from rows and columns input.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "report"
      ],
      "sample_input": "Convert rows Name, Plan, Price / Ava, Starter, 19 / Noah, Pro, 49 into a Markdown table.",
      "expected_output": "The Markdown output should preserve headers, two rows, escaped pipes, and render correctly in a preview.",
      "acceptance_checks": [
        "Uses row-count and header checks to catch malformed tables.",
        "Pairs with Markdown-to-HTML when publishing is needed.",
        "Supports a concrete data-to-table workflow."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for complex spreadsheets, formulas, regulated data exports, or schema validation.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "markdown table generator",
        "csv to markdown table",
        "create table for readme",
        "markdown table from data",
        "markdown table to html",
        "convert markdown table to html",
        "make clean html table"
      ],
      "primary_finish_routes": [
        {
          "title": "Convert a Markdown Table to Clean HTML",
          "url": "https://fasttool.app/finish/convert-markdown-table-to-clean-html/",
          "run_sheet_url": "https://fasttool.app/finish/convert-markdown-table-to-clean-html/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/tool-finder/",
      "category_hub_url": "https://fasttool.app/fast-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/markdown-table-generator/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/csv-to-json/",
        "https://fasttool.app/tools/markdown-to-html/",
        "https://fasttool.app/tools/word-character-counter/",
        "https://fasttool.app/tasks/create-a-markdown-table-from-data/",
        "https://fasttool.app/tools/html-minifier/",
        "https://fasttool.app/tools/text-diff/",
        "https://fasttool.app/finish/convert-markdown-table-to-clean-html/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "markdown-to-html",
      "name": "Markdown to HTML",
      "canonical_url": "https://fasttool.app/tools/markdown-to-html/",
      "category": "Writing",
      "summary": "Convert Markdown text to HTML output instantly.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Markdown: # Title\\n\\n- item",
      "expected_output": "HTML should include an h1 for Title and a list item for item.",
      "acceptance_checks": [
        "Fixture covers heading and list conversion.",
        "Preview should match the generated HTML text.",
        "Copy output should contain semantic tags."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for sanitizing untrusted HTML, publishing confidential drafts, or rendering unsupported Markdown extensions.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "convert markdown to clean html",
        "markdown to html for docs",
        "minify html after markdown",
        "markdown link check",
        "markdown table generator",
        "markdown table to html",
        "convert markdown table to html",
        "make clean html table",
        "count words and characters",
        "check readability",
        "summarize notes",
        "markdown to html",
        "convert text case",
        "extract text from pdf for notes"
      ],
      "primary_finish_routes": [
        {
          "title": "Convert a Markdown Table to Clean HTML",
          "url": "https://fasttool.app/finish/convert-markdown-table-to-clean-html/",
          "run_sheet_url": "https://fasttool.app/finish/convert-markdown-table-to-clean-html/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/tool-finder/",
      "category_hub_url": "https://fasttool.app/fast-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/markdown-to-html/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/readability-checker/",
        "https://fasttool.app/tools/ai-text-summarizer/",
        "https://fasttool.app/tools/case-converter/",
        "https://fasttool.app/tasks/check-copy-before-publishing/",
        "https://fasttool.app/tools/word-character-counter/",
        "https://fasttool.app/tasks/extract-text-from-pdf-for-notes/",
        "https://fasttool.app/tools/html-minifier/",
        "https://fasttool.app/tasks/prepare-meta-title-description/"
      ]
    },
    {
      "schema_version": "2026-06-18",
      "tool_slug": "media-upload-doctor",
      "name": "Media Upload Doctor",
      "canonical_url": "https://fasttool.app/tools/media-upload-doctor/",
      "category": "Files",
      "summary": "Check image, audio, video, PDF, and document files for upload readiness, size limits, metadata risk, platform fit, and next compression routes without uploading the file.",
      "reviewed": true,
      "reviewed_at": "2026-06-18",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "file",
        "settings",
        "sample"
      ],
      "output_modes": [
        "readiness_report",
        "json_receipt",
        "route_recommendations"
      ],
      "sample_input": "Target: web form under 25 MB. File: sample image 1600 x 900, 2.4 MB. Need: upload-safe receipt and next fix route.",
      "expected_output": "The doctor should show file type, size, detected media dimensions or duration when available, readiness gates, privacy warnings, and exact next FastTool routes.",
      "acceptance_checks": [
        "Reads local file metadata in the browser and avoids uploading the file.",
        "Checks size, extension, MIME confidence, image/video/audio/PDF hints, and platform-style thresholds.",
        "Routes users to compression, conversion, metadata stripping, or PDF cleanup tools only when the evidence supports it."
      ],
      "privacy_boundary": "Use public, low-risk files or redacted rows first. Processing runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for malware scanning, copyrighted media clearance, medical/legal document approval, or exact server-side upload rules.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench select",
          "#toolWorkbench canvas"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output",
          "canvas"
        ],
        "completion_signal": "Report the visible output, copy or summarize the proof receipt, and compare the result with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the exact sample or user input used, report the visible output, copy or summarize the proof receipt, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "file upload checker",
        "media upload readiness",
        "why wont my file upload",
        "check image before upload",
        "check audio video file online",
        "upload file doctor"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/kits/ai-era-proof-lab/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/media-upload-doctor/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/kits/ai-era-proof-lab/",
        "https://fasttool.app/tools/ai-agent-discovery-passport/",
        "https://fasttool.app/tools/audio-loudness-loop-inspector/"
      ],
      "quality_badge": "Upload Proof",
      "receipt_schema": "ai-era-proof-receipt/v1"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "meta-tag-generator",
      "name": "Meta Tag Generator",
      "canonical_url": "https://fasttool.app/tools/meta-tag-generator/",
      "category": "SEO",
      "summary": "Generate complete HTML meta tags with live Google SERP preview, Facebook and Twitter card previews, character count warnings, JSON-LD structured data, and a full SEO checklist.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Generate title, description, canonical, Open Graph, and Twitter card tags for a public FastTool task page.",
      "expected_output": "The output should include copyable tags with consistent URL, title, description, and image values.",
      "acceptance_checks": [
        "Works best after the visible page already proves the same promise.",
        "Pairs with snippet preview and Open Graph preview.",
        "Helps prevent mismatched metadata across channels."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for ranking guarantees, cloaking, unsupported claims, or metadata that contradicts the page.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "google snippet preview",
        "meta title checker",
        "open graph preview",
        "seo preflight checklist",
        "open graph preview",
        "social share image preview",
        "og image size",
        "preview title description image",
        "google snippet preview",
        "write meta description",
        "title tag checker",
        "seo snippet length",
        "social preview checker",
        "og image preview"
      ],
      "primary_finish_routes": [
        {
          "title": "Check a Google Snippet Before Publishing",
          "url": "https://fasttool.app/finish/check-google-snippet-before-publish/",
          "run_sheet_url": "https://fasttool.app/finish/check-google-snippet-before-publish/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/google-publishing-preflight-kit/",
      "category_hub_url": "https://fasttool.app/ai-agent-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/meta-tag-generator/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/google-snippet-preview/",
        "https://fasttool.app/tools/image-resizer/",
        "https://fasttool.app/tools/color-contrast-checker/",
        "https://fasttool.app/tasks/prepare-open-graph-image-and-preview/",
        "https://fasttool.app/tools/readability-checker/",
        "https://fasttool.app/tools/word-character-counter/",
        "https://fasttool.app/tasks/write-a-google-snippet-before-publishing/",
        "https://fasttool.app/tools/open-graph-preview/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "mortgage-calculator",
      "name": "Mortgage Calculator",
      "canonical_url": "https://fasttool.app/tools/mortgage-calculator/",
      "category": "Finance",
      "summary": "Calculate monthly mortgage payments with pie chart breakdown, amortization schedule, property tax, insurance, and PMI.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Mortgage: 300000 principal, 6.5% annual rate, 30 years, no taxes or insurance.",
      "expected_output": "Principal and interest payment should be about 1896.20 per month before taxes and insurance.",
      "acceptance_checks": [
        "Uses the standard fixed-rate amortization formula.",
        "Separating taxes and insurance prevents hidden assumptions.",
        "Schedule should align with the headline payment."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not mortgage advice, affordability advice, loan approval, tax advice, or binding lender quote.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "loan payment calculator",
        "mortgage payment estimate",
        "compare loan scenarios",
        "monthly payment calculator",
        "loan payment calculator",
        "mortgage payment estimate",
        "compound interest calculator",
        "percentage increase calculator",
        "compare loan mortgage interest scenarios",
        "loan vs mortgage calculator",
        "compound interest scenario",
        "monthly payment comparison",
        "compare loan scenarios",
        "monthly payment calculator"
      ],
      "primary_finish_routes": [
        {
          "title": "Compare Loan and Mortgage Payment Scenarios",
          "url": "https://fasttool.app/finish/compare-loan-and-mortgage-payment-scenarios/",
          "run_sheet_url": "https://fasttool.app/finish/compare-loan-and-mortgage-payment-scenarios/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/loan-scenario-comparison-kit/",
      "category_hub_url": "https://fasttool.app/fast-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/mortgage-calculator/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/compound-interest-calculator/",
        "https://fasttool.app/tools/percentage-calculator/",
        "https://fasttool.app/tasks/compare-finance-estimates/",
        "https://fasttool.app/tools/scientific-calculator/",
        "https://fasttool.app/tasks/compare-loan-mortgage-interest-scenarios/",
        "https://fasttool.app/tools/unit-converter/",
        "https://fasttool.app/finish/compare-loan-and-mortgage-payment-scenarios/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "mp4-to-mp3-converter",
      "name": "MP4 to MP3 Converter",
      "canonical_url": "https://fasttool.app/tools/mp4-to-mp3-converter/",
      "category": "Data",
      "summary": "Extract audio from MP4, WebM, or MOV files in the browser and encode it as an MP3 using a local JavaScript encoder.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file"
      ],
      "sample_input": "Video: harmless MP4 with spoken audio. Bitrate: 192 kbps.",
      "expected_output": "Downloaded MP3 should be non-empty, close to the source duration, and playable in a browser or music app.",
      "acceptance_checks": [
        "Decodes the actual browser-readable audio track before encoding.",
        "MP3 bitrate is user-visible before export.",
        "The tool explains codec, DRM, and large-file failure modes."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for copyrighted extraction without rights, DRM files, studio mastering, legal evidence, or files your browser cannot decode.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "mp4 to mp3",
        "extract audio from video",
        "cut audio online",
        "trim audio from mp4",
        "video cutter",
        "video cut",
        "trim video",
        "compress video",
        "mp4 to mp3",
        "video to gif",
        "audio cutter",
        "trim video online",
        "cut mp4 for social media",
        "short video clip maker"
      ],
      "primary_finish_routes": [
        {
          "title": "Convert MP4 to MP3 or Cut Audio Safely",
          "url": "https://fasttool.app/finish/convert-mp4-to-mp3-or-cut-audio/",
          "run_sheet_url": "https://fasttool.app/finish/convert-mp4-to-mp3-or-cut-audio/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/tool-finder/",
      "category_hub_url": "https://fasttool.app/json-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/mp4-to-mp3-converter/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/video-trimmer/",
        "https://fasttool.app/tools/video-compressor/",
        "https://fasttool.app/tools/video-to-gif/",
        "https://fasttool.app/tools/audio-cutter/",
        "https://fasttool.app/tools/video-cutter/",
        "https://fasttool.app/finish/convert-mp4-to-mp3-or-cut-audio/",
        "https://fasttool.app/finish/cut-video-for-social-post/",
        "https://fasttool.app/finish/compress-video-under-upload-limit/"
      ],
      "quality_badge": "Reviewed"
    },
    {
      "schema_version": "2026-06-18",
      "tool_slug": "open-graph-image-proof-composer",
      "name": "Open Graph Image Proof Composer",
      "canonical_url": "https://fasttool.app/tools/open-graph-image-proof-composer/",
      "category": "Marketing",
      "summary": "Compose Open Graph and social preview images with safe-zone overlays, text-fit checks, contrast scoring, PNG/SVG export, and meta-tag snippets.",
      "reviewed": true,
      "reviewed_at": "2026-06-18",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_canvas",
        "png_export",
        "svg_export",
        "meta_snippet",
        "json_receipt"
      ],
      "sample_input": "Preset: 1200 x 630. Title: FastTool Creative Lab. Subtitle: Browser-native tools with proof receipts. Accent: teal.",
      "expected_output": "The composer should render the image at exact dimensions, flag text overflow, pass contrast/safe-zone checks, and export PNG/SVG/meta snippet/JSON receipt.",
      "acceptance_checks": [
        "Checks exact output dimensions and safe-zone containment.",
        "Runs text-fit and contrast gates before export.",
        "Creates a copyable meta snippet tied to the generated image brief."
      ],
      "privacy_boundary": "Use public, low-risk drafts or local sample files first. Processing runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for misleading ad claims, regulated marketing approval, or guaranteed platform crop behavior.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench select",
          "#toolWorkbench canvas"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output",
          "canvas",
          "svg"
        ],
        "completion_signal": "Report the visible output, copy or summarize the JSON proof receipt, and compare the result with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the exact sample or user input used, report the visible output, copy or summarize the JSON proof receipt, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "open graph image composer",
        "og image generator",
        "social preview image proof",
        "twitter card image generator",
        "safe zone image checker"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/kits/creative-output-lab/",
      "category_hub_url": "https://fasttool.app/design-color-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/open-graph-image-proof-composer/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/kits/creative-output-lab/",
        "https://fasttool.app/tools/generative-visual-asset-studio/",
        "https://fasttool.app/tools/audio-reactive-visual-clip-maker/",
        "https://fasttool.app/tools/seamless-svg-pattern-tile-lab/",
        "https://fasttool.app/tools/prompt-injection-defense-arena/"
      ],
      "quality_badge": "Creative Lab",
      "receipt_schema": "creative-output-receipt/v1"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "open-graph-preview",
      "name": "Open Graph Preview",
      "canonical_url": "https://fasttool.app/tools/open-graph-preview/",
      "category": "SEO",
      "summary": "Preview how links appear on social media platforms.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "report"
      ],
      "sample_input": "Preview a page title, description, and 1200x630 image before sharing a task route.",
      "expected_output": "The preview should make text readability, image fit, and title/description mismatch visible before publishing.",
      "acceptance_checks": [
        "Checks the social share artifact, not only the image file.",
        "Pairs with image resizing and meta tag generation.",
        "Useful for publish-preflight and social-card workflows."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for platform-specific rendering guarantees, engagement guarantees, or unsupported marketing claims.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "open graph preview",
        "social share image preview",
        "og image size",
        "preview title description image",
        "social preview checker",
        "og image preview",
        "check link preview before sharing",
        "google snippet preview",
        "meta title checker",
        "seo preflight checklist",
        "google snippet preview",
        "meta title checker",
        "open graph preview",
        "seo preflight checklist"
      ],
      "primary_finish_routes": [
        {
          "title": "Check a Google Snippet Before Publishing",
          "url": "https://fasttool.app/finish/check-google-snippet-before-publish/",
          "run_sheet_url": "https://fasttool.app/finish/check-google-snippet-before-publish/#smart-run-sheet"
        },
        {
          "title": "Prepare an Open Graph Image and Social Preview",
          "url": "https://fasttool.app/finish/prepare-og-image-and-social-preview/",
          "run_sheet_url": "https://fasttool.app/finish/prepare-og-image-and-social-preview/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/google-publishing-preflight-kit/",
      "category_hub_url": "https://fasttool.app/ai-agent-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/open-graph-preview/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/meta-tag-generator/",
        "https://fasttool.app/tools/google-snippet-preview/",
        "https://fasttool.app/tools/image-resizer/",
        "https://fasttool.app/tools/color-contrast-checker/",
        "https://fasttool.app/tasks/prepare-open-graph-image-and-preview/",
        "https://fasttool.app/tools/word-character-counter/",
        "https://fasttool.app/tools/readability-checker/",
        "https://fasttool.app/tools/image-compressor/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "pdf-compressor",
      "name": "PDF Compressor",
      "canonical_url": "https://fasttool.app/tools/pdf-compressor/",
      "category": "Document",
      "summary": "Compress PDF files to reduce size by stripping metadata and optimizing object streams.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file"
      ],
      "sample_input": "Small non-sensitive PDF with text and one image.",
      "expected_output": "Output should download as a PDF, remain openable, and be smaller or clearly explain if no safe reduction was possible.",
      "acceptance_checks": [
        "Checks that compression does not create a broken file.",
        "Original and output sizes are shown for transparency.",
        "User can compare the downloaded PDF before using it."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for signed PDFs, court filings, medical records, or documents where metadata preservation is required.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "make pdf smaller before upload",
        "compress pdf under 10 mb",
        "reduce pdf file size",
        "pdf too large upload",
        "compress pdf under 2mb",
        "make pdf smaller for upload",
        "reduce pdf size for application",
        "pdf too large for email",
        "merge pdf files",
        "compress pdf before email",
        "convert html to pdf",
        "extract text from pdf",
        "split pdf pages",
        "excel to pdf"
      ],
      "primary_finish_routes": [
        {
          "title": "Compress a PDF Under an Upload Limit",
          "url": "https://fasttool.app/finish/compress-pdf-under-upload-limit/",
          "run_sheet_url": "https://fasttool.app/finish/compress-pdf-under-upload-limit/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/pdf-cleanup-rescue-kit/",
      "category_hub_url": "https://fasttool.app/pdf-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/pdf-compressor/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/html-to-pdf/",
        "https://fasttool.app/tools/pdf-splitter/",
        "https://fasttool.app/tools/pdf-text-extractor/",
        "https://fasttool.app/tools/pdf-to-image/",
        "https://fasttool.app/tasks/prepare-pdf-packet/",
        "https://fasttool.app/tools/powerpoint-to-pdf/",
        "https://fasttool.app/tasks/convert-office-to-pdf/",
        "https://fasttool.app/tools/pdf-merger/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "pdf-form-filler",
      "name": "PDF Form Filler",
      "canonical_url": "https://fasttool.app/tools/pdf-form-filler/",
      "category": "Document",
      "summary": "Fill interactive PDF form fields locally, optionally flatten the result, and download a completed PDF without uploading the document.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file"
      ],
      "sample_input": "Interactive PDF with one text field and one checkbox. Fill both and enable flatten.",
      "expected_output": "Downloaded PDF should contain the entered value, checked box, and flattened fields when selected.",
      "acceptance_checks": [
        "Only interactive AcroForm fields are edited; static scans are not promised.",
        "Flatten option is explicit before export.",
        "Downloaded file can be opened to confirm values."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for PDFs without interactive form fields, legal e-signatures, cryptographic signatures, or regulated confidential forms without your own review.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "fill pdf form online",
        "flatten pdf form",
        "complete pdf form before email",
        "pdf form filler no upload",
        "compress completed pdf form",
        "fillable pdf to flat pdf"
      ],
      "primary_finish_routes": [
        {
          "title": "Fill, Flatten, and Compress a PDF Form",
          "url": "https://fasttool.app/finish/fill-flatten-and-compress-pdf-form/",
          "run_sheet_url": "https://fasttool.app/finish/fill-flatten-and-compress-pdf-form/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/pdf-cleanup-rescue-kit/",
      "category_hub_url": "https://fasttool.app/pdf-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/pdf-form-filler/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/pdf-to-word/",
        "https://fasttool.app/tools/pdf-compressor/",
        "https://fasttool.app/tools/pdf-page-remover/",
        "https://fasttool.app/tasks/fill-and-flatten-pdf-form/",
        "https://fasttool.app/tools/pdf-merger/",
        "https://fasttool.app/tools/pdf-signature-adder/",
        "https://fasttool.app/finish/fill-flatten-and-compress-pdf-form/"
      ],
      "quality_badge": "Reviewed"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "pdf-image-extractor",
      "name": "PDF Image Extractor",
      "canonical_url": "https://fasttool.app/tools/pdf-image-extractor/",
      "category": "Document",
      "summary": "Extract embedded images from PDF files, preview them, and download PNGs or a ZIP archive locally.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file"
      ],
      "sample_input": "Extract product screenshots from pages 2 and 4 of a harmless sample PDF.",
      "expected_output": "The extracted image files should match the source pages and download with usable names and non-zero file size.",
      "acceptance_checks": [
        "Validates actual extracted files, not just a visual preview.",
        "Keeps the source PDF unchanged.",
        "Supports review workflows where separate image assets are needed."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for confidential legal, medical, forensic, or rights-restricted PDF content without a separate review process.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "extract images from pdf",
        "pdf image extractor",
        "save pdf images",
        "pull screenshots from pdf",
        "save pictures from pdf",
        "pull images out of pdf",
        "download pdf images",
        "turn photos into pdf",
        "make one pdf from images",
        "jpg to pdf for upload",
        "scan photos into pdf online"
      ],
      "primary_finish_routes": [
        {
          "title": "Turn Photos Into One PDF for Upload",
          "url": "https://fasttool.app/finish/turn-photos-into-pdf-for-upload/",
          "run_sheet_url": "https://fasttool.app/finish/turn-photos-into-pdf-for-upload/#smart-run-sheet"
        },
        {
          "title": "Extract Images From a PDF for Review",
          "url": "https://fasttool.app/finish/extract-images-from-pdf-for-review/",
          "run_sheet_url": "https://fasttool.app/finish/extract-images-from-pdf-for-review/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/pdf-cleanup-rescue-kit/",
      "category_hub_url": "https://fasttool.app/pdf-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/pdf-image-extractor/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/image-compressor/",
        "https://fasttool.app/tools/image-resizer/",
        "https://fasttool.app/tools/png-to-webp/",
        "https://fasttool.app/tasks/extract-images-from-pdf-for-review/",
        "https://fasttool.app/tools/pdf-text-extractor/",
        "https://fasttool.app/tools/png-to-jpg/",
        "https://fasttool.app/finish/extract-images-from-pdf-for-review/"
      ],
      "quality_badge": "New"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "pdf-merger",
      "name": "PDF Merger",
      "canonical_url": "https://fasttool.app/tools/pdf-merger/",
      "category": "Document",
      "summary": "Merge multiple PDF files into one document directly in your browser. Drag to reorder, see page counts, and download the merged PDF instantly. browser-based — your standard processing stays in your browser.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file"
      ],
      "sample_input": "Two harmless one-page PDFs named part-a.pdf and part-b.pdf.",
      "expected_output": "Merged PDF should contain two pages in the selected order.",
      "acceptance_checks": [
        "Page count and file order are visible before export.",
        "Drag reorder can be tested with two small files.",
        "Downloaded file should open as a normal PDF."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for signed PDFs, legal bundles, confidential contracts, or files requiring accessibility tagging guarantees.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "merge pdf files",
        "compress pdf before email",
        "convert html to pdf",
        "extract text from pdf",
        "split pdf pages",
        "merge pdf files for application",
        "combine resume cover letter pdf",
        "make one pdf packet",
        "merge documents for upload",
        "make pdf smaller before upload",
        "compress pdf under 10 mb",
        "reduce pdf file size",
        "pdf too large upload",
        "create invoice pdf"
      ],
      "primary_finish_routes": [
        {
          "title": "Merge PDF Files for an Application Packet",
          "url": "https://fasttool.app/finish/merge-pdf-files-for-application/",
          "run_sheet_url": "https://fasttool.app/finish/merge-pdf-files-for-application/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/pdf-cleanup-rescue-kit/",
      "category_hub_url": "https://fasttool.app/pdf-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/pdf-merger/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/html-to-pdf/",
        "https://fasttool.app/tools/pdf-compressor/",
        "https://fasttool.app/tools/pdf-splitter/",
        "https://fasttool.app/tools/pdf-text-extractor/",
        "https://fasttool.app/tools/pdf-to-image/",
        "https://fasttool.app/tasks/prepare-pdf-packet/",
        "https://fasttool.app/tasks/make-pdf-smaller-before-upload/",
        "https://fasttool.app/tools/word-to-pdf/"
      ],
      "quality_badge": "Popular"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "pdf-page-remover",
      "name": "PDF Page Remover",
      "canonical_url": "https://fasttool.app/tools/pdf-page-remover/",
      "category": "Document",
      "summary": "Remove selected pages from a PDF in the browser, validate page ranges, keep the remaining pages, and download a new trimmed PDF.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file"
      ],
      "sample_input": "Three-page sample PDF. Remove pages: 2.",
      "expected_output": "Downloaded PDF should keep pages 1 and 3 only and reject attempts to remove every page.",
      "acceptance_checks": [
        "Page-range parsing is explicit and easy to verify.",
        "The tool blocks the unsafe all-pages-removed case.",
        "Output remains a normal downloadable PDF."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for signed PDFs, legal filings, confidential records, or preserving advanced forms and accessibility tags.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "remove pages from pdf",
        "rotate pdf pages",
        "delete blank pdf pages",
        "fix sideways pdf",
        "delete pages from pdf",
        "remove blank pdf pages",
        "remove pages before sending pdf",
        "split pdf pages",
        "extract pages from pdf",
        "save selected pdf pages",
        "split pdf for upload",
        "separate pdf pages",
        "html to pdf",
        "convert webpage to pdf"
      ],
      "primary_finish_routes": [
        {
          "title": "Delete or Rotate PDF Pages Before Sending",
          "url": "https://fasttool.app/finish/delete-or-rotate-pdf-pages-before-sending/",
          "run_sheet_url": "https://fasttool.app/finish/delete-or-rotate-pdf-pages-before-sending/#smart-run-sheet"
        },
        {
          "title": "Split a PDF and Extract Pages for Upload",
          "url": "https://fasttool.app/finish/split-pdf-and-extract-pages-for-upload/",
          "run_sheet_url": "https://fasttool.app/finish/split-pdf-and-extract-pages-for-upload/#smart-run-sheet"
        },
        {
          "title": "Convert an HTML Page to PDF Before Sharing",
          "url": "https://fasttool.app/finish/convert-html-page-to-pdf-before-sharing/",
          "run_sheet_url": "https://fasttool.app/finish/convert-html-page-to-pdf-before-sharing/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/pdf-cleanup-rescue-kit/",
      "category_hub_url": "https://fasttool.app/pdf-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/pdf-page-remover/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/image-to-pdf/",
        "https://fasttool.app/tools/pdf-page-rotator/",
        "https://fasttool.app/tools/pdf-compressor/",
        "https://fasttool.app/tasks/turn-photos-into-one-pdf/",
        "https://fasttool.app/tools/pdf-to-word/",
        "https://fasttool.app/tasks/fill-and-flatten-pdf-form/",
        "https://fasttool.app/tools/pdf-splitter/",
        "https://fasttool.app/tools/pdf-merger/"
      ],
      "quality_badge": "Popular"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "pdf-page-rotator",
      "name": "PDF Page Rotator",
      "canonical_url": "https://fasttool.app/tools/pdf-page-rotator/",
      "category": "Document",
      "summary": "Rotate all PDF pages or selected ranges by 90, 180, or 270 degrees locally, then download a corrected PDF.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file"
      ],
      "sample_input": "Two-page sample PDF. Rotate page 2 by 90 degrees clockwise.",
      "expected_output": "Downloaded PDF should keep page 1 unchanged and rotate page 2 by 90 degrees.",
      "acceptance_checks": [
        "Specific-page and all-page modes are separated.",
        "Invalid page ranges are rejected before export.",
        "Downloaded output can be opened to compare orientation."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for scanned-document correction beyond page rotation, certified document conversion, or signed PDFs.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "delete pages from pdf",
        "rotate pdf pages",
        "remove blank pdf pages",
        "fix sideways pdf",
        "remove pages before sending pdf",
        "split pdf pages",
        "extract pages from pdf",
        "save selected pdf pages",
        "split pdf for upload",
        "separate pdf pages",
        "html to pdf",
        "convert webpage to pdf",
        "save html as pdf",
        "html invoice to pdf"
      ],
      "primary_finish_routes": [
        {
          "title": "Delete or Rotate PDF Pages Before Sending",
          "url": "https://fasttool.app/finish/delete-or-rotate-pdf-pages-before-sending/",
          "run_sheet_url": "https://fasttool.app/finish/delete-or-rotate-pdf-pages-before-sending/#smart-run-sheet"
        },
        {
          "title": "Split a PDF and Extract Pages for Upload",
          "url": "https://fasttool.app/finish/split-pdf-and-extract-pages-for-upload/",
          "run_sheet_url": "https://fasttool.app/finish/split-pdf-and-extract-pages-for-upload/#smart-run-sheet"
        },
        {
          "title": "Convert an HTML Page to PDF Before Sharing",
          "url": "https://fasttool.app/finish/convert-html-page-to-pdf-before-sharing/",
          "run_sheet_url": "https://fasttool.app/finish/convert-html-page-to-pdf-before-sharing/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/pdf-cleanup-rescue-kit/",
      "category_hub_url": "https://fasttool.app/pdf-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/pdf-page-rotator/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/image-to-pdf/",
        "https://fasttool.app/tools/pdf-page-remover/",
        "https://fasttool.app/tools/pdf-compressor/",
        "https://fasttool.app/tasks/turn-photos-into-one-pdf/",
        "https://fasttool.app/tools/pdf-splitter/",
        "https://fasttool.app/tools/pdf-merger/",
        "https://fasttool.app/tasks/remove-or-rotate-pdf-pages-before-sending/",
        "https://fasttool.app/tools/pdf-text-extractor/"
      ],
      "quality_badge": "Popular"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "pdf-signature-adder",
      "name": "PDF Signature Adder",
      "canonical_url": "https://fasttool.app/tools/pdf-signature-adder/",
      "category": "Document",
      "summary": "Draw your signature on a canvas pad and add it to the last page of any PDF document.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file"
      ],
      "sample_input": "Place a visual approval mark on page 1 of a harmless sample PDF.",
      "expected_output": "The output PDF should show the mark in the intended location without covering important text.",
      "acceptance_checks": [
        "States that this is visual marking, not cryptographic signing.",
        "Requires reopening the output before sending.",
        "Pairs with watermark and page-review workflows."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for certified digital signatures, notarization, legal validity, or tamper-proof audit trails.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "add signature to pdf",
        "watermark pdf",
        "sign pdf visually",
        "stamp pdf draft",
        "add text watermark to pdf",
        "fill pdf form online",
        "flatten pdf form",
        "compress completed pdf form",
        "fillable pdf to flat pdf"
      ],
      "primary_finish_routes": [
        {
          "title": "Sign or Watermark a PDF Before Sending",
          "url": "https://fasttool.app/finish/sign-or-watermark-pdf-before-sending/",
          "run_sheet_url": "https://fasttool.app/finish/sign-or-watermark-pdf-before-sending/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/pdf-cleanup-rescue-kit/",
      "category_hub_url": "https://fasttool.app/pdf-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/pdf-signature-adder/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/pdf-watermark/",
        "https://fasttool.app/tools/pdf-compressor/",
        "https://fasttool.app/tools/pdf-merger/",
        "https://fasttool.app/tasks/sign-or-watermark-a-pdf-safely/",
        "https://fasttool.app/tools/pdf-page-remover/",
        "https://fasttool.app/finish/fill-flatten-and-compress-pdf-form/",
        "https://fasttool.app/finish/sign-or-watermark-pdf-before-sending/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "pdf-splitter",
      "name": "PDF Splitter",
      "canonical_url": "https://fasttool.app/tools/pdf-splitter/",
      "category": "Document",
      "summary": "Split PDF files into individual pages or custom page ranges directly in your browser. Extract specific pages, split every N pages, or split into single pages. browser-based — your standard processing stays in your browser.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Three-page sample PDF. Split range: pages 2-3.",
      "expected_output": "Output should contain pages 2 and 3 only.",
      "acceptance_checks": [
        "Page-range fixture makes off-by-one errors obvious.",
        "Output count can be checked by opening the new PDF.",
        "Single-page and range modes can be tested separately."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for court filings, signed documents, confidential records, or preserving advanced PDF forms.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "split pdf pages",
        "extract pages from pdf",
        "save selected pdf pages",
        "split pdf for upload",
        "separate pdf pages",
        "merge pdf files",
        "compress pdf before email",
        "convert html to pdf",
        "extract text from pdf",
        "split pdf pages",
        "make pdf smaller before upload",
        "compress pdf under 10 mb",
        "reduce pdf file size",
        "pdf too large upload"
      ],
      "primary_finish_routes": [
        {
          "title": "Split a PDF and Extract Pages for Upload",
          "url": "https://fasttool.app/finish/split-pdf-and-extract-pages-for-upload/",
          "run_sheet_url": "https://fasttool.app/finish/split-pdf-and-extract-pages-for-upload/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/pdf-cleanup-rescue-kit/",
      "category_hub_url": "https://fasttool.app/pdf-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/pdf-splitter/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/html-to-pdf/",
        "https://fasttool.app/tools/pdf-compressor/",
        "https://fasttool.app/tools/pdf-text-extractor/",
        "https://fasttool.app/tools/pdf-to-image/",
        "https://fasttool.app/tasks/prepare-pdf-packet/",
        "https://fasttool.app/tools/pdf-merger/",
        "https://fasttool.app/tasks/make-pdf-smaller-before-upload/",
        "https://fasttool.app/tools/image-compressor/"
      ],
      "quality_badge": "Popular"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "pdf-table-extractor",
      "name": "PDF Table Extractor",
      "canonical_url": "https://fasttool.app/tools/pdf-table-extractor/",
      "category": "Document",
      "summary": "Extract table-like rows from PDF pages into CSV or JSON using browser-based text coordinate analysis.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Extract a table with columns Date, Item, Amount and 10 expected rows from a sample PDF.",
      "expected_output": "The output should preserve headers, row count, and numeric values closely enough for spreadsheet review.",
      "acceptance_checks": [
        "Uses row/column counts as acceptance checks.",
        "Calls out scanned and complex-table limitations.",
        "Supports spreadsheet-ready PDF extraction workflows."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for audited financial records, legal discovery, medical records, or unattended ETL from scanned PDFs.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "extract table from pdf",
        "pdf table to csv",
        "pdf table extractor",
        "copy pdf table to spreadsheet",
        "extract pdf table to csv",
        "pdf table to spreadsheet",
        "copy table from pdf",
        "pdf to csv table",
        "pdf to word",
        "convert pdf to editable document",
        "pdf to docx no upload",
        "extract editable text from pdf",
        "make pdf editable",
        "extract images from pdf"
      ],
      "primary_finish_routes": [
        {
          "title": "Extract a PDF Table to CSV for a Spreadsheet",
          "url": "https://fasttool.app/finish/extract-pdf-table-to-csv-for-spreadsheet/",
          "run_sheet_url": "https://fasttool.app/finish/extract-pdf-table-to-csv-for-spreadsheet/#smart-run-sheet"
        },
        {
          "title": "Convert a PDF to Editable Text for Word",
          "url": "https://fasttool.app/finish/convert-pdf-to-word-for-editing/",
          "run_sheet_url": "https://fasttool.app/finish/convert-pdf-to-word-for-editing/#smart-run-sheet"
        },
        {
          "title": "Extract Images From a PDF for Review",
          "url": "https://fasttool.app/finish/extract-images-from-pdf-for-review/",
          "run_sheet_url": "https://fasttool.app/finish/extract-images-from-pdf-for-review/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/pdf-cleanup-rescue-kit/",
      "category_hub_url": "https://fasttool.app/pdf-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/pdf-table-extractor/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/csv-to-json/",
        "https://fasttool.app/tools/json-to-csv/",
        "https://fasttool.app/tools/excel-to-pdf/",
        "https://fasttool.app/tasks/extract-pdf-table-for-spreadsheet/",
        "https://fasttool.app/tools/pdf-text-extractor/",
        "https://fasttool.app/finish/extract-pdf-table-to-csv-for-spreadsheet/"
      ],
      "quality_badge": "New"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "pdf-text-extractor",
      "name": "PDF Text Extractor",
      "canonical_url": "https://fasttool.app/tools/pdf-text-extractor/",
      "category": "Document",
      "summary": "Extract all text content from PDF files with per-page output and download as plain text.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file"
      ],
      "sample_input": "PDF with text: Invoice 123 and Total 25 USD.",
      "expected_output": "Extracted text should include Invoice 123 and Total 25 USD if the PDF contains real text.",
      "acceptance_checks": [
        "Fixture distinguishes text PDFs from scanned image PDFs.",
        "Per-page output makes missing pages easier to find.",
        "Downloadable TXT should match the visible extracted text."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not OCR for scans, legal discovery, medical records, or guaranteed layout preservation.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "extract text from pdf for notes",
        "pdf text to summary",
        "copy pdf text cleanly",
        "summarize pdf notes",
        "extract text from pdf",
        "pdf to editable notes",
        "pdf to word local",
        "copy text from pdf",
        "pdf to word",
        "convert pdf to editable document",
        "pdf to docx no upload",
        "extract editable text from pdf",
        "make pdf editable",
        "word to pdf"
      ],
      "primary_finish_routes": [
        {
          "title": "Convert a PDF to Editable Text for Word",
          "url": "https://fasttool.app/finish/convert-pdf-to-word-for-editing/",
          "run_sheet_url": "https://fasttool.app/finish/convert-pdf-to-word-for-editing/#smart-run-sheet"
        },
        {
          "title": "Convert Word or Text to PDF for Upload",
          "url": "https://fasttool.app/finish/convert-word-to-pdf-for-upload/",
          "run_sheet_url": "https://fasttool.app/finish/convert-word-to-pdf-for-upload/#smart-run-sheet"
        },
        {
          "title": "Sign or Watermark a PDF Before Sending",
          "url": "https://fasttool.app/finish/sign-or-watermark-pdf-before-sending/",
          "run_sheet_url": "https://fasttool.app/finish/sign-or-watermark-pdf-before-sending/#smart-run-sheet"
        },
        {
          "title": "Extract Images From a PDF for Review",
          "url": "https://fasttool.app/finish/extract-images-from-pdf-for-review/",
          "run_sheet_url": "https://fasttool.app/finish/extract-images-from-pdf-for-review/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/pdf-cleanup-rescue-kit/",
      "category_hub_url": "https://fasttool.app/pdf-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/pdf-text-extractor/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/html-to-pdf/",
        "https://fasttool.app/tools/pdf-compressor/",
        "https://fasttool.app/tools/pdf-splitter/",
        "https://fasttool.app/tools/pdf-to-image/",
        "https://fasttool.app/tasks/prepare-pdf-packet/",
        "https://fasttool.app/tools/pdf-merger/",
        "https://fasttool.app/tasks/make-pdf-smaller-before-upload/",
        "https://fasttool.app/tools/word-character-counter/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "pdf-to-image",
      "name": "PDF to Image Converter",
      "canonical_url": "https://fasttool.app/tools/pdf-to-image/",
      "category": "Image",
      "summary": "Convert PDF pages to PNG images directly in your browser.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file",
        "report"
      ],
      "sample_input": "One-page PDF with a simple title and paragraph.",
      "expected_output": "Output should render the page as a PNG image preview and downloadable image.",
      "acceptance_checks": [
        "Single-page fixture isolates rendering from page selection.",
        "Preview and download should show the same page content.",
        "Image type and page number should be clear."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for certified document conversion, redaction, accessibility, or exact print proofing.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "extract pdf pages to images",
        "pdf pages as images for review",
        "convert pdf to image pages",
        "pdf screenshot pages",
        "turn photos into pdf",
        "make one pdf from images",
        "jpg to pdf for upload",
        "scan photos into pdf online",
        "extract images from pdf",
        "save pictures from pdf",
        "pdf image extractor",
        "pull images out of pdf",
        "download pdf images",
        "merge pdf files"
      ],
      "primary_finish_routes": [
        {
          "title": "Turn Photos Into One PDF for Upload",
          "url": "https://fasttool.app/finish/turn-photos-into-pdf-for-upload/",
          "run_sheet_url": "https://fasttool.app/finish/turn-photos-into-pdf-for-upload/#smart-run-sheet"
        },
        {
          "title": "Extract Images From a PDF for Review",
          "url": "https://fasttool.app/finish/extract-images-from-pdf-for-review/",
          "run_sheet_url": "https://fasttool.app/finish/extract-images-from-pdf-for-review/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/pdf-cleanup-rescue-kit/",
      "category_hub_url": "https://fasttool.app/pdf-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/pdf-to-image/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/html-to-pdf/",
        "https://fasttool.app/tools/pdf-compressor/",
        "https://fasttool.app/tools/pdf-splitter/",
        "https://fasttool.app/tools/pdf-text-extractor/",
        "https://fasttool.app/tasks/prepare-pdf-packet/",
        "https://fasttool.app/tools/pdf-merger/",
        "https://fasttool.app/tasks/make-pdf-smaller-before-upload/",
        "https://fasttool.app/tools/html-minifier/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "pdf-to-word",
      "name": "PDF to Word Converter",
      "canonical_url": "https://fasttool.app/tools/pdf-to-word/",
      "category": "Document",
      "summary": "Extract selectable PDF text into an editable Word-compatible document locally, with page breaks, copy, TXT fallback, and honest OCR limitations.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file",
        "report"
      ],
      "sample_input": "PDF containing selectable text: Invoice 123 and Total 25 USD.",
      "expected_output": "Extracted text should include Invoice 123 and Total 25 USD, and the Word-compatible download should open as an editable document.",
      "acceptance_checks": [
        "Distinguishes selectable-text PDFs from scanned image PDFs.",
        "Downloads a Word-compatible document instead of only plain text.",
        "Makes OCR and layout-preservation limits visible before real use."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for scanned PDFs without OCR, legal discovery, medical records, confidential contracts, or pixel-perfect layout reconstruction.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "pdf to word",
        "convert pdf to editable document",
        "pdf to docx no upload",
        "extract editable text from pdf",
        "make pdf editable",
        "word to pdf",
        "docx to pdf online",
        "convert resume to pdf",
        "make document pdf for upload",
        "text to pdf",
        "ats resume builder",
        "resume keyword checker",
        "resume pdf before applying",
        "make resume match job description"
      ],
      "primary_finish_routes": [
        {
          "title": "Convert a PDF to Editable Text for Word",
          "url": "https://fasttool.app/finish/convert-pdf-to-word-for-editing/",
          "run_sheet_url": "https://fasttool.app/finish/convert-pdf-to-word-for-editing/#smart-run-sheet"
        },
        {
          "title": "Convert Word or Text to PDF for Upload",
          "url": "https://fasttool.app/finish/convert-word-to-pdf-for-upload/",
          "run_sheet_url": "https://fasttool.app/finish/convert-word-to-pdf-for-upload/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/pdf-cleanup-rescue-kit/",
      "category_hub_url": "https://fasttool.app/pdf-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/pdf-to-word/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/ats-resume-checker/",
        "https://fasttool.app/tools/resume-keyword-checker/",
        "https://fasttool.app/tools/word-to-pdf/",
        "https://fasttool.app/tasks/build-ats-friendly-resume-before-applying/",
        "https://fasttool.app/tools/pdf-compressor/",
        "https://fasttool.app/tools/pdf-page-remover/",
        "https://fasttool.app/tasks/fill-and-flatten-pdf-form/",
        "https://fasttool.app/tools/word-character-counter/"
      ],
      "quality_badge": "Upgraded"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "pdf-watermark",
      "name": "PDF Watermark",
      "canonical_url": "https://fasttool.app/tools/pdf-watermark/",
      "category": "Document",
      "summary": "Add custom text watermarks to every page of a PDF with configurable font size, opacity, position and color.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file"
      ],
      "sample_input": "Add a 'Draft for review' watermark to a harmless two-page PDF.",
      "expected_output": "The watermark should appear on the intended pages without covering key content and the output should reopen as PDF.",
      "acceptance_checks": [
        "Keeps watermark placement and opacity reviewable.",
        "Pairs with PDF signing and packet-preparation workflows.",
        "Preserves the original source file."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for legal redaction, copyright enforcement, certified marking, or irreversible document control.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "add signature to pdf",
        "watermark pdf",
        "sign pdf visually",
        "stamp pdf draft",
        "add text watermark to pdf",
        "add signature to pdf",
        "watermark pdf",
        "sign pdf visually",
        "stamp pdf draft",
        "add text watermark to pdf"
      ],
      "primary_finish_routes": [
        {
          "title": "Sign or Watermark a PDF Before Sending",
          "url": "https://fasttool.app/finish/sign-or-watermark-pdf-before-sending/",
          "run_sheet_url": "https://fasttool.app/finish/sign-or-watermark-pdf-before-sending/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/pdf-cleanup-rescue-kit/",
      "category_hub_url": "https://fasttool.app/pdf-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/pdf-watermark/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/pdf-compressor/",
        "https://fasttool.app/tools/pdf-merger/",
        "https://fasttool.app/tasks/sign-or-watermark-a-pdf-safely/",
        "https://fasttool.app/tools/pdf-page-remover/",
        "https://fasttool.app/finish/sign-or-watermark-pdf-before-sending/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "percentage-calculator",
      "name": "Percentage Calculator",
      "canonical_url": "https://fasttool.app/tools/percentage-calculator/",
      "category": "Math",
      "summary": "Calculate percentages with 4 modes: X% of Y, what percent X is of Y, percentage change, and markup/discount. Real-time results with visual bar and stat cards.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Mode: X% of Y. X: 20. Y: 150.",
      "expected_output": "Result should be 30.",
      "acceptance_checks": [
        "Fixture uses mental-math friendly numbers.",
        "Other modes can be checked after the core percent-of result.",
        "Visual bars should agree with the numeric answer."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not financial advice, tax calculation, grading policy, or legally binding discount math.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "calculate percentage change correctly",
        "percentage increase calculator",
        "old new value percentage",
        "percent change formula",
        "loan payment calculator",
        "mortgage payment estimate",
        "compound interest calculator",
        "percentage increase calculator",
        "unit converter",
        "percentage calculator",
        "scientific calculator",
        "age calculator",
        "compare loan mortgage interest scenarios",
        "loan vs mortgage calculator"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/tool-finder/",
      "category_hub_url": "https://fasttool.app/fast-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/percentage-calculator/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/mortgage-calculator/",
        "https://fasttool.app/tools/compound-interest-calculator/",
        "https://fasttool.app/tasks/compare-finance-estimates/",
        "https://fasttool.app/tools/scientific-calculator/",
        "https://fasttool.app/tools/age-calculator/",
        "https://fasttool.app/tasks/run-quick-calculation/",
        "https://fasttool.app/tools/unit-converter/",
        "https://fasttool.app/tools/loan-calculator/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "png-to-jpg",
      "name": "PNG to JPG Converter",
      "canonical_url": "https://fasttool.app/tools/png-to-jpg/",
      "category": "Image",
      "summary": "Convert PNG images to JPG with quality control and background color options for transparency. Batch support included.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file"
      ],
      "sample_input": "Transparent PNG over a white background, quality 90%.",
      "expected_output": "Output should be a JPG with the selected background applied where transparency existed.",
      "acceptance_checks": [
        "Transparency handling is the key conversion risk.",
        "Quality setting and background color are explicit.",
        "Preview should reveal unwanted black or transparent areas."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for preserving transparency, archival masters, legal evidence, or color-managed print files.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "webp to jpg",
        "jpg to webp",
        "png to webp",
        "convert image for website",
        "make web image smaller",
        "make image smaller",
        "compress image for website",
        "resize image for upload",
        "jpg to webp",
        "webp to jpg",
        "resize image for social card",
        "1200x630 image resize",
        "compress social image",
        "aspect ratio social image"
      ],
      "primary_finish_routes": [
        {
          "title": "Convert WebP, JPG, or PNG for a Website",
          "url": "https://fasttool.app/finish/convert-webp-jpg-png-for-website/",
          "run_sheet_url": "https://fasttool.app/finish/convert-webp-jpg-png-for-website/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/image-upload-conversion-kit/",
      "category_hub_url": "https://fasttool.app/image-optimization-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/png-to-jpg/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/image-resizer/",
        "https://fasttool.app/tools/bulk-image-resizer/",
        "https://fasttool.app/tools/jpg-to-webp/",
        "https://fasttool.app/tools/webp-to-jpg/",
        "https://fasttool.app/tasks/make-image-smaller/",
        "https://fasttool.app/tools/image-compressor/",
        "https://fasttool.app/tools/aspect-ratio-calculator/",
        "https://fasttool.app/tasks/resize-image-for-social-card/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "png-to-webp",
      "name": "PNG to WebP Converter",
      "canonical_url": "https://fasttool.app/tools/png-to-webp/",
      "category": "Image",
      "summary": "Convert PNG images to WebP in the browser with lossless or lossy quality control, transparent image support, size comparison, and per-file downloads.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file"
      ],
      "sample_input": "Transparent PNG image. Mode: lossless. Then lossy quality 80%.",
      "expected_output": "Output should download as WebP, preserve transparency in lossless mode, and show before/after file size.",
      "acceptance_checks": [
        "Checks format conversion and file-size reporting together.",
        "Lossless and lossy modes are visibly different controls.",
        "Per-file download makes the result easy to verify."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for archival masters, legal evidence, medical images, or color-managed print workflows.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "svg to png logo",
        "convert svg to webp",
        "rasterize svg logo",
        "make png from svg",
        "webp to jpg",
        "jpg to webp",
        "png to webp",
        "convert image for website",
        "make web image smaller",
        "extract images from pdf",
        "pdf image extractor",
        "save pdf images",
        "pull screenshots from pdf",
        "resize profile picture"
      ],
      "primary_finish_routes": [
        {
          "title": "Convert an SVG Logo to PNG or WebP",
          "url": "https://fasttool.app/finish/convert-svg-logo-to-png-or-webp/",
          "run_sheet_url": "https://fasttool.app/finish/convert-svg-logo-to-png-or-webp/#smart-run-sheet"
        },
        {
          "title": "Convert WebP, JPG, or PNG for a Website",
          "url": "https://fasttool.app/finish/convert-webp-jpg-png-for-website/",
          "run_sheet_url": "https://fasttool.app/finish/convert-webp-jpg-png-for-website/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/image-upload-conversion-kit/",
      "category_hub_url": "https://fasttool.app/image-optimization-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/png-to-webp/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/image-compressor/",
        "https://fasttool.app/tools/image-resizer/",
        "https://fasttool.app/tasks/extract-images-from-pdf-for-review/",
        "https://fasttool.app/tools/aspect-ratio-calculator/",
        "https://fasttool.app/tools/jpg-to-webp/",
        "https://fasttool.app/tasks/prepare-a-social-profile-image/",
        "https://fasttool.app/tools/qr-code-generator/",
        "https://fasttool.app/tools/image-to-pdf/"
      ],
      "quality_badge": "Popular"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "pomodoro-timer",
      "name": "Pomodoro Timer",
      "canonical_url": "https://fasttool.app/tools/pomodoro-timer/",
      "category": "Productivity",
      "summary": "Focus timer with presets, streak tracking, daily stats, keyboard shortcuts, browser notifications, and multiple sound options.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Focus: 25 minutes. Break: 5 minutes. Start, pause, then reset.",
      "expected_output": "Timer should count down, pause without losing state, and reset to 25:00.",
      "acceptance_checks": [
        "Manual fixture checks the core timer controls.",
        "Session/streak stats should not change until a session completes.",
        "Notifications are optional and should be permission-gated."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for timekeeping compliance, employee monitoring, billing records, or medical focus treatment.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "plan pomodoro writing session",
        "pomodoro timer with word count",
        "focused writing workflow",
        "writing sprint timer",
        "business days calculator",
        "days between dates",
        "deadline calculator",
        "add days to date",
        "workday deadline"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/tool-finder/",
      "category_hub_url": "https://fasttool.app/fast-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/pomodoro-timer/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/word-character-counter/",
        "https://fasttool.app/tools/readability-checker/",
        "https://fasttool.app/tools/ai-text-summarizer/",
        "https://fasttool.app/tools/case-converter/",
        "https://fasttool.app/tasks/plan-pomodoro-writing-session/",
        "https://fasttool.app/tools/unit-converter/",
        "https://fasttool.app/tools/percentage-calculator/",
        "https://fasttool.app/finish/calculate-business-days-or-deadline/"
      ],
      "quality_badge": "Popular"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "powerpoint-to-pdf",
      "name": "PowerPoint to PDF Converter",
      "canonical_url": "https://fasttool.app/tools/powerpoint-to-pdf/",
      "category": "Document",
      "summary": "Convert PPTX decks into readable PDF handouts by exporting slide titles and bullets from your browser.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file"
      ],
      "sample_input": "PPTX with two slides: title slide and one bullet slide.",
      "expected_output": "PDF output should show both slides or readable slide text in order.",
      "acceptance_checks": [
        "Tiny deck makes slide order and extraction easy to inspect.",
        "Export should be local and produce an openable PDF.",
        "The tool makes fidelity limits visible for complex decks."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for board decks with confidential content, exact animation rendering, speaker-note privacy, or legal presentation archives.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "powerpoint to pdf",
        "pptx to pdf handout",
        "convert slides to pdf",
        "presentation pdf export",
        "excel to pdf",
        "powerpoint to pdf",
        "html to pdf",
        "compress converted pdf"
      ],
      "primary_finish_routes": [
        {
          "title": "Convert a Presentation to a PDF Handout",
          "url": "https://fasttool.app/finish/convert-presentation-to-pdf-handout/",
          "run_sheet_url": "https://fasttool.app/finish/convert-presentation-to-pdf-handout/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/pdf-cleanup-rescue-kit/",
      "category_hub_url": "https://fasttool.app/pdf-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/powerpoint-to-pdf/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/html-to-pdf/",
        "https://fasttool.app/tools/pdf-compressor/",
        "https://fasttool.app/tasks/convert-office-to-pdf/",
        "https://fasttool.app/tools/pdf-page-remover/",
        "https://fasttool.app/tools/pdf-merger/",
        "https://fasttool.app/tasks/convert-presentation-to-pdf-handout/",
        "https://fasttool.app/tools/image-compressor/",
        "https://fasttool.app/finish/convert-presentation-to-pdf-handout/"
      ],
      "quality_badge": "New"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "prompt-ab-tester",
      "name": "Prompt A/B Tester",
      "canonical_url": "https://fasttool.app/tools/prompt-ab-tester/",
      "category": "Developer",
      "summary": "Compare prompt variants by clarity, constraints, output format, ambiguity, examples, token cost, and instruction-following likelihood.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "report"
      ],
      "sample_input": "Add two to five prompt variants for the same task, including one vague prompt and one structured prompt.",
      "expected_output": "The ranked report should show winner, score deltas, ambiguity flags, token estimate, and exact edits to improve weak variants.",
      "acceptance_checks": [
        "Deterministic scoring makes repeated checks comparable.",
        "Penalizes ambiguity and missing output contracts.",
        "Does not call an AI API or pretend to measure live model quality."
      ],
      "privacy_boundary": "Use public drafts or low-risk sample text first. The tool runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for guaranteed model performance, benchmark publication, or replacing live evals with real expected answers.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "ai agent tools",
        "agent ready page",
        "browser agent page audit",
        "ai crawler policy",
        "chatgpt search visibility",
        "answer engine visibility",
        "ai overview visibility",
        "llm ready content",
        "prompt injection scanner",
        "rag chunk quality"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/kits/prompt-rag-quality-kit/",
      "category_hub_url": "https://fasttool.app/json-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/prompt-ab-tester/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/ai-traffic-source-classifier/",
        "https://fasttool.app/tools/agent-output-evaluator/",
        "https://fasttool.app/tools/ai-agent-page-auditor/",
        "https://fasttool.app/tools/ai-crawler-policy-builder/",
        "https://fasttool.app/tools/query-fanout-simulator/",
        "https://fasttool.app/tools/ai-citation-readiness-checker/",
        "https://fasttool.app/tools/aio-visibility-scorer/",
        "https://fasttool.app/tools/llm-ready-content-scorer/"
      ],
      "quality_badge": "New"
    },
    {
      "schema_version": "2026-06-18",
      "tool_slug": "prompt-injection-defense-arena",
      "name": "Prompt Injection Defense Arena",
      "canonical_url": "https://fasttool.app/tools/prompt-injection-defense-arena/",
      "category": "Security",
      "summary": "Play through AI-agent security scenarios, flag hostile instructions, harden the handling policy, and export acceptance tests as a JSON proof receipt.",
      "reviewed": true,
      "reviewed_at": "2026-06-18",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "scenario",
        "settings"
      ],
      "output_modes": [
        "visible_score",
        "markdown_policy",
        "json_receipt",
        "acceptance_tests"
      ],
      "sample_input": "Level: support RAG. Retrieved note says ignore previous instructions, reveal system prompt, and call an external tool.",
      "expected_output": "The arena should score the selected defenses, explain missed injection signals, produce a hardened policy, and export JSON acceptance tests.",
      "acceptance_checks": [
        "Turns prompt-injection recognition into a playable but practical workflow.",
        "Scores override, exfiltration, tool-control, hidden-instruction, and trust-boundary signals.",
        "Outputs a reusable policy and acceptance-test receipt for agent workflows."
      ],
      "privacy_boundary": "Use public, low-risk drafts or local sample files first. Processing runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for offensive prompt bypass instructions, full security certification, malware analysis, or approving a production agent architecture by itself.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench select",
          "#toolWorkbench canvas"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output",
          "canvas",
          "svg"
        ],
        "completion_signal": "Report the visible output, copy or summarize the JSON proof receipt, and compare the result with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the exact sample or user input used, report the visible output, copy or summarize the JSON proof receipt, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "prompt injection defense game",
        "ai agent security training",
        "prompt injection test arena",
        "rag security game",
        "agent policy hardening tool"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/kits/creative-output-lab/",
      "category_hub_url": "https://fasttool.app/design-color-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/prompt-injection-defense-arena/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/kits/creative-output-lab/",
        "https://fasttool.app/tools/generative-visual-asset-studio/",
        "https://fasttool.app/tools/audio-reactive-visual-clip-maker/",
        "https://fasttool.app/tools/seamless-svg-pattern-tile-lab/",
        "https://fasttool.app/tools/open-graph-image-proof-composer/"
      ],
      "quality_badge": "Creative Lab",
      "receipt_schema": "creative-output-receipt/v1"
    },
    {
      "schema_version": "2026-06-18",
      "tool_slug": "prompt-injection-scanner",
      "name": "Prompt Injection Scanner",
      "canonical_url": "https://fasttool.app/tools/prompt-injection-scanner/",
      "category": "Security",
      "summary": "Run a defensive prompt-injection gate for prompts, RAG snippets, tool outputs, and agent packets with category severity, tool-risk multiplier, blocked actions, safe wrapper, JSON receipt, and schema-contract handoff.",
      "reviewed": true,
      "reviewed_at": "2026-06-18",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "json_receipt"
      ],
      "sample_input": "Paste a retrieved document, support ticket, tool output, or agent handoff that tries to override instructions, reveal secrets, or trigger browser/file actions.",
      "expected_output": "The scanner should return a pass, review, or block decision with category findings, defensive mitigations, blocked actions, safe untrusted-content wrapper, JSON receipt, and next-tool handoff.",
      "acceptance_checks": [
        "Flags defensive injection indicators without generating attack instructions.",
        "Separates untrusted content handling from full product security claims.",
        "Produces a copyable safe wrapper and machine-readable gate receipt."
      ],
      "privacy_boundary": "Use public drafts or low-risk sample text first. The tool runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for full security review, malware analysis, bypassing safeguards, or approving production agent architectures by itself.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the exact sample or user input used, report the visible result, copy or summarize the JSON receipt, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "agent workflow proof passport",
        "prompt rag quality runbook",
        "ai agent workflow receipt",
        "prompt injection gate",
        "json schema from llm output",
        "context window budget",
        "embedding duplicate chunks",
        "rag injection scanner",
        "untrusted content wrapper",
        "ai agent safety gate",
        "tool use injection risk",
        "rag chunk quality",
        "prepare rag chunks",
        "prompt injection scanner",
        "rag quality checker",
        "llm output schema extractor",
        "embedding similarity checker",
        "ai agent tools",
        "agent ready page",
        "browser agent page audit",
        "ai crawler policy",
        "chatgpt search visibility",
        "answer engine visibility",
        "ai overview visibility",
        "llm ready content"
      ],
      "primary_finish_routes": [
        {
          "title": "Prepare RAG Chunks Before Indexing",
          "url": "https://fasttool.app/finish/prepare-rag-chunks-before-indexing/",
          "run_sheet_url": "https://fasttool.app/finish/prepare-rag-chunks-before-indexing/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/prompt-rag-quality-kit/",
      "category_hub_url": "https://fasttool.app/ai-agent-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/prompt-injection-scanner/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/kits/prompt-rag-quality-kit/",
        "https://fasttool.app/kits/prompt-rag-quality-kit/#workflow-console",
        "https://fasttool.app/tools/agent-task-contract-studio/",
        "https://fasttool.app/tools/context-window-budgeter/",
        "https://fasttool.app/tools/prompt-injection-scanner/",
        "https://fasttool.app/tools/rag-chunk-quality-scorer/",
        "https://fasttool.app/tools/embedding-similarity-explorer/",
        "https://fasttool.app/tools/llm-output-schema-extractor/",
        "https://fasttool.app/tools/ai-hallucination-likelihood-scorer/",
        "https://fasttool.app/tools/agent-output-evaluator/",
        "https://fasttool.app/tools/ai-traffic-source-classifier/",
        "https://fasttool.app/tools/ai-agent-page-auditor/",
        "https://fasttool.app/tools/ai-crawler-policy-builder/",
        "https://fasttool.app/tools/query-fanout-simulator/",
        "https://fasttool.app/tools/ai-citation-readiness-checker/",
        "https://fasttool.app/tools/aio-visibility-scorer/"
      ],
      "quality_badge": "New"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "qr-code-generator",
      "name": "QR Code Generator",
      "canonical_url": "https://fasttool.app/tools/qr-code-generator/",
      "category": "Data",
      "summary": "Generate QR codes for URLs, text, WiFi, vCard, email, SMS and phone — customize colors, size, error correction and logo overlay. Download as PNG or SVG.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file",
        "report"
      ],
      "sample_input": "URL: https://fasttool.app/tool-finder/",
      "expected_output": "QR preview should encode the same URL and download as PNG or SVG.",
      "acceptance_checks": [
        "Uses a public URL fixture that is safe to scan.",
        "Error-correction and size settings are visible.",
        "Downloaded image should match the on-page preview."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for payment QR codes, regulated ticketing, identity credentials, or links you have not verified.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "qr code generator",
        "url encode link",
        "create qr for url",
        "hash text",
        "create qr code for menu",
        "qr code for flyer",
        "public link qr code",
        "print qr code contrast",
        "qr code for restaurant menu",
        "make menu qr code",
        "create qr code for url",
        "printable qr code",
        "wifi qr code generator",
        "create wifi qr for guests"
      ],
      "primary_finish_routes": [
        {
          "title": "Generate a QR Code for a Restaurant Menu",
          "url": "https://fasttool.app/finish/generate-qr-code-for-restaurant-menu/",
          "run_sheet_url": "https://fasttool.app/finish/generate-qr-code-for-restaurant-menu/#smart-run-sheet"
        },
        {
          "title": "Create a WiFi QR Code for Guests",
          "url": "https://fasttool.app/finish/create-wifi-qr-code-for-guests/",
          "run_sheet_url": "https://fasttool.app/finish/create-wifi-qr-code-for-guests/#smart-run-sheet"
        },
        {
          "title": "Create a Barcode Label for a Product",
          "url": "https://fasttool.app/finish/create-barcode-label-for-product/",
          "run_sheet_url": "https://fasttool.app/finish/create-barcode-label-for-product/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/local-business-qr-print-kit/",
      "category_hub_url": "https://fasttool.app/json-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/qr-code-generator/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/url-encoder-decoder/",
        "https://fasttool.app/tools/hash-generator/",
        "https://fasttool.app/tasks/create-safe-qr-link/",
        "https://fasttool.app/tools/color-contrast-checker/",
        "https://fasttool.app/tools/image-compressor/",
        "https://fasttool.app/tasks/create-qr-code-for-menu-flyer/",
        "https://fasttool.app/tools/password-generator/",
        "https://fasttool.app/tools/image-to-pdf/"
      ],
      "quality_badge": "Popular"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "query-fanout-simulator",
      "name": "Query Fan-Out Simulator",
      "canonical_url": "https://fasttool.app/tools/query-fanout-simulator/",
      "category": "SEO",
      "summary": "Turn one search query into the related sub-questions, page blocks, and internal links an answer engine may need before it can trust a result.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Seed query: best free PDF compressor. Audience: small business user. Page type: browser tool page.",
      "expected_output": "The simulator should produce subquery clusters, missing content blocks, title ideas, proof checks, and related FastTool routes.",
      "acceptance_checks": [
        "Uses query expansion patterns that are visible to the user.",
        "Builds pages around answer coverage, not keyword stuffing.",
        "Creates internal-link and proof-section recommendations."
      ],
      "privacy_boundary": "Use public drafts, low-risk sample text, or non-sensitive operational data first. The tool runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for scraping live Google results, predicting exact AI Overview citations, or replacing Search Console and real ranking data.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "ai agent tools",
        "agent ready page",
        "browser agent page audit",
        "ai crawler policy",
        "chatgpt search visibility",
        "answer engine visibility",
        "ai overview visibility",
        "llm ready content",
        "prompt injection scanner",
        "rag chunk quality",
        "is my website traffic bots",
        "why is gsc lower than analytics",
        "direct traffic bots or humans",
        "ai crawler traffic checker"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/kits/google-publishing-preflight-kit/",
      "category_hub_url": "https://fasttool.app/ai-agent-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/query-fanout-simulator/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/ai-traffic-source-classifier/",
        "https://fasttool.app/tools/agent-output-evaluator/",
        "https://fasttool.app/tools/ai-agent-page-auditor/",
        "https://fasttool.app/tools/ai-crawler-policy-builder/",
        "https://fasttool.app/tools/ai-citation-readiness-checker/",
        "https://fasttool.app/tools/aio-visibility-scorer/",
        "https://fasttool.app/tools/llm-ready-content-scorer/",
        "https://fasttool.app/tools/eeat-audit-scorecard/"
      ],
      "quality_badge": "New"
    },
    {
      "schema_version": "2026-06-18",
      "tool_slug": "rag-chunk-quality-scorer",
      "name": "RAG Chunk Quality Scorer",
      "canonical_url": "https://fasttool.app/tools/rag-chunk-quality-scorer/",
      "category": "AI",
      "summary": "Run a RAG and agent preflight check that scores chunks for standalone context, query coverage, entity preservation, structure, ambiguity, risk reasons, rewrite actions, and next-tool handoff.",
      "reviewed": true,
      "reviewed_at": "2026-06-18",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "preflight_report",
        "json_receipt",
        "next_tool_handoff"
      ],
      "sample_input": "Paste a product doc with headings, steps, examples, and one target query such as reset API key or export invoice PDF.",
      "expected_output": "The report should produce a pass, warn, or block preflight receipt with chunk fingerprints, scores, query coverage, risk reasons, rewrite actions, recommended fixes, and next-tool handoff to schema extraction.",
      "acceptance_checks": [
        "Scores chunk size, query coverage, entity context, headings, steps, warnings, and pronoun ambiguity with visible chunk-level reasons.",
        "Outputs a receipt JSON that avoids storing raw pasted content by default and includes deterministic chunk fingerprints.",
        "Provides next-tool handoff guidance so accepted chunks can move into schema extraction and answer verification."
      ],
      "privacy_boundary": "Use public drafts or low-risk sample text first. The tool runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for confidential corpora on untrusted devices, legal discovery, medical records, or production RAG evaluation by itself.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "agent workflow proof passport",
        "prompt rag quality runbook",
        "ai agent workflow receipt",
        "prompt injection gate",
        "json schema from llm output",
        "context window budget",
        "embedding duplicate chunks",
        "rag chunk quality",
        "prepare rag chunks",
        "prompt injection scanner",
        "rag quality checker",
        "llm output schema extractor",
        "embedding similarity checker",
        "prompt rag quality kit",
        "rag chunk quality checker",
        "embedding similarity explorer",
        "ai agent tools",
        "agent ready page",
        "browser agent page audit",
        "ai crawler policy",
        "chatgpt search visibility"
      ],
      "primary_finish_routes": [
        {
          "title": "Prepare RAG Chunks Before Indexing",
          "url": "https://fasttool.app/finish/prepare-rag-chunks-before-indexing/",
          "run_sheet_url": "https://fasttool.app/finish/prepare-rag-chunks-before-indexing/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/prompt-rag-quality-kit/",
      "category_hub_url": "https://fasttool.app/ai-agent-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/rag-chunk-quality-scorer/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/kits/prompt-rag-quality-kit/",
        "https://fasttool.app/kits/prompt-rag-quality-kit/#workflow-console",
        "https://fasttool.app/tools/agent-task-contract-studio/",
        "https://fasttool.app/tools/context-window-budgeter/",
        "https://fasttool.app/tools/prompt-injection-scanner/",
        "https://fasttool.app/tools/rag-chunk-quality-scorer/",
        "https://fasttool.app/tools/embedding-similarity-explorer/",
        "https://fasttool.app/tools/llm-output-schema-extractor/",
        "https://fasttool.app/tools/ai-hallucination-likelihood-scorer/",
        "https://fasttool.app/tools/agent-output-evaluator/",
        "https://fasttool.app/tools/ai-traffic-source-classifier/",
        "https://fasttool.app/tools/ai-agent-page-auditor/",
        "https://fasttool.app/tools/ai-crawler-policy-builder/",
        "https://fasttool.app/tools/query-fanout-simulator/",
        "https://fasttool.app/tools/ai-citation-readiness-checker/",
        "https://fasttool.app/tools/aio-visibility-scorer/"
      ],
      "quality_badge": "New",
      "receipt_version": "fasttool-rag-agent-preflight-v1",
      "workflow_next_tool": "https://fasttool.app/tools/llm-output-schema-extractor/",
      "gate_statuses": [
        "pass",
        "warn",
        "block"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "readability-checker",
      "name": "Readability Checker",
      "canonical_url": "https://fasttool.app/tools/readability-checker/",
      "category": "Writing",
      "summary": "Analyze text readability with 6 formulas: Flesch Reading Ease, Flesch-Kincaid, Gunning Fog, Coleman-Liau, SMOG, and ARI with SVG gauge and sentence complexity.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Text: FastTool helps people finish browser tasks quickly. Paste a short paragraph and compare the score.",
      "expected_output": "Output should show word, sentence, and readability metrics without changing the source text.",
      "acceptance_checks": [
        "Short paragraph fixture checks counting and formula display.",
        "Multiple formulas reduce dependence on one score.",
        "The original text remains visible for comparison."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not writing advice for medical, legal, financial, or safety-critical content by itself.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "count words and characters",
        "check readability",
        "summarize notes",
        "markdown to html",
        "convert text case",
        "seo preflight checklist",
        "check page quality before publishing",
        "compress image before publishing",
        "readability check",
        "extract text from pdf for notes",
        "pdf text to summary",
        "copy pdf text cleanly",
        "summarize pdf notes",
        "prepare meta title description"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/tool-finder/",
      "category_hub_url": "https://fasttool.app/fast-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/readability-checker/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/ai-text-summarizer/",
        "https://fasttool.app/tools/markdown-to-html/",
        "https://fasttool.app/tools/case-converter/",
        "https://fasttool.app/tasks/check-copy-before-publishing/",
        "https://fasttool.app/tools/image-compressor/",
        "https://fasttool.app/tools/color-contrast-checker/",
        "https://fasttool.app/tools/html-minifier/",
        "https://fasttool.app/tasks/publish-preflight-check/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "regex-tester",
      "name": "Regex Tester",
      "canonical_url": "https://fasttool.app/tools/regex-tester/",
      "category": "Developer",
      "summary": "Test regex patterns with real-time match highlighting, capture groups, replace mode, and a built-in cheatsheet.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Pattern: \\b[A-Z]{2}-\\d{3}\\b. Text: Ticket AB-123 is ready.",
      "expected_output": "Output should highlight AB-123 as one match.",
      "acceptance_checks": [
        "Fixture checks boundaries, uppercase letters, and digits.",
        "Capture and replace modes can be tested after match mode.",
        "Highlighting should match the listed result count."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for validating hostile regex at scale, security filtering, or production WAF rules.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "regex tester",
        "test regex replace",
        "regex match checker",
        "debug regex pattern",
        "find replace regex",
        "fix invalid json",
        "format api response",
        "convert yaml to json",
        "csv to json cleanup",
        "decode jwt safely",
        "validate json before api call",
        "check request body json",
        "fix json payload",
        "api json formatter"
      ],
      "primary_finish_routes": [
        {
          "title": "Test a Regex Replace Before Running It",
          "url": "https://fasttool.app/finish/test-regex-replace-before-running/",
          "run_sheet_url": "https://fasttool.app/finish/test-regex-replace-before-running/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/tool-finder/",
      "category_hub_url": "https://fasttool.app/json-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/regex-tester/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/yaml-to-json/",
        "https://fasttool.app/tools/csv-to-json/",
        "https://fasttool.app/tools/base64-encoder-decoder/",
        "https://fasttool.app/tools/jwt-decoder/",
        "https://fasttool.app/tasks/fix-invalid-json/",
        "https://fasttool.app/tasks/validate-json-before-api-call/",
        "https://fasttool.app/tools/css-minifier/",
        "https://fasttool.app/tools/html-minifier/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "resume-builder",
      "name": "Resume Builder",
      "canonical_url": "https://fasttool.app/tools/resume-builder/",
      "category": "Productivity",
      "summary": "Build a clean resume with templates, experience, education, skills, languages, live preview, print, and direct PDF download without an account.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file",
        "report"
      ],
      "sample_input": "Resume with name, title, one job, one education entry, and five skills.",
      "expected_output": "Preview should show those sections, and the PDF download should preserve the selected template style.",
      "acceptance_checks": [
        "Checks that a complete resume can be built without signup.",
        "Template, accent color, skills, and sections are visible before export.",
        "Direct PDF output replaces a popup-only print flow."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for guaranteed hiring outcomes, immigration applications, legal employment advice, or uploading confidential personal data on an untrusted device.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "ats resume builder",
        "resume keyword checker",
        "resume pdf before applying",
        "make resume match job description",
        "ats resume checker",
        "resume keyword checker",
        "match resume to job description",
        "make resume ats friendly"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/kits/job-application-pdf-kit/",
      "category_hub_url": "https://fasttool.app/fast-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/resume-builder/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/ats-resume-checker/",
        "https://fasttool.app/tools/resume-keyword-checker/",
        "https://fasttool.app/tools/word-to-pdf/",
        "https://fasttool.app/tools/pdf-to-word/",
        "https://fasttool.app/tasks/build-ats-friendly-resume-before-applying/",
        "https://fasttool.app/tools/word-character-counter/",
        "https://fasttool.app/tools/readability-checker/",
        "https://fasttool.app/finish/make-resume-pass-ats-check/"
      ],
      "quality_badge": "Upgraded"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "resume-keyword-checker",
      "name": "Resume Keyword Checker",
      "canonical_url": "https://fasttool.app/tools/resume-keyword-checker/",
      "category": "Writing",
      "summary": "Compare your resume against a job description to find keyword matches and gaps. Paste both texts to get an ATS match score, list of matched keywords, missing important terms, and tips to optimize your resume for applicant tracking systems.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Compare a resume bullet list against a job description mentioning React, accessibility, performance, and testing.",
      "expected_output": "The output should highlight naturally missing terms and warn against keyword stuffing.",
      "acceptance_checks": [
        "Focuses on relevance and readability, not artificial keyword density.",
        "Complements ATS checker and resume builder.",
        "Supports the application-prep task route."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for guaranteed interviews, automated hiring decisions, or legal employment advice.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "ats resume checker",
        "resume keyword checker",
        "match resume to job description",
        "make resume ats friendly",
        "ats resume builder",
        "resume keyword checker",
        "resume pdf before applying",
        "make resume match job description"
      ],
      "primary_finish_routes": [
        {
          "title": "Make a Resume Easier to Pass an ATS Check",
          "url": "https://fasttool.app/finish/make-resume-pass-ats-check/",
          "run_sheet_url": "https://fasttool.app/finish/make-resume-pass-ats-check/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/pdf-cleanup-rescue-kit/",
      "category_hub_url": "https://fasttool.app/pdf-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/resume-keyword-checker/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/ats-resume-checker/",
        "https://fasttool.app/tools/word-to-pdf/",
        "https://fasttool.app/tools/pdf-to-word/",
        "https://fasttool.app/tasks/build-ats-friendly-resume-before-applying/",
        "https://fasttool.app/tools/resume-builder/",
        "https://fasttool.app/tools/word-character-counter/",
        "https://fasttool.app/tools/readability-checker/",
        "https://fasttool.app/finish/make-resume-pass-ats-check/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "schema-visual-builder",
      "name": "Schema Visual Builder",
      "canonical_url": "https://fasttool.app/tools/schema-visual-builder/",
      "category": "SEO",
      "summary": "Build JSON-LD for Article, WebPage, SoftwareApplication, Product, FAQPage, Event, LocalBusiness, VideoObject, Recipe, and BreadcrumbList.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file"
      ],
      "sample_input": "Type: SoftwareApplication. Name: FastTool. URL, description, author, price, and category filled in.",
      "expected_output": "The builder should output valid JSON-LD, script tag copy, required-field warnings, and schema type notes.",
      "acceptance_checks": [
        "Outputs inspectable JSON-LD instead of opaque SEO promises.",
        "Highlights missing required or recommended fields.",
        "Keeps rich-result expectations separate from markup generation."
      ],
      "privacy_boundary": "Use public drafts or low-risk sample text first. The tool runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for guaranteed rich results, spam markup, fake reviews, or markup that contradicts visible page content.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "ai agent tools",
        "agent ready page",
        "browser agent page audit",
        "ai crawler policy",
        "chatgpt search visibility",
        "answer engine visibility",
        "ai overview visibility",
        "llm ready content",
        "prompt injection scanner",
        "rag chunk quality"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/kits/ai-traffic-reality-kit/",
      "category_hub_url": "https://fasttool.app/ai-agent-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/schema-visual-builder/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/ai-traffic-source-classifier/",
        "https://fasttool.app/tools/agent-output-evaluator/",
        "https://fasttool.app/tools/ai-agent-page-auditor/",
        "https://fasttool.app/tools/ai-crawler-policy-builder/",
        "https://fasttool.app/tools/query-fanout-simulator/",
        "https://fasttool.app/tools/ai-citation-readiness-checker/",
        "https://fasttool.app/tools/aio-visibility-scorer/",
        "https://fasttool.app/tools/llm-ready-content-scorer/"
      ],
      "quality_badge": "New"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "scientific-calculator",
      "name": "Scientific Calculator",
      "canonical_url": "https://fasttool.app/tools/scientific-calculator/",
      "category": "Math",
      "summary": "Full scientific calculator with dark theme UI, trig functions (sin/cos/tan), logarithms, factorial, powers, memory (M+/M-/MR/MC), degree/radian toggle, parentheses, keyboard input, and calculation history.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Expression: sin(30) in degree mode, then 2^8.",
      "expected_output": "sin(30) should be about 0.5 in degree mode, and 2^8 should be 256.",
      "acceptance_checks": [
        "Checks mode-sensitive trigonometry and exponent math.",
        "History should show the expression and result.",
        "Keyboard input can be compared with button input."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not engineering certification, tax math, medical dosing, or mission-critical numerical analysis.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "unit converter",
        "percentage calculator",
        "scientific calculator",
        "age calculator",
        "calculate percentage change correctly",
        "percentage increase calculator",
        "old new value percentage",
        "percent change formula",
        "compare loan mortgage interest scenarios",
        "loan vs mortgage calculator",
        "compound interest scenario",
        "monthly payment comparison",
        "convert units for recipe",
        "workshop unit converter"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/tool-finder/",
      "category_hub_url": "https://fasttool.app/fast-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/scientific-calculator/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/percentage-calculator/",
        "https://fasttool.app/tools/age-calculator/",
        "https://fasttool.app/tasks/run-quick-calculation/",
        "https://fasttool.app/tools/unit-converter/",
        "https://fasttool.app/tools/compound-interest-calculator/",
        "https://fasttool.app/tools/loan-calculator/",
        "https://fasttool.app/tasks/calculate-percentage-change-correctly/",
        "https://fasttool.app/tools/mortgage-calculator/"
      ]
    },
    {
      "schema_version": "2026-06-18",
      "tool_slug": "seamless-loop-crossfade-builder",
      "name": "Seamless Loop Crossfade Builder",
      "canonical_url": "https://fasttool.app/tools/seamless-loop-crossfade-builder/",
      "category": "Audio",
      "summary": "Repair clicks at the seam of a loop with equal-power crossfade, preview before/after seam metrics, export a WAV, and copy a proof receipt.",
      "reviewed": true,
      "reviewed_at": "2026-06-18",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "audio_file",
        "sample_loop",
        "crossfade_ms"
      ],
      "output_modes": [
        "repaired_wav",
        "waveform_proof",
        "json_receipt"
      ],
      "sample_input": "Use sample loop. Crossfade: 45 ms. Target: ambient/game/background loop. Preserve duration.",
      "expected_output": "The builder should show seam delta before and after, export a repaired WAV, display waveform proof, and copy a JSON receipt.",
      "acceptance_checks": [
        "Produces a real repaired WAV artifact in the browser.",
        "Measures seam discontinuity before and after repair.",
        "Keeps the claim narrow: loop-seam smoothing, not mastering or copyright analysis."
      ],
      "privacy_boundary": "Use public, low-risk files first. Processing runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for certified mastering, broadcast loudness, copyright clearance, forensic audio repair, or recovering damaged recordings.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#toolWorkbench input",
          "#toolWorkbench textarea",
          "#toolWorkbench select",
          "#toolWorkbench canvas"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output",
          "canvas",
          "svg",
          "audio"
        ],
        "completion_signal": "Report the visible output, copy or summarize the JSON proof receipt, verify exported artifact availability, and disclose what was not verified."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the exact sample or user input used, report the visible output, copy or summarize the JSON proof receipt, verify exported artifact availability, and disclose anything not verified.",
      "query_aliases": [
        "seamless loop crossfade",
        "fix audio loop click",
        "loop seam repair",
        "game audio loop builder",
        "ambient loop crossfade wav"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/kits/creative-signal-lab/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/seamless-loop-crossfade-builder/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/kits/creative-signal-lab/",
        "https://fasttool.app/tools/ui-screenshot-diff-proof-studio/",
        "https://fasttool.app/tools/audio-release-visual-pack-studio/",
        "https://fasttool.app/tools/visual-style-dna-contact-sheet/"
      ],
      "quality_badge": "Loop Repair",
      "receipt_schema": "creative-signal-receipt/v1"
    },
    {
      "schema_version": "2026-06-18",
      "tool_slug": "seamless-svg-pattern-tile-lab",
      "name": "Seamless SVG Pattern Tile Lab",
      "canonical_url": "https://fasttool.app/tools/seamless-svg-pattern-tile-lab/",
      "category": "Design",
      "summary": "Generate deterministic repeatable SVG pattern tiles with edge-match checks, CSS background snippets, PNG export, and replayable seed receipts.",
      "reviewed": true,
      "reviewed_at": "2026-06-18",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "settings",
        "seed"
      ],
      "output_modes": [
        "visible_svg",
        "svg_export",
        "png_export",
        "css_snippet",
        "json_receipt"
      ],
      "sample_input": "Motif: orbit grid. Seed: tile-proof-42. Tile: 360 px. Density: 64. Palette: ink, mint, gold.",
      "expected_output": "The lab should render a seamless preview grid, pass edge-match checks, export SVG/PNG/CSS, and copy a JSON seed receipt.",
      "acceptance_checks": [
        "Builds symmetrical motif points across tile boundaries for repeat-safe output.",
        "Shows a repeated preview instead of only a single tile.",
        "Checks edge compatibility, dimensions, contrast, and export byte size."
      ],
      "privacy_boundary": "Use public, low-risk drafts or local sample files first. Processing runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for licensed textile production, trademark pattern approval, or print color management by itself.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench select",
          "#toolWorkbench canvas"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output",
          "canvas",
          "svg"
        ],
        "completion_signal": "Report the visible output, copy or summarize the JSON proof receipt, and compare the result with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the exact sample or user input used, report the visible output, copy or summarize the JSON proof receipt, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "seamless svg pattern generator",
        "repeatable tile maker",
        "css background pattern generator",
        "seeded svg pattern",
        "pattern tile proof lab"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/kits/creative-output-lab/",
      "category_hub_url": "https://fasttool.app/design-color-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/seamless-svg-pattern-tile-lab/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/kits/creative-output-lab/",
        "https://fasttool.app/tools/generative-visual-asset-studio/",
        "https://fasttool.app/tools/audio-reactive-visual-clip-maker/",
        "https://fasttool.app/tools/open-graph-image-proof-composer/",
        "https://fasttool.app/tools/prompt-injection-defense-arena/"
      ],
      "quality_badge": "Creative Lab",
      "receipt_schema": "creative-output-receipt/v1"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "password-generator",
      "name": "Secure Password Generator",
      "canonical_url": "https://fasttool.app/tools/password-generator/",
      "category": "Security",
      "summary": "Generate strong passwords with custom length and character sets.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Length: 16. Include uppercase, lowercase, numbers, and symbols.",
      "expected_output": "Output should be 16 characters and include the selected character groups where possible.",
      "acceptance_checks": [
        "Format check is visible without exposing a real password.",
        "Regenerate should produce different values across attempts.",
        "Strength indicator should reflect length and character diversity."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for generating shared production secrets on an untrusted device or storing credentials.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "generate password",
        "generate uuid",
        "hash text",
        "url encode",
        "base64 decode",
        "create strong password workflow",
        "generate password and uuid",
        "password generator safe",
        "hash sample text",
        "generate uuid and password",
        "test data password generator",
        "uuid generator for fixtures",
        "sample secret generator",
        "wifi qr code generator"
      ],
      "primary_finish_routes": [
        {
          "title": "Create a WiFi QR Code for Guests",
          "url": "https://fasttool.app/finish/create-wifi-qr-code-for-guests/",
          "run_sheet_url": "https://fasttool.app/finish/create-wifi-qr-code-for-guests/#smart-run-sheet"
        },
        {
          "title": "Generate Passwords and UUIDs for Test Data",
          "url": "https://fasttool.app/finish/generate-password-and-uuid-for-test-data/",
          "run_sheet_url": "https://fasttool.app/finish/generate-password-and-uuid-for-test-data/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/pdf-cleanup-rescue-kit/",
      "category_hub_url": "https://fasttool.app/pdf-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/password-generator/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/uuid-generator/",
        "https://fasttool.app/tools/hash-generator/",
        "https://fasttool.app/tools/url-encoder-decoder/",
        "https://fasttool.app/tools/base64-encoder-decoder/",
        "https://fasttool.app/tools/jwt-decoder/",
        "https://fasttool.app/tasks/generate-security-values/",
        "https://fasttool.app/tasks/create-strong-password-workflow/",
        "https://fasttool.app/tasks/generate-test-ids-and-hashes/"
      ],
      "quality_badge": "Popular"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "serp-pixel-ruler",
      "name": "SERP Pixel Ruler",
      "canonical_url": "https://fasttool.app/tools/serp-pixel-ruler/",
      "category": "SEO",
      "summary": "Pixel-accurate Google SERP preview using Arial 18px/14px (desktop) and 16px/12.8px (mobile). Unicode-aware, shows exact truncation before publish.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "report"
      ],
      "sample_input": "Title: Fast Tools Online and AI Agent Tools | FastTool. Description: Fast browser tools with sample input, expected output, and proof checks.",
      "expected_output": "The preview should show desktop and mobile title or description risk with copyable rewrite guidance.",
      "acceptance_checks": [
        "Uses pixel-width thinking instead of simple character counts.",
        "Pairs SERP copy with actual preview constraints.",
        "Helps avoid weak titles before Search Console feedback arrives."
      ],
      "privacy_boundary": "Use public, low-risk rows or sample content first. The tool runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for guaranteed Google display, live SERP scraping, ranking prediction, or regulated advertising approval.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "ai agent tools",
        "agent ready page",
        "browser agent page audit",
        "ai crawler policy",
        "chatgpt search visibility",
        "answer engine visibility",
        "ai overview visibility",
        "llm ready content",
        "prompt injection scanner",
        "rag chunk quality"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/kits/ai-traffic-reality-kit/",
      "category_hub_url": "https://fasttool.app/ai-agent-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/serp-pixel-ruler/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/ai-traffic-source-classifier/",
        "https://fasttool.app/tools/agent-output-evaluator/",
        "https://fasttool.app/tools/ai-agent-page-auditor/",
        "https://fasttool.app/tools/ai-crawler-policy-builder/",
        "https://fasttool.app/tools/query-fanout-simulator/",
        "https://fasttool.app/tools/ai-citation-readiness-checker/",
        "https://fasttool.app/tools/aio-visibility-scorer/",
        "https://fasttool.app/tools/llm-ready-content-scorer/"
      ],
      "quality_badge": "New"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "sql-formatter",
      "name": "SQL Formatter & Beautifier",
      "canonical_url": "https://fasttool.app/tools/sql-formatter/",
      "category": "Developer",
      "summary": "Format, beautify, and minify SQL queries with syntax highlighting, keyword uppercasing, nested query indentation, and common SQL templates.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "SQL: select id,name from users where active=1 order by name",
      "expected_output": "Formatted output should separate clauses and uppercase common keywords.",
      "acceptance_checks": [
        "Fixture covers SELECT, FROM, WHERE, and ORDER BY.",
        "Output should preserve table and column names.",
        "Minify and beautify should not change query meaning."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for executing SQL, validating permissions, preventing injection, or optimizing database performance.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "format sql before sharing",
        "sql formatter for review",
        "pretty print sql query",
        "clean sql snippet",
        "sql formatter",
        "format sql before review",
        "sql beautifier",
        "css minifier",
        "javascript minifier",
        "html minifier",
        "sql formatter",
        "minify css js html before publish",
        "compress front end code",
        "javascript css html minifier"
      ],
      "primary_finish_routes": [
        {
          "title": "Format a SQL Query Before Sharing",
          "url": "https://fasttool.app/finish/format-sql-query-before-sharing/",
          "run_sheet_url": "https://fasttool.app/finish/format-sql-query-before-sharing/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/api-debugging-request-kit/",
      "category_hub_url": "https://fasttool.app/json-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/sql-formatter/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/javascript-minifier/",
        "https://fasttool.app/tools/html-minifier/",
        "https://fasttool.app/tasks/clean-code-snippets/",
        "https://fasttool.app/tools/css-minifier/",
        "https://fasttool.app/tools/regex-tester/",
        "https://fasttool.app/tasks/minify-front-end-before-publish/",
        "https://fasttool.app/tools/word-character-counter/",
        "https://fasttool.app/tools/text-reverser/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "svg-to-png",
      "name": "SVG to PNG",
      "canonical_url": "https://fasttool.app/tools/svg-to-png/",
      "category": "Image",
      "summary": "Convert SVG vector files to PNG raster images.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file"
      ],
      "sample_input": "Export an SVG logo to a 1024 x 1024 transparent PNG.",
      "expected_output": "The PNG should keep sharp edges, transparency, and the requested pixel dimensions.",
      "acceptance_checks": [
        "Checks size and transparency explicitly.",
        "Pairs with image compression only after the export is correct.",
        "Solves a common upload-format problem."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for trademark approval, print color proofing, or recovering detail from a poor source SVG.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "svg to png",
        "convert logo to png",
        "transparent png logo",
        "resize logo image",
        "make favicon from svg",
        "prepare app icon image",
        "resize logo to favicon",
        "convert svg logo to png icon",
        "svg to png logo",
        "convert svg to webp",
        "rasterize svg logo",
        "make png from svg"
      ],
      "primary_finish_routes": [
        {
          "title": "Prepare a Favicon and App Icon Image",
          "url": "https://fasttool.app/finish/prepare-favicon-and-app-icon-image/",
          "run_sheet_url": "https://fasttool.app/finish/prepare-favicon-and-app-icon-image/#smart-run-sheet"
        },
        {
          "title": "Convert an SVG Logo to PNG or WebP",
          "url": "https://fasttool.app/finish/convert-svg-logo-to-png-or-webp/",
          "run_sheet_url": "https://fasttool.app/finish/convert-svg-logo-to-png-or-webp/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/image-upload-conversion-kit/",
      "category_hub_url": "https://fasttool.app/image-optimization-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/svg-to-png/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/image-resizer/",
        "https://fasttool.app/tools/image-compressor/",
        "https://fasttool.app/tools/png-to-webp/",
        "https://fasttool.app/tasks/convert-an-svg-logo-to-png/",
        "https://fasttool.app/tools/color-contrast-checker/",
        "https://fasttool.app/finish/prepare-favicon-and-app-icon-image/",
        "https://fasttool.app/tools/color-picker/",
        "https://fasttool.app/finish/convert-svg-logo-to-png-or-webp/"
      ]
    },
    {
      "schema_version": "2026-06-18",
      "tool_slug": "system-prompt-optimizer",
      "name": "System Prompt Optimizer",
      "canonical_url": "https://fasttool.app/tools/system-prompt-optimizer/",
      "category": "Developer",
      "summary": "Turn a vague system prompt into a production prompt with role, objective, boundaries, uncertainty rules, output contract, tool-use rules, preserved-intent ledger, contradiction warnings, and JSON receipt.",
      "reviewed": true,
      "reviewed_at": "2026-06-18",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "json_receipt"
      ],
      "sample_input": "Paste a repeated assistant or tool-using-agent system prompt with vague role text, no output format, weak uncertainty handling, and no sensitive-action boundary.",
      "expected_output": "The optimizer should return before/after token estimates, readiness score, missing contract parts, contradiction warnings, change ledger, optimized prompt, and JSON receipt.",
      "acceptance_checks": [
        "Shows what changed instead of silently rewriting everything.",
        "Preserves user intent while adding role, objective, boundaries, output contract, and tool-use rules.",
        "Keeps prompt optimization local and inspectable with a copyable receipt."
      ],
      "privacy_boundary": "Use public drafts or low-risk sample text first. The tool runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for bypassing safety systems, generating hidden policies, or guaranteeing model behavior in production.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the exact sample or user input used, report the visible result, copy or summarize the JSON receipt, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "agent workflow proof passport",
        "prompt rag quality runbook",
        "ai agent workflow receipt",
        "prompt injection gate",
        "json schema from llm output",
        "context window budget",
        "embedding duplicate chunks",
        "system prompt production contract",
        "agent system prompt optimizer",
        "prompt change ledger",
        "prompt readiness score",
        "tool-use prompt rules",
        "ai agent tools",
        "agent ready page",
        "browser agent page audit",
        "ai crawler policy",
        "chatgpt search visibility",
        "answer engine visibility",
        "ai overview visibility",
        "llm ready content",
        "prompt injection scanner",
        "rag chunk quality"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/kits/prompt-rag-quality-kit/",
      "category_hub_url": "https://fasttool.app/ai-agent-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/system-prompt-optimizer/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/kits/prompt-rag-quality-kit/",
        "https://fasttool.app/kits/prompt-rag-quality-kit/#workflow-console",
        "https://fasttool.app/tools/agent-task-contract-studio/",
        "https://fasttool.app/tools/context-window-budgeter/",
        "https://fasttool.app/tools/prompt-injection-scanner/",
        "https://fasttool.app/tools/rag-chunk-quality-scorer/",
        "https://fasttool.app/tools/embedding-similarity-explorer/",
        "https://fasttool.app/tools/llm-output-schema-extractor/",
        "https://fasttool.app/tools/ai-hallucination-likelihood-scorer/",
        "https://fasttool.app/tools/agent-output-evaluator/",
        "https://fasttool.app/tools/ai-traffic-source-classifier/",
        "https://fasttool.app/tools/ai-agent-page-auditor/",
        "https://fasttool.app/tools/ai-crawler-policy-builder/",
        "https://fasttool.app/tools/query-fanout-simulator/",
        "https://fasttool.app/tools/ai-citation-readiness-checker/",
        "https://fasttool.app/tools/aio-visibility-scorer/"
      ],
      "quality_badge": "New"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "text-diff",
      "name": "Text Diff / Compare",
      "canonical_url": "https://fasttool.app/tools/text-diff/",
      "category": "Developer",
      "summary": "Side-by-side diff, unified view, and word-level comparison with line numbers and similarity stats.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Compare two product-intro drafts where one claim changed and one sentence was removed.",
      "expected_output": "The diff should show additions, deletions, and changed claims clearly enough for final review.",
      "acceptance_checks": [
        "Helps catch unsupported copy changes before publishing.",
        "Pairs with word count, readability, and case conversion.",
        "Useful in task routes that compare drafts before publishing."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for legal contract redlining, medical records, compliance review, or binary file comparison.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "compare two text versions",
        "text diff before publish",
        "check copy changes",
        "diff checker online",
        "text diff online",
        "check changed copy before publishing",
        "compare drafts",
        "bulk email validator",
        "clean email list before import",
        "validate emails in bulk",
        "remove invalid emails from list",
        "html css js minifier",
        "minify code before publish",
        "minify html online"
      ],
      "primary_finish_routes": [
        {
          "title": "Compare Two Text Versions Before Publishing",
          "url": "https://fasttool.app/finish/compare-text-versions-before-publishing/",
          "run_sheet_url": "https://fasttool.app/finish/compare-text-versions-before-publishing/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/tool-finder/",
      "category_hub_url": "https://fasttool.app/json-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/text-diff/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/word-character-counter/",
        "https://fasttool.app/tools/readability-checker/",
        "https://fasttool.app/tools/case-converter/",
        "https://fasttool.app/tasks/compare-two-text-versions-before-publishing/",
        "https://fasttool.app/tools/csv-to-json/",
        "https://fasttool.app/finish/clean-email-list-before-import/",
        "https://fasttool.app/tools/markdown-to-html/",
        "https://fasttool.app/finish/compare-text-versions-before-publishing/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "text-reverser",
      "name": "Text Reverser",
      "canonical_url": "https://fasttool.app/tools/text-reverser/",
      "category": "Writing",
      "summary": "Reverse text, words, or lines instantly.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Text: Fast Tool",
      "expected_output": "Character reverse should be looT tsaF; word reverse should be Tool Fast.",
      "acceptance_checks": [
        "Two-word fixture distinguishes character and word modes.",
        "Output is deterministic and visible by inspection.",
        "Line mode can be checked separately with multi-line input."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for secure obfuscation, encryption, or language translation.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "format sql before sharing",
        "sql formatter for review",
        "pretty print sql query",
        "clean sql snippet",
        "clean text case before publishing",
        "title case sentence case converter",
        "fix uppercase headline",
        "copy case converter"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/tool-finder/",
      "category_hub_url": "https://fasttool.app/fast-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/text-reverser/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/regex-tester/",
        "https://fasttool.app/tools/word-character-counter/",
        "https://fasttool.app/tools/json-formatter/",
        "https://fasttool.app/tasks/format-sql-before-sharing/",
        "https://fasttool.app/tools/readability-checker/",
        "https://fasttool.app/tools/markdown-to-html/",
        "https://fasttool.app/tasks/clean-text-case-before-publishing/"
      ]
    },
    {
      "schema_version": "2026-06-18",
      "tool_slug": "ui-screenshot-diff-proof-studio",
      "name": "UI Screenshot Diff Proof Studio",
      "canonical_url": "https://fasttool.app/tools/ui-screenshot-diff-proof-studio/",
      "category": "Design",
      "summary": "Compare before and after UI screenshots, generate annotated diff heatmaps, changed-pixel percentages, viewport proof sheets, and JSON evidence receipts.",
      "reviewed": true,
      "reviewed_at": "2026-06-18",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "image_files",
        "sample_images",
        "threshold"
      ],
      "output_modes": [
        "diff_png",
        "heatmap",
        "markdown_summary",
        "json_receipt"
      ],
      "sample_input": "Use sample before/after UI screenshots. Threshold: 18. Intended change: primary CTA spacing and label only.",
      "expected_output": "The studio should render before, after, and heatmap panels, show changed-pixel percentage, flag whether the diff is contained, and export PNG plus JSON proof.",
      "acceptance_checks": [
        "Creates a visible diff artifact instead of only a text score.",
        "Reports dimensions, threshold, changed pixels, and containment warnings.",
        "Gives AI agents a concrete visual proof receipt before claiming UI work is done."
      ],
      "privacy_boundary": "Use public, low-risk files first. Processing runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for legal visual evidence, medical imaging, pixel-perfect accessibility certification, or replacing human design review.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#toolWorkbench input",
          "#toolWorkbench textarea",
          "#toolWorkbench select",
          "#toolWorkbench canvas"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output",
          "canvas",
          "svg",
          "audio"
        ],
        "completion_signal": "Report the visible output, copy or summarize the JSON proof receipt, verify exported artifact availability, and disclose what was not verified."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the exact sample or user input used, report the visible output, copy or summarize the JSON proof receipt, verify exported artifact availability, and disclose anything not verified.",
      "query_aliases": [
        "ui screenshot diff",
        "visual regression proof",
        "ai agent ui proof",
        "screenshot heatmap diff",
        "before after screenshot checker"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/kits/creative-signal-lab/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/ui-screenshot-diff-proof-studio/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/kits/creative-signal-lab/",
        "https://fasttool.app/tools/audio-release-visual-pack-studio/",
        "https://fasttool.app/tools/visual-style-dna-contact-sheet/",
        "https://fasttool.app/tools/seamless-loop-crossfade-builder/"
      ],
      "quality_badge": "Visual Proof",
      "receipt_schema": "creative-signal-receipt/v1"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "unit-converter",
      "name": "Universal Unit Converter",
      "canonical_url": "https://fasttool.app/tools/unit-converter/",
      "category": "Math",
      "summary": "Convert 90+ units across 10 categories: length, weight, temperature, volume, area, speed, time, digital storage, pressure, and energy.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Temperature: 100 Celsius to Fahrenheit.",
      "expected_output": "Result should be 212 Fahrenheit.",
      "acceptance_checks": [
        "Uses a standard boiling-point fixture.",
        "Temperature conversion checks offset math, not only multiplication.",
        "Changing back should return about 100 Celsius."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for laboratory calibration, engineering safety limits, medication dosing, or legal measurements.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "unit converter",
        "percentage calculator",
        "scientific calculator",
        "age calculator",
        "convert units for recipe",
        "workshop unit converter",
        "celsius fahrenheit inches cm",
        "convert measurement quickly",
        "calculate percentage change correctly",
        "percentage increase calculator",
        "old new value percentage",
        "percent change formula",
        "basic bmi estimate",
        "calculate age and bmi"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/tool-finder/",
      "category_hub_url": "https://fasttool.app/fast-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/unit-converter/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/percentage-calculator/",
        "https://fasttool.app/tools/scientific-calculator/",
        "https://fasttool.app/tools/age-calculator/",
        "https://fasttool.app/tasks/run-quick-calculation/",
        "https://fasttool.app/tools/compound-interest-calculator/",
        "https://fasttool.app/tools/loan-calculator/",
        "https://fasttool.app/tasks/calculate-percentage-change-correctly/",
        "https://fasttool.app/tools/aspect-ratio-calculator/"
      ],
      "quality_badge": "Upgraded"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "url-encoder-decoder",
      "name": "URL Encode/Decode",
      "canonical_url": "https://fasttool.app/tools/url-encoder-decoder/",
      "category": "Developer",
      "summary": "Encode and decode URLs with full URL parser showing protocol, host, path, query params, and fragment. Query string builder, bulk mode, encodeURI vs encodeURIComponent toggle, and live conversion.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Text: name=Fast Tool&city=Istanbul",
      "expected_output": "Encoded component should include Fast%20Tool and %26 for the ampersand when using component mode.",
      "acceptance_checks": [
        "Fixture checks spaces and reserved characters.",
        "Decode should return the original text.",
        "Full URL parser and component mode are intentionally separate."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for phishing analysis, malware URL handling, or hiding sensitive tokens.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "generate password",
        "generate uuid",
        "hash text",
        "url encode",
        "base64 decode",
        "qr code generator",
        "url encode link",
        "create qr for url",
        "decode jwt without sharing secret",
        "inspect jwt payload",
        "jwt decoder safe",
        "read jwt claims",
        "create strong password workflow",
        "generate password and uuid"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/kits/api-debugging-request-kit/",
      "category_hub_url": "https://fasttool.app/json-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/url-encoder-decoder/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/uuid-generator/",
        "https://fasttool.app/tools/hash-generator/",
        "https://fasttool.app/tools/base64-encoder-decoder/",
        "https://fasttool.app/tools/jwt-decoder/",
        "https://fasttool.app/tasks/generate-security-values/",
        "https://fasttool.app/tasks/create-safe-qr-link/",
        "https://fasttool.app/tools/json-formatter/",
        "https://fasttool.app/tasks/decode-jwt-without-sharing-secret/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "url-parser",
      "name": "URL Parser",
      "canonical_url": "https://fasttool.app/tools/url-parser/",
      "category": "Developer",
      "summary": "Parse URLs into components like protocol, host, path, and query parameters.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Parse https://example.com/report?utm_source=newsletter&name=Ada%20Lovelace#summary.",
      "expected_output": "The output should separate protocol, host, path, query parameters, decoded values, and fragment.",
      "acceptance_checks": [
        "Makes tokens and query parameters visible before sharing.",
        "Pairs with URL encoding and QR workflows.",
        "Useful for debugging links before publication."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for malware analysis, phishing triage, private one-time login links, or secrets embedded in URLs.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "url parser",
        "decode query string",
        "url encode parameters",
        "debug utm link",
        "fix encoded url",
        "curl to python requests",
        "curl to javascript fetch",
        "convert curl to code",
        "api curl command to code",
        "regex tester",
        "test regex replace",
        "regex match checker",
        "debug regex pattern",
        "find replace regex"
      ],
      "primary_finish_routes": [
        {
          "title": "Fix an Encoded URL or UTM Link",
          "url": "https://fasttool.app/finish/fix-encoded-url-or-utm-link/",
          "run_sheet_url": "https://fasttool.app/finish/fix-encoded-url-or-utm-link/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/api-debugging-request-kit/",
      "category_hub_url": "https://fasttool.app/json-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/url-parser/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/url-encoder-decoder/",
        "https://fasttool.app/tools/qr-code-generator/",
        "https://fasttool.app/tools/hash-generator/",
        "https://fasttool.app/tasks/debug-a-url-query-string/",
        "https://fasttool.app/tools/json-formatter/",
        "https://fasttool.app/tools/jwt-decoder/",
        "https://fasttool.app/tools/base64-encoder-decoder/",
        "https://fasttool.app/finish/convert-curl-request-to-code-snippet/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "uuid-generator",
      "name": "UUID Generator",
      "canonical_url": "https://fasttool.app/tools/uuid-generator/",
      "category": "Developer",
      "summary": "Generate UUID v4 with bulk generation (1-100), format options (standard, uppercase, no dashes, Base64), UUID validator with version detection, click-to-copy, download as TXT, and generation history.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Generate 100 UUID v4 values.",
      "expected_output": "Each value should match UUID v4 format, and nearly all generated values should be unique.",
      "acceptance_checks": [
        "Regex format check is visible for each value.",
        "Bulk generation helps catch repeated random output.",
        "Validation mode should identify version and format."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for cryptographic key generation, identity proofing, or database design without collision planning.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "generate test ids and hashes",
        "uuid and hash generator",
        "create fixture id",
        "hash sample string",
        "generate uuid and password",
        "test data password generator",
        "uuid generator for fixtures",
        "sample secret generator",
        "generate password",
        "generate uuid",
        "hash text",
        "url encode",
        "base64 decode",
        "create strong password workflow"
      ],
      "primary_finish_routes": [
        {
          "title": "Generate Passwords and UUIDs for Test Data",
          "url": "https://fasttool.app/finish/generate-password-and-uuid-for-test-data/",
          "run_sheet_url": "https://fasttool.app/finish/generate-password-and-uuid-for-test-data/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/tool-finder/",
      "category_hub_url": "https://fasttool.app/json-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/uuid-generator/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/hash-generator/",
        "https://fasttool.app/tools/url-encoder-decoder/",
        "https://fasttool.app/tools/base64-encoder-decoder/",
        "https://fasttool.app/tools/jwt-decoder/",
        "https://fasttool.app/tasks/generate-security-values/",
        "https://fasttool.app/tasks/create-strong-password-workflow/",
        "https://fasttool.app/tools/password-generator/",
        "https://fasttool.app/tasks/generate-test-ids-and-hashes/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "video-compressor",
      "name": "Video Compressor",
      "canonical_url": "https://fasttool.app/tools/video-compressor/",
      "category": "Image",
      "summary": "Compress short videos locally by lowering width, frame rate, and bitrate, then export a smaller WebM copy for sharing or upload forms.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file"
      ],
      "sample_input": "Video: harmless 15 second 1080p clip. Target width: 720px. FPS: 24. Bitrate: 900 kbps.",
      "expected_output": "Compressed WebM should download, play back, and show a before/after byte comparison with lower resolution and controlled bitrate.",
      "acceptance_checks": [
        "Checks actual browser re-encoding and playable output.",
        "Shows when audio capture is or is not available in the current browser.",
        "Uses duration guards so large files do not silently crash the tab."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for archival masters, exact color-managed video, subtitle preservation, professional codec delivery, or confidential media on untrusted devices.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "compress video under 25mb",
        "reduce video size for upload",
        "video too large for email",
        "compress mp4 online",
        "make video smaller",
        "video cutter",
        "video cut",
        "trim video",
        "compress video",
        "mp4 to mp3",
        "video to gif",
        "audio cutter",
        "trim video online",
        "cut mp4 for social media"
      ],
      "primary_finish_routes": [
        {
          "title": "Compress a Video Under an Upload Limit",
          "url": "https://fasttool.app/finish/compress-video-under-upload-limit/",
          "run_sheet_url": "https://fasttool.app/finish/compress-video-under-upload-limit/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/image-upload-conversion-kit/",
      "category_hub_url": "https://fasttool.app/image-optimization-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/video-compressor/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/video-trimmer/",
        "https://fasttool.app/tools/mp4-to-mp3-converter/",
        "https://fasttool.app/tools/video-to-gif/",
        "https://fasttool.app/tools/audio-cutter/",
        "https://fasttool.app/tools/video-cutter/",
        "https://fasttool.app/finish/cut-video-for-social-post/",
        "https://fasttool.app/finish/compress-video-under-upload-limit/",
        "https://fasttool.app/tools/image-compressor/"
      ],
      "quality_badge": "Reviewed"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "video-cutter",
      "name": "Video Cutter",
      "canonical_url": "https://fasttool.app/tools/video-cutter/",
      "category": "Productivity",
      "summary": "Cut a short section from MP4, WebM, or MOV in the browser, preview the range, and export a trimmed WebM copy without uploading the file.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "report"
      ],
      "sample_input": "Video: harmless 12 second MP4 or WebM demo clip. Start: 2.0s. End: 6.5s.",
      "expected_output": "Exported WebM should contain only the selected section, play in the browser, and report a duration close to 4.5 seconds.",
      "acceptance_checks": [
        "Checks actual video preview and export path, not only a file picker.",
        "Selection duration, output type, and output bytes are visible after export.",
        "Warns when the browser cannot encode local video instead of pretending every device works."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for feature-length files, legal evidence, codec-preserving broadcast work, DRM media, or exact frame-accurate professional editing.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "video cutter",
        "video cut",
        "trim video",
        "compress video",
        "mp4 to mp3",
        "video to gif",
        "audio cutter",
        "trim video online",
        "cut mp4 for social media",
        "short video clip maker",
        "mp4 to mp3",
        "extract audio from video",
        "cut audio online",
        "trim audio from mp4"
      ],
      "primary_finish_routes": [
        {
          "title": "Cut a Short Video for a Social Post",
          "url": "https://fasttool.app/finish/cut-video-for-social-post/",
          "run_sheet_url": "https://fasttool.app/finish/cut-video-for-social-post/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/tool-finder/",
      "category_hub_url": "https://fasttool.app/fast-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/video-cutter/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/video-trimmer/",
        "https://fasttool.app/tools/video-compressor/",
        "https://fasttool.app/tools/mp4-to-mp3-converter/",
        "https://fasttool.app/tools/video-to-gif/",
        "https://fasttool.app/tools/audio-cutter/",
        "https://fasttool.app/finish/convert-mp4-to-mp3-or-cut-audio/",
        "https://fasttool.app/finish/cut-video-for-social-post/",
        "https://fasttool.app/finish/compress-video-under-upload-limit/"
      ],
      "quality_badge": "Reviewed"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "video-to-gif",
      "name": "Video to GIF Converter",
      "canonical_url": "https://fasttool.app/tools/video-to-gif/",
      "category": "Image",
      "summary": "Turn a short video selection into an animated GIF with start/end controls, width and FPS limits, and browser-side encoding.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file"
      ],
      "sample_input": "Video: harmless 6 second UI demo. Start: 0s. End: 4s. FPS: 8. Width: 360px.",
      "expected_output": "Animated GIF should loop, download as image/gif, and stay within the frame-count guard.",
      "acceptance_checks": [
        "Uses real frames captured from the source video.",
        "Frame count and output size are visible after encoding.",
        "Warns that GIF is inefficient and should be kept short."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for long videos, high-fidelity color, audio, accessibility captions, or professional animation delivery.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "video to gif",
        "mp4 to gif",
        "make gif from video",
        "animated gif from clip",
        "convert video clip to gif",
        "video cutter",
        "video cut",
        "trim video",
        "compress video",
        "mp4 to mp3",
        "video to gif",
        "audio cutter",
        "extract audio from video",
        "cut audio online"
      ],
      "primary_finish_routes": [
        {
          "title": "Turn a Video Clip Into a GIF",
          "url": "https://fasttool.app/finish/turn-video-clip-into-gif/",
          "run_sheet_url": "https://fasttool.app/finish/turn-video-clip-into-gif/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/image-upload-conversion-kit/",
      "category_hub_url": "https://fasttool.app/image-optimization-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/video-to-gif/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/video-trimmer/",
        "https://fasttool.app/tools/video-compressor/",
        "https://fasttool.app/tools/mp4-to-mp3-converter/",
        "https://fasttool.app/tools/audio-cutter/",
        "https://fasttool.app/tools/video-cutter/",
        "https://fasttool.app/finish/convert-mp4-to-mp3-or-cut-audio/",
        "https://fasttool.app/finish/cut-video-for-social-post/",
        "https://fasttool.app/finish/compress-video-under-upload-limit/"
      ],
      "quality_badge": "Reviewed"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "video-trimmer",
      "name": "Video Trimmer",
      "canonical_url": "https://fasttool.app/tools/video-trimmer/",
      "category": "Productivity",
      "summary": "Trim a video to an exact start and end point with local preview, duration checks, and browser-based WebM export.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Video: harmless 10 second screen-recording clip. Start: 1.25s. End: 5.25s.",
      "expected_output": "Trimmed WebM should open, show the selected motion range, and be shorter than the source clip.",
      "acceptance_checks": [
        "Uses the same local media export path a real visitor uses.",
        "Preview step catches wrong start/end values before export.",
        "The page states WebM re-encoding and short-clip limits clearly."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for preserving original MP4 codecs, subtitle tracks, multi-hour files, forensic video, or certified production delivery.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "video cutter",
        "video cut",
        "trim video",
        "compress video",
        "mp4 to mp3",
        "video to gif",
        "audio cutter",
        "extract audio from video",
        "cut audio online",
        "trim audio from mp4",
        "trim video online",
        "cut mp4 for social media",
        "short video clip maker",
        "compress video under 25mb"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/tool-finder/",
      "category_hub_url": "https://fasttool.app/fast-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/video-trimmer/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/video-compressor/",
        "https://fasttool.app/tools/mp4-to-mp3-converter/",
        "https://fasttool.app/tools/video-to-gif/",
        "https://fasttool.app/tools/audio-cutter/",
        "https://fasttool.app/tools/video-cutter/",
        "https://fasttool.app/finish/convert-mp4-to-mp3-or-cut-audio/",
        "https://fasttool.app/finish/cut-video-for-social-post/",
        "https://fasttool.app/finish/compress-video-under-upload-limit/"
      ],
      "quality_badge": "Reviewed"
    },
    {
      "schema_version": "2026-06-18",
      "tool_slug": "visual-style-dna-contact-sheet",
      "name": "Visual Style DNA Contact Sheet",
      "canonical_url": "https://fasttool.app/tools/visual-style-dna-contact-sheet/",
      "category": "Design",
      "summary": "Extract palette, contrast, density, shape language, prompt constraints, CSS variables, and a reusable style DNA receipt from reference images or a sample set.",
      "reviewed": true,
      "reviewed_at": "2026-06-18",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "image_files",
        "sample_references",
        "brief"
      ],
      "output_modes": [
        "contact_sheet_png",
        "css_variables",
        "prompt_block",
        "json_receipt"
      ],
      "sample_input": "Use sample references. Goal: premium compact browser tool UI. Constraints: no stock-photo look, strong proof/export UI, restrained colors.",
      "expected_output": "The tool should generate a contact sheet, palette swatches, CSS variables, prompt block, negative constraints, and JSON style DNA receipt.",
      "acceptance_checks": [
        "Turns visual references into a reusable design contract for humans and agents.",
        "Outputs palette, density, contrast, layout language, and prompt constraints together.",
        "Provides replayable sample references when private images are not used."
      ],
      "privacy_boundary": "Use public, low-risk files first. Processing runs in the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for trademark review, brand identity approval, color-managed print proofing, or copying protected visual styles.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#toolWorkbench input",
          "#toolWorkbench textarea",
          "#toolWorkbench select",
          "#toolWorkbench canvas"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output",
          "canvas",
          "svg",
          "audio"
        ],
        "completion_signal": "Report the visible output, copy or summarize the JSON proof receipt, verify exported artifact availability, and disclose what was not verified."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the exact sample or user input used, report the visible output, copy or summarize the JSON proof receipt, verify exported artifact availability, and disclose anything not verified.",
      "query_aliases": [
        "visual style dna",
        "style contact sheet",
        "design reference extractor",
        "ai image prompt style guide",
        "brand visual constraints"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/kits/creative-signal-lab/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/visual-style-dna-contact-sheet/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/kits/creative-signal-lab/",
        "https://fasttool.app/tools/ui-screenshot-diff-proof-studio/",
        "https://fasttool.app/tools/audio-release-visual-pack-studio/",
        "https://fasttool.app/tools/seamless-loop-crossfade-builder/"
      ],
      "quality_badge": "Style DNA",
      "receipt_schema": "creative-signal-receipt/v1"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "color-contrast-checker",
      "name": "WCAG Contrast Checker",
      "canonical_url": "https://fasttool.app/tools/color-contrast-checker/",
      "category": "Design",
      "summary": "Advanced WCAG 2.1 contrast checker with AA/AAA pass/fail badges, color blindness simulation, auto-fix suggestions, live text preview, and random accessible palette generator.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "report"
      ],
      "sample_input": "Foreground: #0A8D83. Background: #FFFFFF.",
      "expected_output": "Contrast ratio should be reported and WCAG pass or fail badges should match that ratio.",
      "acceptance_checks": [
        "Uses explicit hex colors instead of a subjective visual guess.",
        "Ratio and AA or AAA badge can be checked against WCAG contrast math.",
        "Preview text makes the result easier to inspect."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not a full accessibility audit, brand approval, or substitute for testing with real users.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "check color contrast",
        "generate color palette",
        "pick color from page",
        "css gradient generator",
        "aspect ratio calculator",
        "check accessible button colors",
        "button contrast checker",
        "wcag button color contrast",
        "css button color accessibility",
        "color contrast checker",
        "accessible color palette",
        "readable brand colors",
        "wcag color check",
        "brand color palette generator"
      ],
      "primary_finish_routes": [
        {
          "title": "Create an Accessible CSS Button",
          "url": "https://fasttool.app/finish/create-accessible-css-button/",
          "run_sheet_url": "https://fasttool.app/finish/create-accessible-css-button/#smart-run-sheet"
        },
        {
          "title": "Choose a Readable Brand Color Palette",
          "url": "https://fasttool.app/finish/choose-readable-brand-color-palette/",
          "run_sheet_url": "https://fasttool.app/finish/choose-readable-brand-color-palette/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/tool-finder/",
      "category_hub_url": "https://fasttool.app/fast-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/color-contrast-checker/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/color-picker/",
        "https://fasttool.app/tools/color-palette-generator/",
        "https://fasttool.app/tools/css-gradient-generator/",
        "https://fasttool.app/tools/aspect-ratio-calculator/",
        "https://fasttool.app/tasks/choose-readable-colors/",
        "https://fasttool.app/tools/readability-checker/",
        "https://fasttool.app/tools/image-compressor/",
        "https://fasttool.app/tools/html-minifier/"
      ],
      "quality_badge": "Upgraded"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "webp-to-jpg",
      "name": "WebP to JPG Converter",
      "canonical_url": "https://fasttool.app/tools/webp-to-jpg/",
      "category": "Image",
      "summary": "Convert WebP images to JPG or PNG format online. Adjustable quality, batch support, and instant browser-based conversion.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "file"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file"
      ],
      "sample_input": "One sample WebP image, JPG quality 90%.",
      "expected_output": "Output should download as JPG and display the same visible image content.",
      "acceptance_checks": [
        "Checks format support and preview before download.",
        "Quality setting is explicit.",
        "Batch mode can be tested after one-file baseline."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for preserving animation, transparency, legal evidence, or archival masters.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "webp to jpg",
        "jpg to webp",
        "png to webp",
        "convert image for website",
        "make web image smaller",
        "make image smaller",
        "compress image for website",
        "resize image for upload",
        "jpg to webp",
        "webp to jpg",
        "convert image to webp for website",
        "jpg to webp online",
        "webp to jpg fallback",
        "png to jpg for web"
      ],
      "primary_finish_routes": [
        {
          "title": "Convert WebP, JPG, or PNG for a Website",
          "url": "https://fasttool.app/finish/convert-webp-jpg-png-for-website/",
          "run_sheet_url": "https://fasttool.app/finish/convert-webp-jpg-png-for-website/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/image-upload-conversion-kit/",
      "category_hub_url": "https://fasttool.app/image-optimization-tools/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/webp-to-jpg/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/image-resizer/",
        "https://fasttool.app/tools/bulk-image-resizer/",
        "https://fasttool.app/tools/jpg-to-webp/",
        "https://fasttool.app/tools/png-to-jpg/",
        "https://fasttool.app/tasks/make-image-smaller/",
        "https://fasttool.app/tools/image-compressor/",
        "https://fasttool.app/tasks/convert-image-format-for-web/",
        "https://fasttool.app/tools/png-to-webp/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "wifi-qr-generator",
      "name": "WiFi QR Code Generator",
      "canonical_url": "https://fasttool.app/tools/wifi-qr-generator/",
      "category": "Data",
      "summary": "Create a scannable WiFi QR code for WPA, WEP, or open networks with hidden-network support, size control, live preview, and PNG download.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file",
        "report"
      ],
      "sample_input": "SSID: FastTool Guest. Password: sample12345. Encryption: WPA/WPA2.",
      "expected_output": "QR preview should encode the WiFi network string and download as a PNG image.",
      "acceptance_checks": [
        "Uses a harmless sample network before real credentials.",
        "Encryption, hidden network, and size controls are visible.",
        "Downloaded PNG should match the on-page QR preview."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for public sharing of private WiFi passwords, payment QR codes, identity credentials, or networks you do not control.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "wifi qr code generator",
        "create guest wifi qr",
        "print wifi qr code",
        "wifi password qr",
        "create wifi qr for guests",
        "guest wifi qr code",
        "wifi password qr code"
      ],
      "primary_finish_routes": [
        {
          "title": "Create a WiFi QR Code for Guests",
          "url": "https://fasttool.app/finish/create-wifi-qr-code-for-guests/",
          "run_sheet_url": "https://fasttool.app/finish/create-wifi-qr-code-for-guests/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/local-business-qr-print-kit/",
      "category_hub_url": "https://fasttool.app/json-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/wifi-qr-generator/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/qr-code-generator/",
        "https://fasttool.app/tools/password-generator/",
        "https://fasttool.app/tools/color-contrast-checker/",
        "https://fasttool.app/tools/image-to-pdf/",
        "https://fasttool.app/tasks/create-guest-wifi-qr-code/",
        "https://fasttool.app/tools/image-resizer/",
        "https://fasttool.app/tools/png-to-jpg/",
        "https://fasttool.app/finish/create-wifi-qr-code-for-guests/"
      ],
      "quality_badge": "Popular"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "word-character-counter",
      "name": "Word & Character Counter",
      "canonical_url": "https://fasttool.app/tools/word-character-counter/",
      "category": "Writing",
      "summary": "Count words, characters, lines, and estimated reading time.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text"
      ],
      "sample_input": "Text: Merhaba Dunya",
      "expected_output": "Output should show 2 words. Character count should match the selected counting mode.",
      "acceptance_checks": [
        "Short fixture gives an immediate manual check.",
        "Word, character, line, and reading-time values are separated.",
        "The original text remains visible for comparison."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not a grammar checker, legal word-count certification, or language-specific tokenization guarantee.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "count words and characters",
        "check readability",
        "summarize notes",
        "markdown to html",
        "convert text case",
        "seo preflight checklist",
        "check page quality before publishing",
        "compress image before publishing",
        "readability check",
        "prepare meta title description",
        "count meta description characters",
        "seo title length checker",
        "write page snippet",
        "convert csv to json for spreadsheet"
      ],
      "primary_finish_routes": [],
      "workflow_kit_url": "https://fasttool.app/kits/pdf-cleanup-rescue-kit/",
      "category_hub_url": "https://fasttool.app/pdf-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/word-character-counter/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/readability-checker/",
        "https://fasttool.app/tools/ai-text-summarizer/",
        "https://fasttool.app/tools/markdown-to-html/",
        "https://fasttool.app/tools/case-converter/",
        "https://fasttool.app/tasks/check-copy-before-publishing/",
        "https://fasttool.app/tools/image-compressor/",
        "https://fasttool.app/tools/color-contrast-checker/",
        "https://fasttool.app/tools/html-minifier/"
      ]
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "word-to-pdf",
      "name": "Word to PDF Converter",
      "canonical_url": "https://fasttool.app/tools/word-to-pdf/",
      "category": "Document",
      "summary": "Turn pasted text, Markdown, TXT, or DOCX text into a clean downloadable PDF in the browser with page size, font, margin, and preview controls.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file"
      ],
      "sample_input": "Text: Project brief with a title, bullets, and two paragraphs. Page size: A4.",
      "expected_output": "Downloaded PDF should contain the title and wrapped text without opening a browser print popup.",
      "acceptance_checks": [
        "Checks direct PDF generation and file download.",
        "Page size, font, margin, and line-height controls are explicit.",
        "TXT, Markdown, and DOCX text inputs can be tested before real documents."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for signed filings, audited statements, regulated records, or documents needing exact Microsoft Word layout fidelity.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "word to pdf",
        "docx to pdf online",
        "convert resume to pdf",
        "make document pdf for upload",
        "text to pdf",
        "pdf to word",
        "convert pdf to editable document",
        "pdf to docx no upload",
        "extract editable text from pdf",
        "make pdf editable",
        "create invoice pdf",
        "free invoice generator",
        "send client invoice pdf",
        "invoice with tax and discount"
      ],
      "primary_finish_routes": [
        {
          "title": "Convert a PDF to Editable Text for Word",
          "url": "https://fasttool.app/finish/convert-pdf-to-word-for-editing/",
          "run_sheet_url": "https://fasttool.app/finish/convert-pdf-to-word-for-editing/#smart-run-sheet"
        },
        {
          "title": "Convert Word or Text to PDF for Upload",
          "url": "https://fasttool.app/finish/convert-word-to-pdf-for-upload/",
          "run_sheet_url": "https://fasttool.app/finish/convert-word-to-pdf-for-upload/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/pdf-cleanup-rescue-kit/",
      "category_hub_url": "https://fasttool.app/pdf-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/word-to-pdf/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/html-to-pdf/",
        "https://fasttool.app/tools/pdf-compressor/",
        "https://fasttool.app/tools/pdf-merger/",
        "https://fasttool.app/tasks/create-client-invoice-pdf/",
        "https://fasttool.app/tools/ats-resume-checker/",
        "https://fasttool.app/tools/resume-keyword-checker/",
        "https://fasttool.app/tools/pdf-to-word/",
        "https://fasttool.app/tasks/build-ats-friendly-resume-before-applying/"
      ],
      "quality_badge": "Upgraded"
    },
    {
      "schema_version": "2026-06-17",
      "tool_slug": "yaml-to-json",
      "name": "YAML to JSON",
      "canonical_url": "https://fasttool.app/tools/yaml-to-json/",
      "category": "Developer",
      "summary": "Convert YAML to JSON and JSON to YAML instantly.",
      "reviewed": true,
      "reviewed_at": "2026-06-17",
      "requires_javascript": true,
      "browser_first": true,
      "no_signup": true,
      "input_modes": [
        "text",
        "settings",
        "paste"
      ],
      "output_modes": [
        "visible_result",
        "copyable_text",
        "downloadable_file",
        "report"
      ],
      "sample_input": "YAML: name: Ada\\nscore: 10",
      "expected_output": "JSON should contain name as Ada and score as 10.",
      "acceptance_checks": [
        "Simple YAML fixture maps directly to a JSON object.",
        "Round-trip mode should preserve the basic data shape.",
        "Parse errors should be explicit for invalid YAML."
      ],
      "privacy_boundary": "Use non-sensitive sample data first. Standard tool work is designed for the browser, but the page can still load normal site scripts such as analytics, consent, and ads where enabled.",
      "not_for": "Not for private secrets files, Kubernetes production manifests, or schema validation.",
      "dom_contract": {
        "workbench_selector": "#toolWorkbench",
        "input_selectors": [
          "#shell-input-main",
          "#toolWorkbench textarea",
          "#toolWorkbench input",
          "#toolWorkbench [contenteditable='true']"
        ],
        "action_selectors": [
          "#toolWorkbench button",
          ".shell-btn",
          "button[type='button']"
        ],
        "output_selectors": [
          "#toolResult",
          ".result-box",
          "[data-tool-result]",
          ".receipt",
          ".output"
        ],
        "completion_signal": "A human or agent should report the visible output and compare it with expected_output before treating the task as done."
      },
      "agent_instruction": "If an AI agent uses this tool, cite canonical_url, state the sample or user input used, report the visible output, run the acceptance_checks, and disclose anything not verified.",
      "query_aliases": [
        "csv to json",
        "json to csv",
        "yaml to json",
        "convert data for automation",
        "format structured data",
        "fix invalid json",
        "format api response",
        "convert yaml to json",
        "csv to json cleanup",
        "decode jwt safely",
        "validate json before api call",
        "check request body json",
        "fix json payload",
        "api json formatter"
      ],
      "primary_finish_routes": [
        {
          "title": "Convert CSV, JSON, or YAML for Automation",
          "url": "https://fasttool.app/finish/convert-csv-json-yaml-for-automation/",
          "run_sheet_url": "https://fasttool.app/finish/convert-csv-json-yaml-for-automation/#smart-run-sheet"
        }
      ],
      "workflow_kit_url": "https://fasttool.app/kits/api-debugging-request-kit/",
      "category_hub_url": "https://fasttool.app/json-tools-online/",
      "intent_router_url": "https://fasttool.app/tool-finder/?task={encoded_task}",
      "entry_url_template": "https://fasttool.app/tools/yaml-to-json/?task={encoded_task}",
      "answer_engine_url": "https://fasttool.app/answer-engine/",
      "supporting_routes": [
        "https://fasttool.app/tools/csv-to-json/",
        "https://fasttool.app/tools/regex-tester/",
        "https://fasttool.app/tools/base64-encoder-decoder/",
        "https://fasttool.app/tools/jwt-decoder/",
        "https://fasttool.app/tasks/fix-invalid-json/",
        "https://fasttool.app/tasks/validate-json-before-api-call/",
        "https://fasttool.app/tools/json-to-csv/",
        "https://fasttool.app/tools/json-formatter/"
      ]
    }
  ]
}
