SpeedworkersInventoryDimension
string
Tools
Speedworkers Inventory
Get the daily SpeedWorkers inventory of the project (pages in index, stale, expired, not indexed) and whether the rendering speed keeps up with it
Get the SpeedWorkers inventory of a project: how many pages are in each state, day by day, and whether the rendering capacity is enough to keep them fresh. The inventory is a daily snapshot of the pages SpeedWorkers knows about, counted by state: - in index: fresh pages, delivered - stale: past their refresh time but within their max stale time, still delivered while waiting to be re-rendered - expired: past their max stale time, no longer delivered - not indexed: in the inputs but never successfully rendered There is one row per day, broken down by the requested dimensions (by section by default): - section_name: SpeedWorkers section - config_id: SpeedWorkers config id - priority: refresh priority (emergency, high, medium or low) - refresh_frequency: refresh frequency of the pages, in minutes An empty list of dimensions returns one total per day. Rows can include up to 5 sample URLs per state. The crawl stats compare today's inventory to the max rendering speed of the production version: the required speed is what refreshing every page at its section refresh frequency needs, and a load above 1 means pages will go stale or expire. They are null when the inventory has never been computed, which is the case until the cache refresh is enabled on the production version. Use the speedworkers_config tool to see the sections and their refresh settings.
Playground
Log in Log in to try this tool. The request uses your session.
date_start
Inclusive start of the inventory period (ISO date, e.g. 2026-09-01). Defaults to 29 days before date_end.
date_end
Inclusive end of the inventory period (ISO date, e.g. 2026-09-30). Defaults to today (UTC).
dimensions
Dimensions the daily inventory is broken down by, on top of the date (always included). Allowed values: 'section_name' (SpeedWorkers section), 'config_id' (SpeedWorkers config id), 'priority' (refresh priority: emergency, high, medium or low), 'refresh_frequency' (refresh frequency of the pages, in minutes). Each dimension added multiplies the number of rows. An empty list returns one total per day. Defaults to ['section_name'].
include_samples
Whether to return up to 5 sample URLs per page state (in index, stale, expired, not indexed) for each row
Credits
Fixed cost per item requested. This tool reads data Botify already holds for your project and calls no outside service, so nothing is added to the per-call price.
These usage SKUs can be charged on a call.
| SKU | Credits | Description |
|---|---|---|
| Tool call | 1 per request | Charged once per successful item. |
Schemas
item is what you send, config how the tool behaves,
and the response is what you get back.
Item
objectdate_start
string | null
Inclusive start of the inventory period (ISO date, e.g. 2026-09-01). Defaults to 29 days before date_end.
date_end
string | null
Inclusive end of the inventory period (ISO date, e.g. 2026-09-30). Defaults to today (UTC).
dimensions
array
Dimensions the daily inventory is broken down by, on top of the date (always included). Allowed values: 'section_name' (SpeedWorkers section), 'config_id' (SpeedWorkers config id), 'priority' (refresh priority: emergency, high, medium or low), 'refresh_frequency' (refresh frequency of the pages, in minutes). Each dimension added multiplies the number of rows. An empty list returns one total per day. Defaults to ['section_name'].
include_samples
boolean
Whether to return up to 5 sample URLs per page state (in index, stale, expired, not indexed) for each row
{
"date_start": null,
"date_end": null,
"dimensions": [
"section_name"
],
"include_samples": false
}
Type Definitions
1 typeThese are the available sub-object types that can be used in the properties above.
Response
objectdate_start
string (date)
required
Inclusive start of the inventory period
date_end
string (date)
required
Inclusive end of the inventory period
inventory_stats
array
required
Daily inventory snapshots, one row per date and combination of dimension values, ordered by date. A day without a snapshot has no row. When truncated, a day only partly within the limit is left out, unless it is the only one.
truncated
boolean
required
Whether the oldest days were left out to stay within 2000 rows: shorten the period or use fewer dimensions
crawl_stats
CrawlStats
required
Rendering capacity against today's inventory. Null when the inventory has never been computed for the website, i.e. the cache refresh is not enabled on the production version.
{
"date_start": "2024-01-01",
"date_end": "2024-01-01",
"inventory_stats": [
{
"date": "2024-01-01",
"section_name": null,
"config_id": null,
"priority": null,
"refresh_frequency": null,
"count": 0,
"count_in_index": 0,
"count_in_stale": 0,
"count_expired": 0,
"count_not_indexed": 0,
"samples_in_index": null,
"samples_in_stale": null,
"samples_expired": null,
"samples_not_indexed": null
}
],
"truncated": true,
"crawl_stats": {
"max_speed": 0.0,
"required_speed": 0.0,
"max_pages_refresh": 0,
"required_pages_refresh": 0,
"pages_in_inventory": 0,
"load": 0.0,
"info": "success",
"sections": [
{
"name": "string",
"load": 0.0
}
]
}
}
Type Definitions
5 typesThese are the available sub-object types that can be used in the properties above.
CrawlStats
object
max_speed
number | null
required
Max rendering speed of the production version, in pages/s
required_speed
number | null
required
Rendering speed needed to refresh the whole inventory at the sections refresh frequencies, in pages/s
max_pages_refresh
integer | null
required
Pages that can be rendered per day at max speed
required_pages_refresh
integer | null
required
Pages that must be rendered per day to stay fresh
pages_in_inventory
integer | null
required
Pages in today's inventory
load
number | null
required
required_speed / max_speed: above 1, the website cannot refresh its inventory in time and pages go stale or expire
info
CrawlStatsInfo
required
success, or why the speeds could not be computed (no max speed, no pages in today's inventory, a section without refresh frequency...)
sections
array
required
Load of each delivered section
CrawlStatsInfo
string
CrawlStatsSection
object
name
string
required
SpeedWorkers section
load
number | null
required
Share of the website max speed this section requires
InventorySample
object
url
string
required
Sample URL
device
string | null
required
Device the URL is cached for
InventoryStatsRow
object
date
string (date)
required
Day of the inventory snapshot
section_name
string | null
SpeedWorkers section (only with the section_name dimension)
config_id
string | null
SpeedWorkers config id (only with the config_id dimension)
priority
string | null
Refresh priority: emergency, high, medium or low (only with the priority dimension)
refresh_frequency
integer | null
Refresh frequency of the pages, in minutes (only with the refresh_frequency dimension)
count
integer
required
Number of pages in the inventory
count_in_index
integer
required
Pages that are fresh and delivered by SpeedWorkers
count_in_stale
integer
required
Pages past their refresh time but within their max stale time: still delivered, waiting to be re-rendered
count_expired
integer
required
Pages past their max stale time: no longer delivered
count_not_indexed
integer
required
Pages in the inputs that were never successfully rendered (render pending or failed)
samples_in_index
InventorySample
Sample in index URLs (only with include_samples)
samples_in_stale
InventorySample
Sample stale URLs (only with include_samples)
samples_expired
InventorySample
Sample expired URLs (only with include_samples)
samples_not_indexed
InventorySample
Sample not indexed URLs (only with include_samples)
Endpoints
http://agents.botify.com/{organization}/{project}/speedworkers_inventory/process
http://agents.botify.com/{organization}/{project}/speedworkers_inventory/batch_process
http://agents.botify.com/{organization}/{project}/speedworkers_inventory/async_process
http://agents.botify.com/{organization}/{project}/speedworkers_inventory/async_batch_process
See running a long job in the background for the polling flow.
cURL
curl -X POST "http://agents.botify.com/{organization}/{project}/speedworkers_inventory/process" \
-H "Authorization: Bearer $BOTIFY_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"item": {}
}'
Over MCP
This tool is exposed as the MCP tool speedworkers_inventory. An MCP client passes
organization, project and item as tool arguments.
Set up MCP →
Raw metadata
- GET /agents/speedworkers_inventory — this page as JSON.
- /agents/speedworkers_inventory/skill.md — Markdown for coding agents.