search_products
Full-text search across product and vendor names in the CPE catalog. Returns matching product entries with their vendor. Costs 1 credit.
tools/callCost: 1 credit per successful call · Response shape: array-rows
Parameters
querystringrequiredSearch term, 3–80 characters. Matched against product names and vendor names (case-insensitive substring match).
limitintegeroptionaldefault: 25Maximum 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
{
"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
| Code | Message | When |
|---|---|---|
-32602 | invalid_params: query: required_string | query argument is missing |
-32602 | invalid_params: query: length:3..80 | query is shorter than 3 characters or longer than 80 |
-32602 | invalid_params: limit: min:1 | limit is less than 1 |
-32602 | invalid_params: limit: max:50 | limit exceeds 50 |
-32001 | unauthorized | API key is invalid, revoked, or not permitted from this IP |
-32002 | insufficient_credits | Credit 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.