CPE & Vendors

search_products

Full-text search across product and vendor names in the CPE catalog. Returns matching product entries with their vendor. Costs 1 credit.

POST
tools/call

Cost: 1 credit per successful call  ·  Response shape: array-rows

Parameters

querystringrequired

Search term, 3–80 characters. Matched against product names and vendor names (case-insensitive substring match).

limitintegeroptionaldefault: 25

Maximum number of results to return. Accepted range: 1–50.

Example invocation

Ask your agent: "Search for all Fortinet products in the CPE catalog."

curl -s https://mcp.precursorintelligence.com \
  -H "Authorization: Bearer $PRECURSOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_products","arguments":{"query":"forti","limit":10}}}'

Response

result.content[0].text (parsed)
{
  "count": 3,
  "items": [
    {
      "name": "forticlient",
      "vendor": "fortinet",
      "is_favorited": false
    },
    {
      "name": "fortigate",
      "vendor": "fortinet",
      "is_favorited": false
    },
    {
      "name": "fortios",
      "vendor": "fortinet",
      "is_favorited": false
    }
  ],
  "generated_at": "2026-05-29T08:14:22.301Z"
}

count equals items.length and reflects the number of results returned, not the total catalog matches. Narrow your query or reduce limit if results are not specific enough.

The full MCP envelope (including _meta.precursor with request ID and credit details) is described in Response Format.

Errors

CodeMessageWhen
-32602invalid_params: query: required_stringquery argument is missing
-32602invalid_params: query: length:3..80query is shorter than 3 characters or longer than 80
-32602invalid_params: limit: min:1limit is less than 1
-32602invalid_params: limit: max:50limit exceeds 50
-32001unauthorizedAPI key is invalid, revoked, or not permitted from this IP
-32002insufficient_creditsCredit balance is zero; top up from the dashboard

A well-formed search that matches no products returns a successful response with { "count": 0, "items": [] } and the credit is refunded automatically.