agentspeed.
← all tools
Tool

Agent Actionability Tester

Score whether an AI agent can identify the actions available on your page. Detects the primary CTA, pricing reachability, contact / support routes, signup flow, accessibly-labelled forms, descriptive button text, and semantic landmarks. Heuristic-driven, no model in the loop, fully reproducible from the input HTML.

Tool
https://github.comHTTP 200
Actionability score
94/ 100

What an agent can find

  • Primary CTASign in → https://github.com/logindetected
  • Pricing linkhttps://github.com/pricingdetected
  • Contacthttps://support.github.com/detected
  • Signup flowhttps://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F&source=header-homedetected
  • Semantic landmarksheader, nav, main, footerdetected

Findings

  • Primary CTA detectedcta.primary

    "Sign in" → https://github.com/login

  • Pricing reachablepricing.reachable

    https://github.com/pricing

  • Contact reachablecontact.reachable

    https://support.github.com/

  • Signup flow reachablesignup.reachable

    Signup link present: https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F&source=header-home

  • 5 forms present + labelledforms.labeled

    All form inputs carry accessible labels.

  • 2 unlabeled <button>sbuttons.labeled

    Buttons with no inner text and no aria-label are invisible to agents and screen readers.

    fix Add explicit text or aria-label to each <button>.

  • 4 semantic landmarkssemantic.landmarks

    header, nav, main, footer

Result summary
AgentSpeed: Agent Actionability Tester
Target: https://github.com
Score: 94/100

Detections:
  Primary CTA: Sign in
  Pricing:     https://github.com/pricing
  Contact:     https://support.github.com/
  Signup:      https://github.com/signup?ref_cta=Sign+up&amp;ref_loc=header+logged+out&amp;ref_page=%2F&amp;source=header-home
  Landmarks:   header, nav, main, footer

Findings:
  [PASS] Primary CTA detected (cta.primary)
  [PASS] Pricing reachable (pricing.reachable)
  [PASS] Contact reachable (contact.reachable)
  [PASS] Signup flow reachable (signup.reachable)
  [PASS] 5 forms present + labelled (forms.labeled)
  [FAIL] 2 unlabeled <button>s (buttons.labeled)
  [PASS] 4 semantic landmarks (semantic.landmarks)

Run again at: https://agentspeed.com/tools/agent-actionability-tester
Watch this URL — get alerted when this changes

Turn this one-off check into a scheduled watch. We re-run it, diff the result, and alert you on a regression through the same channels as your agent alerts. Watches are a paid feature.

Manage watches at /watches. You’ll be asked to sign in if you haven’t already.

Examples

Click an example to run the tool with pre-filled inputs.

Why this matters for AI agents

Reading is half the work. The other half is acting. An agent that understands your page perfectly but can’t find the CTA, the pricing link, or how to sign up will quote your content and route the user away. The fix is structural: prominent action verbs, sensible URL conventions, labelled forms, semantic landmarks.

This tool runs the same heuristics AgentSpeed runs against the auth.* and journey.* checks, on demand against any URL.

Common fixes
No primary CTA detected
Add a clear, action-verb-led button or link in the hero. “Start free trial”, “Book a demo”, “Try it free”. Avoid Click here or Read more, since agents weight the text as the action description.
Pricing not at /pricing
Agents look for /pricing and /plans first when answering “how much does this cost”. Use those URL conventions even if you have a fancy hash-routed pricing experience.
Forms missing labels
Wrap each <input> in a <label> or set aria-label / aria-labelledby. Agents and screen readers depend on this; without labels, your forms are opaque.
Empty buttons / icon-only buttons
Every <button> needs visible text or aria-label. Icon-only buttons are invisible to agents, so set aria-label="Open menu" or similar.
No semantic landmarks
Wrap regions in <header>, <nav>, <main>, <article>, <footer>. Div soup is opaque; landmarks let agents skim the page like a screen reader does.
Linked rubric checks
FAQ
How do you decide what counts as a "primary CTA"?
Heuristic. We scan the top 2/3 of the body for any <a> or <button> whose visible text starts with a primary action verb (Start, Sign up, Try, Book, Subscribe, Request, Get started, Create account, Join, Download). Length capped at 60 chars to exclude paragraph-text containing those words.
Why heuristic instead of using a model?
Reproducibility and cost. A regex-driven scan returns identical results for identical input HTML, runs in a few milliseconds, and costs nothing. A model would give nicer-looking copy but introduce variance that makes the score unstable. We use the same heuristics on the live AgentSpeed scan, where deterministic behaviour matters most.
What about CTAs in client-rendered components?
This tool checks the SSR HTML. If your CTA is rendered after hydration, agents reading the raw response will not see it, and neither will this tool. That is the same problem the Agent Readability Scanner flags as JS dependency.
Are forms with placeholder-as-label flagged?
Yes. Placeholders are not accessible labels. Forms with placeholder-only inputs fail the labelled check. Use <label>, aria-label, or aria-labelledby explicitly.
Run a full agent-readiness scan
Full scan

Score the entire site against 30 agent-readiness checks across discoverability, readability, structured data, actionability, and performance.

Get the full report for github.com →