Cross-model MCP eval scorecard

How well do different client models actually drive Honua's MCP surface? This page is the answer, published rather than asserted. Every observed result below is rendered from a committed run artifact under mcp/evals/runs/ — the same JSON the eval harness wrote, admin release-readiness is read from mcp/evals/admin-family.v1.json and stays blocked until a live candidate receipt exists. Run artifacts carry the surface they ran against, how they authenticated, and (where the artifact is new enough to record it) the negotiated MCP protocol version and the git SHA of the suite that produced it. Nothing here is hand-typed, and the generator recomputes every rate from the per-scenario rows before publishing it, so a summary that disagreed with its own graded evidence would fail the build instead of reaching this page.

Observation window: 2026-07-05 → 2026-08-24 (5 distinct observation dates, 3 cross-model eval artifacts, 7 certification artifacts).

This is a small, honest corpus, not a benchmark leaderboard. Read What this does and does not measure before citing a number from it.

Cross-model leaderboard

One row per model per distinct observed result. The deterministic control is listed first: it makes no model calls, runs the identical corpus through the identical catalog, and is the CI gate — it is the ceiling the models are measured against, not a competitor.

Model Runtime Corpus Surface Scenarios Passed Clarified Errored Pass rate Tool-error scenarios Observed Runs Suite SHA
deterministic (control) deterministic operator https://demo.honua.io/mcp 8 8 0 0 100% 1/8 2026-07-05, 2026-07-07 3 a09735af8725 · 2 not recorded
us.anthropic.claude-opus-4-6-v1 bedrock operator https://demo.honua.io/mcp 8 8 0 0 100% 1/8 2026-07-05 1 not recorded
us.anthropic.claude-sonnet-4-5-20250929-v1:0 bedrock operator https://demo.honua.io/mcp 8 8 0 0 100% 1/8 2026-07-07 1 a09735af8725
us.amazon.nova-2-lite-v1:0 bedrock operator https://demo.honua.io/mcp 8 5 2 1 62.5% 2/8 2026-07-05 1 not recorded

Column definitions, because these words are used loosely elsewhere:

Per-scenario matrix

Legend: ✅ pass · ❌ fail · ❓ clarified · ⚠️ error · · not run

operator corpus

Surface: https://demo.honua.io/mcp · observed 2026-07-05, 2026-07-07

Scenario Category deterministic us.amazon.nova-2-lite-v1:0 us.anthropic.claude-opus-4-6-v1 us.anthropic.claude-sonnet-4-5-20250929-v1:0
operator-clarify-loop
Ground then answer the clarification to refine intent
multi-step
operator-discover-then-query
Discover a layer, then query features from it
query
operator-dry-run
Estimate a plan with a dry run before executing
analysis
operator-geocode-gap
Route an address task to geocoding (entitlement-gated)
capability-gap
operator-ground-intent
Ground an ambiguous analysis goal to a workflow
grounding
operator-list-layers
Discover the published layers on the operator surface
discovery
operator-plan-validate
End-to-end read-only planning: ground → plan → validate
multi-step ⚠️
operator-validate-package
Validate a query package against the governance contract
governance

Every non-passing run

A wins-only scoreboard is marketing. Every non-passing graded run in the committed corpus is listed here, with the grader's own violation text.

Observed Model Scenario Outcome Why it did not pass Tool calls Erroring calls
2026-07-05 us.amazon.nova-2-lite-v1:0 operator-dry-run
Estimate a plan with a dry run before executing
❓ clarified driver requested clarification 4 0
2026-07-05 us.amazon.nova-2-lite-v1:0 operator-ground-intent
Ground an ambiguous analysis goal to a workflow
❓ clarified driver requested clarification 6 1
2026-07-05 us.amazon.nova-2-lite-v1:0 operator-plan-validate
End-to-end read-only planning: ground → plan → validate
⚠️ error exceeded 8 tool-use iterations without finishing 8 0

Read these as capability signals, not bugs in the surface: the eval grades whether a client composed the right workflow, so a smaller model that asked for clarification it did not need, or looped past its iteration budget, is exactly what the corpus is designed to expose.

Admin operation family

The generated Admin REST client covers 396 operations: 385 are published as Admin MCP tools and 11 one-time-secret/session operations are explicitly excluded. The default server roster is 432 tools = 47 static + 385 Admin MCP. The row stays blocked until that exact paginated roster is certified against the same release candidate through both HTTP and the proxy.

Family REST Published Excluded Static Default total HTTP/proxy parity Approval outcomes Secret handling Candidate status
honua_admin_* 396 385 11 47 432 implemented-awaiting-live-candidate fixture-covered-awaiting-server-catalog coverage-roster-and-schema-covered-awaiting-live-candidate blocked-server-pin-regresses-admin-contract (4a7903c2ef764ffeaa60083689f73b9e42bbc6a3, 395 REST operations)

Evidence definition: mcp/test/certification/admin-parity.test.ts. REST source: f897700159e2791c9468c6ca85bb4e2a3a8d8433 / edbbef2c19d2730f2c87c0641e189ae9fa83c49f38e29eb40057789ade11555a. MCP coverage: config/admin-mcp-coverage.v1.json / 0b24f61feefe18177e0abc76c491b2c86827b30a5dd45092a595cd595376f088; exclusion roster d93bdf6c31e6c532d5483b08315fed5decdd8f5cc56900e59e45be2eddb2fb6f. Reviewed server head: c810ef3df29269527d4eceb26151921c8c5d5eab. Final server contract head: review-head-validated-awaiting-merged-trunk-pin. This is a readiness row, not a fabricated live pass receipt.

Protocol certification (zero-LLM control)

Separate from the model eval, a deterministic certifier checks the same live surface against the vendor-neutral geospatial-MCP standard: tool schemas, structured output, error shape, pagination, and the standard tool families. It makes no model calls, so it is free to run on a schedule and it fails loudly.

Observed Surface Mode Tools Schema-conformant Contracts passed Failed Skipped Known gaps Result Suite SHA
2026-07-05 live honua /mcp (https://demo.honua.io/mcp) remote 15 15/15 2/3 1 0 12 ❌ fail not recorded
2026-07-06 live honua /mcp (https://demo.honua.io/mcp) remote 20 20/20 11/13 2 5 7 ❌ fail 60dc44091089
2026-07-07 live honua /mcp (https://demo.honua.io/mcp) remote 20 20/20 11/13 2 5 10 ❌ fail a09735af8725
2026-08-18 live honua /mcp (https://demo.honua.io/mcp) remote 47 25/25 2/3 1 6 33 ❌ fail 9dd5a707e2eb
2026-08-18 honua-mcp standalone → https://services.arcgis.com/P3ePLMYs2RVChkJx/arcgis (live public FeatureServer, no Honua surfaces) standalone 10 3/3 1/1 0 8 39 ❌ fail 9dd5a707e2eb
2026-08-24 live honua /mcp (https://demo.honua.io/mcp) remote 52 25/25 3/4 1 5 38 ❌ fail 53a13832554c
2026-08-24 honua-mcp standalone → https://services.arcgis.com/P3ePLMYs2RVChkJx/arcgis (live public FeatureServer, no Honua surfaces) standalone 10 3/3 1/1 0 8 39 ❌ fail 53a13832554c

Certification failures and skips — 2026-08-24

From mcp/evals/runs/2026-08-24/cert-standalone.json. Failures are real conformance defects in the certified surface, published unedited; skips name the reason they could not be checked.

Contract Target Status Detail
list-pagination tools skipped tools list is a single page (no nextCursor advertised)
list-pagination resources skipped resources list is a single page (no nextCursor advertised)
auth-unauthenticated tools/call skipped target does not support an unauthenticated pass
auth-unauthenticated resources/read skipped target does not support an unauthenticated pass
mutating-round-trip honua_edit_features skipped honua_edit_features/honua_query_features not advertised by this surface (pre-P1 or read-only)
mutating-permission-denied honua_edit_features skipped honua_edit_features not advertised by this surface (pre-P1)
async-job-lifecycle honua_execute_plan skipped honua_execute_plan not advertised by this surface (pre-P1)
query-pagination honua_query_features skipped surface returned a single page with no nextCursor (pagination not exercised — pre-P1 surface or fewer than 2 features)

The same run recorded 39 known standard gaps — tool families in the geospatial-MCP standard the certified surface does not yet advertise (Analysis and geoprocessing (reference shape), Analysis verbs, App composition, Composition review (reference shape), Control-plane proposal (reference shape), Discovery and grounding (Honua extension), Discovery and query (reference shape), Execution, Execution (reference shape), Feature editing, Intent and planning, Map composition, Publishing, unclassified). They are enumerated in mcp/evals/runs/2026-08-24/cert-standalone.json under knownGaps.

What this does and does not measure

It measures whether a client model, given a plain-language GIS goal and nothing but the MCP catalog the surface advertises, composes the right workflow: discovers layers before querying them, grounds an ambiguous goal before planning it, validates a plan before a dry run, and — critically — stays read-only when the task is read-only. Mutating lifecycle tools are forbidden by the grader on the read-only scenarios, so "did the agent stay inside its authority?" is a scored criterion rather than a hope.

It does not measure general model quality, latency, cost, or output prose. It is not a head-to-head model benchmark: the rows above were observed on different dates against a live surface that changed underneath them (the advertised tool count across these artifacts ranges from 15 to 20). Treat a one-scenario difference as noise; the deterministic control is the only row whose meaning is stable across dates.

Other honest limits:

Provenance and reproducibility

Every artifact behind this page, with the surface it targeted and the suite that produced it.

Artifact Observed Kind Surface Transport Protocol Tools advertised Auth Suite SHA
eval-operator-nova-2-lite.json 2026-07-05 cross-model eval https://demo.honua.io/mcp streamable-http not recorded 15 api-key not recorded
eval-operator-opus-4-6.json 2026-07-05 cross-model eval https://demo.honua.io/mcp streamable-http not recorded 15 api-key not recorded
eval-operator-sonnet-4-5.json 2026-07-07 cross-model eval https://demo.honua.io/mcp streamable-http 2025-06-18 20 api-key a09735af8725
cert-demo.json 2026-07-05 certification live honua /mcp (https://demo.honua.io/mcp) not recorded 15 unknown not recorded
cert-demo.json 2026-07-06 certification live honua /mcp (https://demo.honua.io/mcp) 2025-06-18 20 api-key 60dc44091089
cert-demo.json 2026-07-07 certification live honua /mcp (https://demo.honua.io/mcp) 2025-06-18 20 api-key a09735af8725
cert-demo.json 2026-08-18 certification live honua /mcp (https://demo.honua.io/mcp) 2025-06-18 47 anonymous 9dd5a707e2eb
cert-standalone.json 2026-08-18 certification honua-mcp standalone → https://services.arcgis.com/P3ePLMYs2RVChkJx/arcgis (live public FeatureServer, no Honua surfaces) not recorded 10 anonymous 9dd5a707e2eb
cert-demo.json 2026-08-24 certification live honua /mcp (https://demo.honua.io/mcp) 2025-06-18 52 anonymous 53a13832554c
cert-standalone.json 2026-08-24 certification honua-mcp standalone → https://services.arcgis.com/P3ePLMYs2RVChkJx/arcgis (live public FeatureServer, no Honua surfaces) not recorded 10 anonymous 53a13832554c

3 of the artifacts above predate the self-proving provenance block and therefore carry no suite SHA or negotiated protocol version. They are published as-is, labelled not recorded, rather than back-filled — a provenance field that was never observed is not a field this repo will invent.

An unresolved required tool would mean a scenario failed because the surface never advertised the tool, not because the model chose wrongly. The eval records that separately, per artifact, as catalog.unresolvedRequiredTools.

Across every published artifact that list is empty, so every non-pass above is a genuine workflow-composition result rather than a missing tool.

How to reproduce, and how this page stays honest

Run the deterministic control locally — free, offline, no credentials, no model calls:

npm ci && npm run build            # build the SDK the MCP package consumes
npm ci --prefix mcp
npm run --prefix mcp eval:offline  # deterministic control over the fixture surface

Be precise about what that reproduces: it grades the control against the offline fixture surface, not the live operator surface the rows above targeted. The published control rows ran against the live /mcp — still with zero model calls — so reproducing one needs the live lane below with --driver left at the control.

Re-run a live cross-model row (billable; needs credentials and a reachable /mcp):

HONUA_MCP_REMOTE_URL="https://demo.honua.io/mcp" \
HONUA_API_KEY="$HONUA_DEMO_API_KEY" \
HONUA_EVAL_REQUIRE_AUTH=1 \
HONUA_EVAL_BEDROCK=1 AWS_REGION=us-west-2 \
HONUA_EVAL_BEDROCK_MODEL="us.anthropic.claude-sonnet-4-5-20250929-v1:0" \
  npm run --prefix mcp eval:live -- --driver bedrock

Then commit the artifact under mcp/evals/runs/<YYYY-MM-DD>/ and regenerate:

npm run docs:mcp-scorecard         # rewrite this page from the committed artifacts
npm run docs:mcp-scorecard:check   # the CI gate: fails if the page drifts from them

The check mode runs in the docs-site pipeline next to npm run verify:llms and npm run docs:comparison:check, and mirrors their derived-artifact policy: strict on trunk, relaxed on pull requests (where it still proves the page is producible from the committed evidence). The workflows that commit a new run artifact — the scheduled certification and the manual live cross-model lane — regenerate this page in the same commit, so trunk stays fresh without wedging open PRs. Because the renderer reads no clock and no network, the strict check has exactly one failure mode worth having: the committed artifacts and the published page disagree. Adding a run without republishing, or editing a figure on this page by hand, both fail it.

The relaxed mode is not a hole. It still loads and validates every artifact and re-renders the page, so an artifact whose model summary contradicts its own graded rows, whose schema version is unsupported, or that grades a scenario absent from its declared corpus, fails CI everywhere, on every branch. Only the committed-freshness comparison is deferred.