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.
What an agent can find
Findings
- Primary CTA detectedcta.primary
"Log in" → https://linear.app/login
- Pricing reachablepricing.reachable
https://linear.app/pricing
- Contact reachablecontact.reachable
https://linear.app/contact
- Signup flow reachablesignup.reachable
Signup link present: https://linear.app/signup
- 6 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>.
- 1 vague button labelbuttons.descriptive
Detected: "More". Agents weight button text as the action description; vague labels become "click here" answers.
fix Replace with the action being taken: "Start free trial", "Read pricing FAQ".
- 4 semantic landmarkssemantic.landmarks
header, nav, main, footer
AgentSpeed: Agent Actionability Tester Target: https://linear.app Score: 91/100 Detections: Primary CTA: Log in Pricing: https://linear.app/pricing Contact: https://linear.app/contact Signup: https://linear.app/signup 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) [FAIL] 6 unlabeled <button>s (buttons.labeled) [WARN] 1 vague button label (buttons.descriptive) [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.
Click an example to run the tool with pre-filled inputs.
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.
How do you decide what counts as a "primary CTA"?
Why heuristic instead of using a model?
What about CTAs in client-rendered components?
Are forms with placeholder-as-label flagged?
Score the entire site against 30 agent-readiness checks across discoverability, readability, structured data, actionability, and performance.
Get the full report for linear.app →