Koskamo

GovAuctions MCP

A hosted MCP server providing programmatic access to government surplus auction data, including live listings, sold-price comparisons, price trends, and resale signals across multiple countries.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

GovAuctions MCP logo, by GovAuctionsVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-06Operated by GovAuctions
You need:Authentication is a bearer API keyDiscovery is open: an agent can add the server, list its tools and ask a sold-price question with NO API key
MCP endpoint (Streamable HTTP)
https://govauctions.app/api/mcp
Vendor documentation

What its tools do

9 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

9 of 9 have a description · 9 of 9 declare behavior hints · 0 of 8 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to govauctions.app ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Search live government surplus auction listings
  • Retrieve sold-price comps and historical data
  • Calculate resale value using the Flip Score signal
  • Get monthly price trends for specific items

Source and maintenance

Vendor evidenceRegistry 1.0.3
Maintenance checked

Protocol and capabilities

Server
govauctions 1.0.3
MCP protocol negotiated in check
2025-11-25
Tools
9 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {}
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

GovAuctions.app is a free public site where people search live government surplus auctions (vehicles, equipment, electronics, seized property) and check what comparable lots actually sold for before bidding. This server exposes that same data to code: live listings, sold-price comps, price trends, and the Flip Score resale signal.

Tools

9 advertised

search_listings — Search live GSA listings
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

search_listings input schema
{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "description": "Title keyword"
    },
    "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."
    },
    "sort": {
      "enum": [
        "ending-soonest",
        "newest"
      ],
      "type": "string",
      "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",
      "default": 25,
      "maximum": 100,
      "description": "Rows per page. Signed out, capped at 25."
    },
    "state": {
      "type": "string",
      "description": "2-letter state code"
    },
    "offset": {
      "type": "integer",
      "default": 0
    },
    "source": {
      "enum": [
        "gsa"
      ],
      "type": "string",
      "default": "gsa"
    },
    "country": {
      "enum": [
        "US"
      ],
      "type": "string",
      "default": "US"
    },
    "category": {
      "type": "string"
    },
    "priceMax": {
      "type": "number"
    },
    "priceMin": {
      "type": "number"
    },
    "radiusMiles": {
      "type": "number",
      "default": 100,
      "maximum": 500,
      "description": "Radius from `zip`, in miles (default 100, max 500). Requires `zip`."
    }
  }
}
search_listings annotations
{
  "title": "Search live GSA listings",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_listing — Get a listing
Advertised by the server during the last successful anonymous check.
Advertised read-only

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

get_listing input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string"
    }
  }
}
get_listing annotations
{
  "title": "Get a listing",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_sold_comps — Sold-price comps
Advertised by the server during the last successful anonymous check.
Advertised read-only

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. `pricedAs`, when present, is what was actually priced: a spelling fix, or the listing title with its lot count, lot number or serial removed. When the `category` you sent holds nothing like the item and another category clearly does, the range comes from that one, with `requestedCategory` and `categoryOverridden` echoed back. 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.

get_sold_comps input schema
{
  "type": "object",
  "required": [
    "q"
  ],
  "properties": {
    "q": {
      "type": "string",
      "description": "Item description, e.g. '2015 Ford F-150'"
    },
    "limit": {
      "type": "integer",
      "description": "How many underlying sales to return with include=comps. Capped by plan."
    },
    "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."
    },
    "country": {
      "enum": [
        "US",
        "UK",
        "CA",
        "AU",
        "DE",
        "FR",
        "NL"
      ],
      "type": "string",
      "default": "US"
    },
    "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`."
    },
    "category": {
      "type": "string"
    }
  }
}
get_sold_comps annotations
{
  "title": "Sold-price comps",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_sold_comps_batch — Sold-price comps, many at once
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

get_sold_comps_batch input schema
{
  "type": "object",
  "required": [
    "queries"
  ],
  "properties": {
    "state": {
      "type": "string",
      "description": "Default 2-letter state/region code for every query."
    },
    "country": {
      "enum": [
        "US",
        "UK",
        "CA",
        "AU",
        "DE",
        "FR",
        "NL"
      ],
      "type": "string",
      "default": "US",
      "description": "Default market for every query."
    },
    "queries": {
      "type": "array",
      "items": {
        "oneOf": [
          {
            "type": "string"
          },
          {
            "type": "object",
            "required": [
              "q"
            ],
            "properties": {
              "q": {
                "type": "string"
              },
              "state": {
                "type": "string"
              },
              "country": {
                "enum": [
                  "US",
                  "UK",
                  "CA",
                  "AU",
                  "DE",
                  "FR",
                  "NL"
                ],
                "type": "string"
              },
              "category": {
                "type": "string"
              }
            }
          }
        ]
      },
      "maxItems": 100,
      "minItems": 1
    }
  }
}
get_sold_comps_batch annotations
{
  "title": "Sold-price comps, many at once",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_flip_score — Flip Score
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

get_flip_score input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string"
    }
  }
}
get_flip_score annotations
{
  "title": "Flip Score",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_sold_history — Sold history
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

get_sold_history input schema
{
  "type": "object",
  "required": [
    "q"
  ],
  "properties": {
    "q": {
      "type": "string",
      "description": "Item description, e.g. '2015 Ford F-150'"
    },
    "limit": {
      "type": "integer",
      "description": "How many sales to return. Capped by plan."
    },
    "state": {
      "type": "string",
      "description": "Optional 2-letter state/region code."
    },
    "country": {
      "enum": [
        "US",
        "UK",
        "CA",
        "AU"
      ],
      "type": "string",
      "default": "US"
    },
    "category": {
      "type": "string"
    }
  }
}
get_sold_history annotations
{
  "title": "Sold history",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_price_trend — Price trend
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

get_price_trend input schema
{
  "type": "object",
  "required": [
    "q"
  ],
  "properties": {
    "q": {
      "type": "string",
      "description": "Item description, e.g. 'forklift'"
    },
    "state": {
      "type": "string",
      "description": "Optional 2-letter state/region code."
    },
    "country": {
      "enum": [
        "US",
        "UK",
        "CA",
        "AU",
        "DE",
        "FR",
        "NL"
      ],
      "type": "string",
      "default": "US"
    },
    "category": {
      "type": "string"
    }
  }
}
get_price_trend annotations
{
  "title": "Price trend",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_comp_coverage — Comp coverage
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

get_comp_coverage input schema
{
  "type": "object",
  "properties": {
    "country": {
      "enum": [
        "US",
        "UK",
        "CA",
        "AU",
        "DE",
        "FR",
        "NL"
      ],
      "type": "string",
      "default": "US"
    }
  }
}
get_comp_coverage annotations
{
  "title": "Comp coverage",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_api_usage — API usage
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

get_api_usage input schema
{
  "type": "object",
  "properties": {}
}
get_api_usage annotations
{
  "title": "API usage",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (2 of 2 answered).

  1. 2026-11-06: 1 of 1 checks answered
  2. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1222 ms
95th percentile latency
1222 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1222 ms · metadata changed · 9 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http govauctions-mcp https://govauctions.app/api/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add govauctions-mcp --url https://govauctions.app/api/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable govauctions-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "govauctions-mcp": {
      "url": "https://govauctions.app/api/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "govauctions-mcp": {
      "type": "streamableHttp",
      "url": "https://govauctions.app/api/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start govauctions-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "govauctions-mcp": {
      "type": "http",
      "url": "https://govauctions.app/api/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http govauctions-mcp https://govauctions.app/api/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://govauctions.app/api/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "govauctions-mcp": {
      "serverUrl": "https://govauctions.app/api/mcp"
    }
  }
}

Let your agent find its tools

Find servers like GovAuctions MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run GovAuctions MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing