AigentablyAigentably
What is WebMCP?PricingBlogChangelogDocsLog inGet Started

Getting Started

  • Introduction
  • Quick Start
  • Create Your First Tool

How-to Guides

  • Generate Tools with AI
  • Build from Templates
  • Write Tools by Hand
  • Test a Tool on Your Site
  • When Tools Don't Register
  • Understand Path Patterns
  • Read Your Analytics
  • Lighthouse Agentic Browsing Score

WebMCP Technology

  • What is WebMCP?
  • Browser Compatibility
  • Connect an LLM Client

Developer Reference

  • executeJs Reference
  • Input Schema Format
  • Path Pattern Syntax
  • Config API

Path Pattern Syntax

Quick reference for path pattern matching in Aigentably.

Quick reference

PatternMatchesNotes
(blank)All pathsGlobal tool
/contact/contact onlyExact match
/products/*/products/shoesOne segment wildcard
/products/**/products/shoes, /products/shoes/detailMulti-segment wildcard
/blog/[slug]/blog/hello-worldDynamic segment (same as *)

Matching rules

  • Patterns are matched against window.location.pathname. No query string, no fragment.
  • Leading slash is required
  • Trailing slashes are normalised (both /contact and /contact/ match /contact)
  • Patterns are case-sensitive

Wildcard details

* matches exactly one path segment, a sequence of characters with no /:

  • /products/* matches /products/shoes ✓
  • /products/* does NOT match /products/shoes/detail ✗

** matches zero or more path segments including slashes:

  • /products/** matches /products/ ✓
  • /products/** matches /products/shoes/detail/blue ✓

Dynamic segments

[param] syntax is supported as a single-segment wildcard, identical to * in behaviour:

  • /blog/[slug] matches /blog/hello-world ✓
  • /blog/[slug] does NOT match /blog/2026/post ✗ (use /blog/** for that)

Testing your pattern

Fetch the config endpoint with a test path to verify:

GET /api/sites/YOUR_PUBLIC_ID/config?path=/products/test-product

The response tools array will contain only tools whose pattern matches.

Edge cases

  • Query strings (?foo=bar) are ignored by the matcher
  • Fragments (#section) are ignored by the matcher
  • An empty string pattern behaves the same as blank (matches all)