Skip to content

Declare the OECD CRS gateway tool in the consumer contract - #57

Merged
amnotyoung merged 4 commits into
mainfrom
add-oecd-crs-contract
Aug 12, 2026
Merged

Declare the OECD CRS gateway tool in the consumer contract#57
amnotyoung merged 4 commits into
mainfrom
add-oecd-crs-contract

Conversation

@amnotyoung

Copy link
Copy Markdown
Owner

Why

oecd_crs_query_country now reaches the public v2 surface (amnotyoung/io-mcp#56, deployed). The plugin has to state what it depends on before the gateway will snapshot it — until then check-plugin-consumer-contracts reports the tool as an unapproved exposure.

What

One contract entry plus the refreshed observed lock.

Smoke arguments read Fiji 2023 disbursements as a sector breakdown: a recipient small enough to stay well inside the response budget (55 activities, 49KB upstream), and a year whose CRS submission is final rather than provisional.

Ordering

This could not be prepared ahead of the deploy. contracts:check validates against the live oda-mcp.fly.dev, not the local files, so it reported required tool oecd_crs_query_country is missing until the gateway shipped.

Verification

Smoke-called 33 tools; 2 exempt (get_trend_document, oda_map_project_detail).
Compatible gateway drift written to observed.lock.json.

Gateway side after the snapshot sync: Plugin consumer contracts are compatible: 2 consumers.

What this unlocks

Activities that ended are dropped from Korean IATI files but retained in CRS, so historical purpose codes become answerable — for the Fiji portfolio that is the 19 of 39 projects IATI could not classify. CRS carries no project titles and its donor is Korea as a whole, so it still cannot attribute a code to a named project; the response caveats say so.

🤖 Generated with Claude Code

amnotyoung and others added 4 commits August 13, 2026 00:48
oecd_crs_query_country reaches the public v2 surface, so the plugin has
to state what it depends on before the gateway will snapshot it.

The smoke arguments read Fiji 2023 disbursements as a sector breakdown:
a recipient small enough to stay well inside the response budget, and a
year whose CRS submission is final.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The contract and observed lock both gained oecd_crs_query_country, but
two assertions still pinned 34, so CI failed on the very change that
added the tool.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The contract now declares a tool the previous release did not, so the
version has to move for consumers to pick it up; CI enforces this on any
change under the versioned plugin paths.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The manifest test asserts package-lock agrees with the plugin manifests
in both its root version and packages[""], so bumping the manifests
alone leaves the release inconsistent.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@amnotyoung
amnotyoung merged commit cd7c163 into main Aug 12, 2026
3 of 4 checks passed
@amnotyoung
amnotyoung deleted the add-oecd-crs-contract branch August 12, 2026 22:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant