Skip to main content
Glama

Is this specific Irish car listing good value?

analyze_listing
Read-onlyIdempotent

Use to assess one listing you already have an id for. Use get_irish_auto_arbitrage_feed or get_vehicle_listing_by_id first to find a listing_id. Defaults to source_platform='carzone' when omitted. Returns verdict (below/at/above market), percentage vs the comparable median, margin, up to 10 closest comparable listings and the listing's recorded price history. Costs 0.01 USDC per call via x402; no-data results are free.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
listing_idYesThe listing's id as returned by the other endpoints.4577902
source_platformNoOptional source platform. Defaults to 'carzone'.carzone

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
listingYes
verdictYes
price_historyYes
comparable_countYes
closest_comparablesYes
price_vs_market_pctYes
market_median_price_eurYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • changedInput schema / properties / source_platform / enum
      Previous value: -[
      -  "carzone"
      -]New value: +[
      +  "carzone",
      +  "joeduffy",
      +  "windsor",
      +  "frankkeane",
      +  "spirit",
      +  "denismahony"
      +]
    • addedOutput schema / properties / closest_comparables / items / required
      Added value: +[
      +  "source_platform",
      +  "listing_id",
      +  "make",
      +  "model",
      +  "year",
      +  "price_eur",
      +  "mileage_km",
      +  "fuel_type",
      +  "transmission",
      +  "county",
      +  "distance_score"
      +]
    • addedOutput schema / properties / listing / required
      Added value: +[
      +  "source_platform",
      +  "listing_id",
      +  "make",
      +  "model",
      +  "year",
      +  "price_eur",
      +  "mileage_km",
      +  "fuel_type",
      +  "transmission",
      +  "county"
      +]
    • addedOutput schema / properties / price_history / items / required
      Added value: +[
      +  "price_eur",
      +  "changed_at"
      +]
    • addedOutput schema / required
      Added value: +[
      +  "listing",
      +  "verdict",
      +  "price_vs_market_pct",
      +  "market_median_price_eur",
      +  "comparable_count",
      +  "closest_comparables",
      +  "price_history"
      +]
  2. Changed20 schema fields changed
    • addedInput schema / properties / listing_id / default
      Added value: +"4577902"
    • addedInput schema / properties / listing_id / example
      Added value: +"4577902"
    • addedInput schema / properties / listing_id / examples
      Added value: +[
      +  "4577902"
      +]
    • addedInput schema / properties / source_platform / default
      Added value: +"carzone"
    • changedInput schema / properties / source_platform / description
      Previous value: -"Source of the listing, currently always 'carzone'."New value: +"Optional source platform. Defaults to 'carzone'."
    • addedInput schema / properties / source_platform / enum
      Added value: +[
      +  "carzone"
      +]
    • addedInput schema / properties / source_platform / example
      Added value: +"carzone"
    • addedInput schema / properties / source_platform / examples
      Added value: +[
      +  "carzone"
      +]
    • changedInput schema / required
      Previous value: -[
      -  "source_platform",
      -  "listing_id"
      -]New value: +[
      +  "listing_id"
      +]
    • addedOutput schema / properties / closest_comparables / items
      Added value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "county": {
      +      "type": "string"
      +    },
      +    "distance_score": {
      +      "type": "number"
      +    },
      +    "fuel_type": {
      +      "type": "string"
      +    },
      +    "listing_id": {
      +      "type": "string"
      +    },
      +    "make": {
      +      "type": "string"
      +    },
      +    "mileage_km": {
      +      "type": "integer"
      +    },
      +    "model": {
      +      "type": "string"
      +    },
      +    "price_eur": {
      +      "type": "number"
      +    },
      +    "source_platform": {
      +      "type": "string"
      +    },
      +    "transmission": {
      +      "type": "string"
      +    },
      +    "year": {
      +      "type": "integer"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedOutput schema / properties / closest_comparables / type
      Added value: +"array"
    • addedOutput schema / properties / comparable_count / type
      Added value: +"integer"
    • addedOutput schema / properties / listing / additionalProperties
      Added value: +true
    • addedOutput schema / properties / listing / properties
      Added value: +{
      +  "county": {
      +    "type": "string"
      +  },
      +  "fuel_type": {
      +    "type": "string"
      +  },
      +  "listing_id": {
      +    "type": "string"
      +  },
      +  "make": {
      +    "type": "string"
      +  },
      +  "mileage_km": {
      +    "type": "integer"
      +  },
      +  "model": {
      +    "type": "string"
      +  },
      +  "price_eur": {
      +    "type": "number"
      +  },
      +  "source_platform": {
      +    "type": "string"
      +  },
      +  "transmission": {
      +    "type": "string"
      +  },
      +  "year": {
      +    "type": "integer"
      +  }
      +}
    • addedOutput schema / properties / listing / type
      Added value: +"object"
    • addedOutput schema / properties / market_median_price_eur / type
      Added value: +"number"
    • addedOutput schema / properties / price_history / items
      Added value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "changed_at": {
      +      "type": "string"
      +    },
      +    "price_eur": {
      +      "type": "number"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedOutput schema / properties / price_history / type
      Added value: +"array"
    • addedOutput schema / properties / price_vs_market_pct / type
      Added value: +"number"
    • addedOutput schema / properties / verdict / type
      Added value: +"string"
  3. First observed

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safe read-only, idempotent, non-destructive profile, so the description is free to add value beyond them — and it does: per-call cost (0.01 USDC via x402), the free no-data case, and the returned verdict/margin/comparables/price-history payload. The billing model in particular is critical and is nowhere in the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four compact sentences, front-loaded with the usage constraint and prerequisite, then defaults, then return contents, then cost. Every sentence carries distinct information with no repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite an output schema existing, the description still summarizes the verdict semantics and cost model, and it covers the one real ambiguity (which platform default applies). Nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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, including the source_platform enum and default. The description restates the carzone default but adds no syntax or format meaning beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('assess') and a singular resource ('one listing'), and the constraint 'you already have an id for' immediately distinguishes it from the feed/lookup siblings. An agent can tell it apart from get_vehicle_listing_by_id or get_irish_auto_arbitrage_feed without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the two sibling endpoints to call first to obtain a listing_id, giving a concrete prerequisite workflow rather than implied context. The only minor omission is an explicit 'do not use for X' exclusion, but the named alternatives cover the routing decision.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources