Account & Meta

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.

POST
tools/call

Cost: 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

result.content[0].text (parsed)
{
  "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:

FieldTypeDescription
countintegerTotal number of ingest sources tracked.
itemsarrayOne entry per tracked source, sorted by staleness severity (stale sources first, then by age descending).
generated_atstring (ISO 8601)Timestamp when this response was produced.

Each object in items contains:

FieldTypeDescription
typestringInternal source identifier (e.g. nvd, epss, cisa_kev, shadowserver).
last_run_atstring (ISO 8601)Timestamp of the most recent successful ingest completion for this source.
last_start_atstring (ISO 8601)Timestamp when the most recent ingest run started.
age_hoursnumberHow many hours ago last_run_at occurred, at the time of the call.
stalebooleantrue when age_hours exceeds the per-source freshness threshold. Stale items sort to the top of items.

Errors

CodeMessageWhen
-32001unauthorizedAPI key is invalid, revoked, or the request IP is not on the key's allowlist.
-32002insufficient_creditsYour organisation's credit balance is zero. Top up from the dashboard.
-32603internalAn 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.