govauctions.app

Live listings, sold prices and resale scores from GovAuctions.app, the public surplus-auction site.

Should I use this

Quality & Safety

A
Description quality
98%
Schema completeness
79%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,143Tokens (tool definitions)
~1.2 KBTypical response size
Moderate attention impact (1.67% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "govauctions": {
      "url": "https://govauctions.app/api/mcp"
    }
  }
}

Remote endpoints

https://govauctions.app/api/mcpstreamable-http

What it can do

Tool inventory

Tools (9)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢search_listings(country, state, category, source, q, ...)

Search live GSA federal-surplus auction listings (facts only — no images). Filter by state, category, keyword, price, or distance from a US ZIP code. Works signed out (up to 25 rows per page). Raw listings cover sanctioned federal sources; sold-price comps span the full market.

Input Schema

{
  "type": "object",
  "properties": {
    "country": {
      "type": "string",
      "enum": [
        "US"
      ],
      "default": "US"
    },
    "state": {
      "type": "string",
      "description": "2-letter state code"
    },
    "category": {
      "type": "string"
    },
    "source": {
      "type": "string",
      "enum": [
        "gsa"
      ],
      "default": "gsa"
    },
    "q": {
      "type": "string",
      "description": "Title keyword"
    },
    "priceMin": {
      "type": "number"
    },
    "priceMax": {
      "type": "number"
    },
    "zip": {
      "type": "string",
      "description": "US 5-digit ZIP to search around. Limits results to lots within radiusMiles, orders them nearest-first, and adds distanceMiles to each."
    },
    "radiusMiles": {
      "type": "number",
      "description": "Radius from `zip`, in miles (default 100, max 500). Requires `zip`.",
      "maximum": 500,
      "default": 100
    },
    "sort": {
      "type": "string",
      "enum": [
        "ending-soonest",
        "newest"
      ],
      "description": "Result order. Default is soonest-ending (nearest-first when `zip` is given). Use `newest` to order by the lot's own listing date, newest first - that is the ordering a recurring \"what is new\" check needs, because under the default a brand-new lot can sit anywhere in the results."
    },
    "limit": {
      "type": "integer",
      "maximum": 100,
      "default": 25,
      "description": "Rows per page. Signed out, capped at 25."
    },
    "offset": {
      "type": "integer",
      "default": 0
    }
  }
}
🟢get_listing(id)

Get one live GSA listing by its id (facts only). Works signed out.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    }
  },
  "required": [
    "id"
  ]
}
🟢get_sold_comps(q, category, country, state, include, ...)

Sold-price comps for a described item, computed across the full government-surplus market in any market listed in `country`. Signed out: coverage (how many comparable sales, confidence, a coarse price band) plus `categoryStats`, the 25th/median/75th percentile of every sale in the item's category (in `state` when it has enough sales). Signed in or with an API key: the 25th/median/75th percentile for this item itself. `liveListingsUrl` links to the live auctions for the same item. A miss says which kind it is: reason `insufficient_comps` (too few comparable sales yet) is worth retrying, reason `category_not_priceable` (real-estate) never is — that category cannot be priced from a title. A catch-all `category` such as `miscellaneous` is not refused: it is dropped and the item is priced on its title alone, with `requestedCategory` and `categoryDropped` echoed back — check the resolved `category` and `confidence` before trusting the range. A miss can still carry `categoryStats` when the item's category is clear, and `retryHint` when the query was a long listing title: retry with just the brand and model.

Input Schema

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "description": "Item description, e.g. '2015 Ford F-150'"
    },
    "category": {
      "type": "string"
    },
    "country": {
      "type": "string",
      "enum": [
        "US",
        "UK",
        "CA",
        "AU",
        "DE",
        "FR",
        "NL"
      ],
      "default": "US"
    },
    "state": {
      "type": "string",
      "description": "Optional 2-letter state/region code for a regional range. Falls back to the national range when that state has too few sales; the response's `scope` field says which you got."
    },
    "include": {
      "type": "string",
      "description": "Set to \"comps\" to also return the individual sales the range was computed from (title, final price, sale month, state). Requires a key; the number returned is capped by plan. Not served for EU markets (DE, FR, NL, PL): the range is returned with `compsWithheld: true`."
    },
    "limit": {
      "type": "integer",
      "description": "How many underlying sales to return with include=comps. Capped by plan."
    }
  },
  "required": [
    "q"
  ]
}
🟢get_sold_comps_batch(queries, country, state)

get_sold_comps for a list of items in one call. Each query is either a string ('2015 Ford F-150') or an object with its own q/category/country/state. Each item costs one valuation lookup, exactly as if sent alone; an item that comes back without a range is not charged. If the monthly allowance runs out part-way, the items already priced are returned and `batch.truncated` names the rest. Batch size is capped by plan (10 on the free allowance). Requires sign-in or an API key.

Input Schema

{
  "type": "object",
  "properties": {
    "queries": {
      "type": "array",
      "minItems": 1,
      "maxItems": 100,
      "items": {
        "oneOf": [
          {
            "type": "string"
          },
          {
            "type": "object",
            "properties": {
              "q": {
                "type": "string"
              },
              "category": {
                "type": "string"
              },
              "country": {
                "type": "string",
                "enum": [
                  "US",
                  "UK",
                  "CA",
                  "AU",
                  "DE",
                  "FR",
                  "NL"
                ]
              },
              "state": {
                "type": "string"
              }
            },
            "required": [
              "q"
            ]
          }
        ]
      }
    },
    "country": {
      "type": "string",
      "enum": [
        "US",
        "UK",
        "CA",
        "AU",
        "DE",
        "FR",
        "NL"
      ],
      "default": "US",
      "description": "Default market for every query."
    },
    "state": {
      "type": "string",
      "description": "Default 2-letter state/region code for every query."
    }
  },
  "required": [
    "queries"
  ]
}
🟢get_flip_score(id)

GovAuctions Flip Score resale signal for one live lot, from any source, in any market with sold-price comps (valued against that market's comp archive): estimated value, effective bid, discount, and the link to the lot on its source site. Pass the lot id as it appears in a govauctions.app lot URL. Requires sign-in or an API key.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    }
  },
  "required": [
    "id"
  ]
}
🟢get_sold_history(q, category, country, state, limit)

The individual archived sales behind an item: title, final price, sale month and state, plus the range they produce. Use when you want the evidence rather than just the number. Query-anchored — describe an item; there is no way to list the archive. Requires sign-in or an API key.

Input Schema

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "description": "Item description, e.g. '2015 Ford F-150'"
    },
    "category": {
      "type": "string"
    },
    "country": {
      "type": "string",
      "enum": [
        "US",
        "UK",
        "CA",
        "AU"
      ],
      "default": "US"
    },
    "state": {
      "type": "string",
      "description": "Optional 2-letter state/region code."
    },
    "limit": {
      "type": "integer",
      "description": "How many sales to return. Capped by plan."
    }
  },
  "required": [
    "q"
  ]
}
🟢get_price_trend(q, category, country, state)

Month-by-month median sale price for an item, plus the first-to-last change — 'is this category softening?'. Computed from the same comps as get_sold_comps, so it never contradicts that range. Returns an empty series when too few months clear the sample threshold. Requires sign-in or an API key.

Input Schema

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "description": "Item description, e.g. 'forklift'"
    },
    "category": {
      "type": "string"
    },
    "country": {
      "type": "string",
      "enum": [
        "US",
        "UK",
        "CA",
        "AU",
        "DE",
        "FR",
        "NL"
      ],
      "default": "US"
    },
    "state": {
      "type": "string",
      "description": "Optional 2-letter state/region code."
    }
  },
  "required": [
    "q"
  ]
}
🟢get_comp_coverage(country)

How much sold-price data we hold per category for a market, and which categories can never be priced. Check this before building on the comps tools — it is the honest answer about what we cannot do. Works signed out.

Input Schema

{
  "type": "object",
  "properties": {
    "country": {
      "type": "string",
      "enum": [
        "US",
        "UK",
        "CA",
        "AU",
        "DE",
        "FR",
        "NL"
      ],
      "default": "US"
    }
  }
}
🟢get_api_usage

This key's usage for the current month: total calls and the separate valuation allowance (which comps, sold history, trend and flip-score draw down), plus the reset date. Call it to pace a long run instead of hitting a 429 mid-task. Every other signed-in tool result already carries the same numbers in `_meta.usage`, so this is rarely needed. Free: it does not count against either allowance. Requires sign-in or an API key.

Input Schema

{
  "type": "object",
  "properties": {}
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded9 tools
verifiedversion not recorded9 tools
verifiedversion not recorded9 tools
verifiedversion not recorded8 tools
verifiedversion not recorded8 tools
verifiedversion not recorded8 tools