skip to main content
Browse documentation

Syncanix with Laravel

Make a Laravel API agent-ready: what discovery reads, how to run it, and how to ship the chat surface and MCP server.

Laravel route files look flat, but the /api prefix is applied elsewhere โ€” in the route service provider or bootstrap configuration. Discovery composes it in from across the codebase.

What discovery reads

Discovery is static โ€” it reads your source, not your traffic. It composes full request paths across files, so mounted prefixes are part of every extracted route:

// routes/api.php (the /api prefix comes from the route service provider)
Route::get('/orders/{order}', [OrderController::class, 'show']);
Route::post('/orders/{order}/refund', [OrderController::class, 'refund']);
// โ†’ GET /api/orders/{order} ยท POST /api/orders/{order}/refund
Representative routes the extractor composes โ€” full paths, prefixes included.

The extractor reads Route:: declarations and resource registrations, composes the group prefix from the RouteServiceProvider (or Laravel 11โ€™s withRouting apiPrefix) across files, and masks comments so commented-out routes are never extracted.

Run discovery

From the repository root, run the init command. It detects the framework automatically, asks for consent before any LLM enrichment, and writes a deterministic catalog:

$ npx syncanix init
โœ“ detected framework
โœ“ scanned routes
โœ“ wrote .syncanix/catalog.json
โ†’ review your capabilities in the dashboard

Review the catalog

The catalog at .syncanix/catalog.json lists every capability discovery found โ€” method, path, and the enriched description your users will see. Review it like code before uploading: it is the contract your chat surface and MCP server expose.

Ship the surface

Once the catalog is uploaded, embed the widget for in-app chat and connect the per-tenant MCP server for Claude, ChatGPT, and Cursor. Every write action stays permission-gated, confirmed, and audited.

Next steps