Why Nautobot tool/endpoint counts differ between test records

Read this before concluding two Nautobot test records contradict each other.

Across these records the Nautobot surface is reported as 634, 1,227, 1,334, 1,837, and 1,967 tools. That looks like drift. It mostly isn't: a Nautobot MCP surface has no single "correct" size. Each figure is a snapshot of one configuration at one moment, and three independent variables move it.


The three variables

1. Which plugins were installed

Nautobot is a plugin platform. Every installed app adds REST endpoints, and frisian-mcp discovers them automatically — so the tool count is a property of that installation, not of "Nautobot".

Per-group figures recorded across these runs:

Dispatcher group Resources Tools Source
Nautobot:dcim 53 491–530+ core
Nautobot:extras 39 335 core
Nautobot:dns 13 143 nautobot-app-dns-models plugin
Nautobot:ipam 15 139 core
Nautobot:bgp 10 100 BGP models plugin
Nautobot:golden_config 9 89 nautobot-golden-config plugin
Nautobot:cloud 58 core
Nautobot:approvalworkflow 7 53 approval-workflow plugin
Nautobot:circuits 5 51 core

Installing the DNS plugin alone adds ~143 tools. Enabling extras adds ~335. That is the bulk of the spread — not instability.

2. Which routes the dispatcher was configured to expose

FRISIAN_MCP_ROUTES controls which apps become MCP surface. Routes were deliberately removed in some runs so that certain APIs would not be exposed as MCP endpoints.

So two runs on the same Nautobot install can report different totals purely because one excluded a group. This is configuration, not discovery failure — and it is the intended behavior: operators scope the surface to what an agent should reach.

3. What was actually being counted

The records do not all count the same thing. Watch for:

  • tools vs resourcesNautobot:dcim is 53 resources and ~491 tools. Both numbers are correct; they measure different things, and 53 has been misread as a tool count.
  • full visible surface vs relevant subset — one record reports 1,837 tools for the full surface and 1,334 for "relevant modules only" in the same run. Neither is wrong; they answer different questions.
  • flat tools vs dispatcher groups — the headline of the dispatcher pattern is that N flat tools collapse to a handful of groups. "1,227 tools" and "7 tools" can describe the same session, before and after collapsing.

Worked reconciliation

The 7-group configuration in Nautobot MCP Demo Network v2 reports 1,227 tools. From the per-group figures above:

approvalworkflow  53
bgp              100
circuits          51
cloud             58
dcim             491
extras           335
ipam             139
                ————
                1227  ✓ exact

The number is reproducible from its own configuration. It is not arbitrary.


⚠️ One figure is a genuine error, not a configuration difference

Nautobot MCP Demo Report states "634+ tools exposed via 5 dispatcher groups", but its own table lists bgp 100 + golden_config 89 + approvalworkflow 53 + dcim 530+ + circuits 51 = 823+. The stated total does not match the table above it.

Treat 823+ as the figure consistent with that record's own data, and 634+ as an arithmetic slip. Flagged rather than silently corrected, because these are historical validation records — the original text is left intact.

NOTE: This count was early stage development and pre-release.


How to read a count in these records

  1. Check the plugin set and dispatcher groups first. A total without its group list is not comparable to another total.
  2. Check whether it counts tools or resources.
  3. Expect totals to grow over time. The earliest records are core-only; later ones add plugins. Rising numbers are the test programme progressing, not the surface changing under anyone's feet.
  4. Do not treat any number here as "the" Nautobot tool count. There isn't one. The count is a function of installed plugins × exposed routes.

The dispatcher pattern is specifically what makes this variance harmless in practice: an agent sees the same small dispatcher schema whether the underlying surface is 634 tools or 1,967, so the total never has to be stable for the integration to be stable.