Arugula
Server Details
Find offers that fit what you want, ranked by fit only, with links to buy.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- ArugulaNet/arugula
- GitHub Stars
- 0
TDQS
Scored across 3 tools
find_offers and get_offers both surface offers and could be briefly confused, but the descriptions clearly separate initiating an intent from polling ranked results. explain_match has a distinct explanation purpose.
All three tools use a consistent verb_noun snake_case pattern: explain_match, find_offers, get_offers. The find/get distinction is readable and predictable.
Three tools are well-scoped for a narrow offer-matching workflow: initiate search, retrieve results, and explain a match. Each tool earns its place without unnecessary surface area.
The core lifecycle is covered: create an intent, poll for ranked offers, and explain why an offer fits. Minor gaps exist around refining or cancelling an intent or listing prior intents, but agents can work around them by starting a new search.
Available Tools
3 toolsexplain_matchExplain a matchBRead-onlyIdempotentInspect
One match with its explanation: why the offer fits the request, its fit and verification, and the draft terms (getMatch). brief: true leaves the explanation out. By using Arugula you agree to arugulanet.com/terms. Privacy: arugulanet.com/privacy.
| Name | Required | Description | Default |
|---|---|---|---|
| brief | No | true for a short answer: each offer's title, price, fit, how to buy and tracked link, without the explanations. | |
| match_id | Yes | The match's ID (mat_...). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered and the bar is lower. The description usefully discloses return content (fit, verification, and that terms are 'draft'), which matters because there is no output schema. It adds nothing on auth, rate limits, or whether the explanation involves additional cost or latency — notable for an 'openWorld' tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the return content, then the brief toggle in a single short clause. The trailing legal/privacy consent boilerplate and the '(getMatch)' parenthetical do not help selection but occupy limited space, so the cost is small.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two fully documented parameters and no output schema, the main burden is describing the return and the choice against siblings. Return content is covered, but the relationship to find_offers/get_offers and any notion of what a 'match' is relative to an offer remain unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented in the schema, including what brief omits. The description restates the brief behavior ('brief: true leaves the explanation out') without adding format or edge-case detail, and says nothing about match_id. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource and its detail content: a single match, why the offer fits the request, fit/verification, and draft terms. It is clear what the tool returns. However, it does not distinguish itself from siblings find_offers and get_offers, leaving the agent to infer that this is the per-match explanatory variant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use statement, and the siblings are never mentioned. Usage is only implied: you call it with a match_id to get that match's explanation, or set brief=true when you don't need explanations. That is enough to guess the case but not to choose confidently between it and find_offers/get_offers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_offersFind offers for what a user wantsAInspect
Turns the user's request, with any context they stated (location, dates, budget, party size, preferences), into an intent and returns the offers that fit, best first, each with a tracked link to show the user (tracked_url). Matching runs in the background; when no offers are back yet, call get_offers with the intent_id in a few seconds. It never buys anything. By using Arugula you agree to arugulanet.com/terms. Privacy: arugulanet.com/privacy.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | What the user wants, in their own words, including where if it matters. | |
| brief | No | true for a short answer: each offer's title, price, fit, how to buy and tracked link, without the explanations. | |
| dates | No | When: dates or times the user gave, for example 'before 9am tomorrow'. | |
| budget | No | The user's budget. | |
| locale | No | BCP 47 language tag of the text, for example en-SG. | |
| country | No | The user's country as ISO 3166-1 alpha-2, for example SG, only if the user said it or you know it from them; never your server's. Offers there are preferred; a place in the text still decides. | |
| party_size | No | How many people. | |
| preferences | No | Anything else the user prefers, in their words. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds behavior the annotations do not convey: matching is asynchronous and requires polling, and the tool never completes a purchase (clarifying the readOnlyHint=false / destructiveHint=false combination as a non-read that writes intent state). Terms and privacy pointers are also disclosed. What is missing is whether repeated calls create duplicate intents, which matters given idempotentHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose and the polling rule are front-loaded in the first two sentences. The closing terms/privacy sentence is boilerplate that dilutes an otherwise tight description, though it may be legally required.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With eight parameters, a nested budget object, and no output schema, the description covers the essential contract: what goes in, that offers come back ranked with a tracked_url, and that results may be deferred. It stops short of describing the brief-mode output shape, but the schema already carries that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented, and the baseline is 3. The description does add value by grouping the context dimensions the agent should extract (location, dates, budget, party size, preferences), but it offers no syntax or precedence guidance beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific transformation ('turns the user's request ... into an intent') and a specific output ('returns the offers that fit, best first, each with a tracked link'). It also explicitly distinguishes itself from the sibling get_offers by framing that tool as the polling follow-up.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit follow-up rule ('when no offers are back yet, call get_offers with the intent_id in a few seconds') and rules out purchase behavior. It does not address the other sibling, explain_match, so there is no coverage of every alternative, but the usage context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_offersGet the offers found for an intentARead-onlyIdempotentInspect
The offers ranked for an intent from find_offers, best first, only those that fit, each with its tracked link (tracked_url) and how_to_buy. offer_id is the offer's public ID: lst_ for a merchant listing (open tracked_url to book with the merchant, no sign-in), off_ for a seller's offer on Arugula. By using Arugula you agree to arugulanet.com/terms. Privacy: arugulanet.com/privacy.
| Name | Required | Description | Default |
|---|---|---|---|
| brief | No | true for a short answer: each offer's title, price, fit, how to buy and tracked link, without the explanations. | |
| intent_id | Yes | The intent_id find_offers returned (int_...). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so safety is covered; the description adds real behavior beyond them: results are ordered best-first, pre-filtered to offers that fit, and the offer_id prefix determines whether booking happens off-site via tracked_url with no sign-in or on Arugula. That is meaningful operational context an agent would otherwise have to guess.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core what and ordering, then offer_id semantics. Dense but every sentence carries signal except the terms/privacy boilerplate, which is presumably mandatory but still occupies space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the work of describing the return payload (tracked_url, how_to_buy, offer_id prefixes) and its ordering. It leaves open edge cases such as what is returned when nothing fits, but the essentials for correct invocation are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are self-describing, so the schema already carries the load. The description restates the intent_id provenance but adds nothing about the `brief` flag beyond what the schema says, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: retrieves offers ranked for an intent, best first, restricted to those that fit, each with tracked_url and how_to_buy. It also decodes the offer_id prefixes, which distinguishes the two offer types, and ties the tool back to find_offers so its role in the pair is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'from find_offers' plus the intent_id schema note make the correct upstream call explicit, and the offer_id prefix explanation tells the agent what to do next (open tracked_url for lst_, no sign-in; off_ offers are on Arugula). It stops short of stating when not to call it (e.g. before find_offers has run, or when offers don't fit), so it isn't a full when/when-not/alternatives statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
find_offers1 field changed- added
Input schema / properties / countryAdded value: +{ + "description": "The user's country as ISO 3166-1 alpha-2, for example SG, only if the user said it or you know it from them; never your server's. Offers there are preferred; a place in the text still decides.", + "type": "string" +}
3 tool updates
- First observed
explain_match - First observed
find_offers - First observed
get_offers
Related MCP Connectors
Shopping search across 100M+ products, with every retailer's offer and live price in one place.
Compare products, prices and current offers across UK retailers to find the best deal.
Product search across online shops worldwide, plus every seller's price with a direct link.
AI shopping comparison — search 50M+ products, compare prices, find deals
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI shopping agents to send plain-language requests and receive deterministically ranked, cross-merchant product offers with grounded reasons and inline product images. Enforces a merchant-controlled disclosure layer so individual product facts can be hidden from the agent while still used for matching.1,871,298 npmMIT
- AlicenseBqualityCmaintenanceMCP server for finding, comparing, and ranking the cheapest real offers across eBay, Amazon, Craigslist, OfferUp, and Google Shopping, with tax estimation and exact-model filtering.61MIT
- AlicenseAqualityBmaintenanceSearches UK electronics products across multiple retailers, compares prices, and provides purchase links.268 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables real-time multi-merchant price comparison, coupon stacking, delivery-speed trade-offs, stock volatility tracking, and optimal purchase routing for cross-platform commerce inventory arbitrage.7MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.