Trawley is built to be an agent's data source. An LLM is good at understanding a user's intent but has no live, structured view of a website. Trawley gives it one: a single function the model can call with a natural language query and get back clean, structured records.
The pattern
Every integration in this section is the same shape. You expose one tool to your model:
Define a tool
Give it a name like searchListings, a description of what data it returns, and
a single query input. The model decides when to call it.
Call hybrid search
Inside the tool, make a GET request to the hybrid endpoint with the model's query.
Return the results
Hand the data array back to the model. It uses the records to answer the user,
cite specifics, or take the next step.
That is the entire integration. The model handles phrasing and reasoning; Trawley handles retrieval.
Why this works well
- One tool, not ten. The model does not need a tool per filter. Hybrid search
interprets constraints from plain language, so a single
queryinput covers "cheap flats", "3 beds near Kendal", and "listings added this week". - Structured output. The model receives typed fields, not a wall of HTML, so it can reason about prices and dates reliably.
- Fresh data. Results come from your scheduled scrapes, so the agent answers from current data without you maintaining a pipeline.
A reusable description
Tool descriptions matter more than tool code. A good one tells the model exactly what is behind the tool so it calls it at the right moments:
Search live {your domain} data from {source site}. Accepts a natural language
query describing what to find (constraints like price, bedrooms, or date are
understood). Returns structured records. Use this whenever the user asks about
specific listings, availability, or current data.
Pick your framework
Vercel AI SDK
TypeScript. Wrap hybrid search as a tool() and let the model call it.
More frameworks
Claude Agent SDK, OpenAI function calling, and LangChain follow the same pattern. Guides are being added here.