data_freshness
Returns last-update timestamps and staleness flags for every ingest source: NVD, EPSS, CISA KEV, CWE, Shadowserver, the IOC feed, the malware sample corpus, the SSL certificate feed, the JA3 feed, and more. Use this to confirm data is current before relying on query results in dashboards or automated pipelines. Costs 1 credit.
tools/callCost: 1 credit per successful call · Response shape: jsonb
Parameters
This tool takes no arguments.
Example invocation
Ask your agent: "Are all of the threat intelligence feeds up to date right now?"
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":"data_freshness","arguments":{}}}'Response
{
"count": 9,
"items": [
{
"type": "nvd",
"last_run_at": "2026-05-29T10:00:00Z",
"last_start_at": "2026-05-29T09:58:12Z",
"age_hours": 0.41,
"stale": false
},
{
"type": "epss",
"last_run_at": "2026-05-29T00:00:00Z",
"last_start_at": "2026-05-28T23:55:40Z",
"age_hours": 10.41,
"stale": false
},
{
"type": "cisa_kev",
"last_run_at": "2026-05-29T01:00:00Z",
"last_start_at": "2026-05-29T00:58:22Z",
"age_hours": 9.41,
"stale": false
},
{
"type": "cwe",
"last_run_at": "2026-05-01T00:00:00Z",
"last_start_at": "2026-04-30T23:50:00Z",
"age_hours": 674.41,
"stale": false
},
{
"type": "shadowserver",
"last_run_at": "2026-05-29T06:00:00Z",
"last_start_at": "2026-05-29T05:58:01Z",
"age_hours": 4.41,
"stale": false
},
{
"type": "ioc_feed",
"last_run_at": "2026-05-29T10:11:00Z",
"last_start_at": "2026-05-29T10:09:44Z",
"age_hours": 0.22,
"stale": false
},
{
"type": "malware_samples",
"last_run_at": "2026-05-29T10:12:00Z",
"last_start_at": "2026-05-29T10:10:55Z",
"age_hours": 0.2,
"stale": false
},
{
"type": "ssl_feed",
"last_run_at": "2026-05-29T09:00:00Z",
"last_start_at": "2026-05-29T08:58:30Z",
"age_hours": 1.41,
"stale": false
},
{
"type": "ja3_feed",
"last_run_at": "2026-05-29T09:00:00Z",
"last_start_at": "2026-05-29T08:59:10Z",
"age_hours": 1.41,
"stale": false
}
],
"generated_at": "2026-05-29T10:24:31.118Z"
}The full MCP envelope (including _meta.precursor with request_id, credits, and generated_at) is described in Response Format.
The response contains:
| Field | Type | Description |
|---|---|---|
count | integer | Total number of ingest sources tracked. |
items | array | One entry per tracked source, sorted by staleness severity (stale sources first, then by age descending). |
generated_at | string (ISO 8601) | Timestamp when this response was produced. |
Each object in items contains:
| Field | Type | Description |
|---|---|---|
type | string | Internal source identifier (e.g. nvd, epss, cisa_kev, shadowserver). |
last_run_at | string (ISO 8601) | Timestamp of the most recent successful ingest completion for this source. |
last_start_at | string (ISO 8601) | Timestamp when the most recent ingest run started. |
age_hours | number | How many hours ago last_run_at occurred, at the time of the call. |
stale | boolean | true when age_hours exceeds the per-source freshness threshold. Stale items sort to the top of items. |
Errors
| Code | Message | When |
|---|---|---|
-32001 | unauthorized | API key is invalid, revoked, or the request IP is not on the key's allowlist. |
-32002 | insufficient_credits | Your organisation's credit balance is zero. Top up from the dashboard. |
-32603 | internal | An unexpected server-side error occurred. The credit is automatically refunded. |
This tool takes no arguments, so -32602 invalid_params is never returned. See Errors for the full error reference.