Skip to content

Your API. One policy. Every agent interface.

Generate a CLI, MCP server, and TypeScript, Python, Go, and Java clients from the same reviewed operation model. Test their behavior before connecting a real service.

The payments fixture includes a refund operation with explicit confirmation and idempotency requirements. Compile it, omit those requirements, and inspect the refusal. Supply them and inspect the redacted request plan. Both paths work without credentials or an upstream payment service.

After installing from source:

Terminal window
pnpm anvil compile examples/payments/openapi.yaml \
--manifest examples/payments/anvil.yaml \
--service payments --out generated/payments
pnpm anvil status generated/payments
pnpm anvil inspect generated/payments

Run the full local quickstart to exercise the policy and test the generated MCP server against a mock.

OutputConsumerShared contract
Typed CLIDeveloper or coding harnessApproved operations and validated arguments
MCP serverMCP clientThe same operation and runtime policy
Four client SDKsTypeScript, Python, Go, Java applicationGenerated operation methods and gates
Skill and hooksCoding harnessOperation guidance and supported early refusals
Mocks and assurance recordsCI or reviewerExecutable checks tied to the bundle hash
Deployment inputsOperatorConfiguration and release plans

The CLI and MCP runtime require installed or linked Anvil packages. The SDK trees can be vendored independently. SDK details.

InputFirst stepWhat it produces
API descriptionanvil agentifyCandidate bundle, assessment, and capability proposals
Gateway exportanvil estate inventoryGateway-aware inventory with provenance
Legacy deployment configurationanvil legacy inventoryOffline evidence and technical candidates
Existing MCP serveranvil adoptReview artifacts and an adoption plan

agentify stops for review. It does not infer approval or deploy. Legacy inventory does not generate or run a bridge. Parser support also differs from wire support: native gRPC requires a JSON transcoder; unsupported streaming and SOAP bindings are refused. Source support.

The model prevents interfaces from disagreeing

Section titled “The model prevents interfaces from disagreeing”

AIR, the Anvil Intermediate Representation, records schema, effect, risk, authentication, approval, confirmation, idempotency, retry, and evidence requirements. Every generated surface reads that model.

ConditionResult
Operation is unapprovedIt is absent from callable surfaces
Required confirmation is missingThe call fails before execution
Idempotency is unprovenAutomatic mutation retry is disabled
A harness hook is absentRuntime policy still applies
Bundle bytes changePrevious assurance evidence becomes stale
publish succeedsAn operator plan exists; deployment has not occurred

The compiler cannot recover a missing business guarantee from an HTTP method. Supply supported semantics in the reviewed manifest.

GoalGuide
Compile and exercise one bundle locallyQuickstart
Resolve uncertain operationsEnrich and approve
Process a gateway exportGateway import
Inventory middleware without an API descriptionLegacy inventory
Require fresh evidence before releaseCI integration
Understand a refusal or incomplete bundleTroubleshooting

Anvil is a source-installed toolchain for reviewed integrations. A small, single-client API wrapper may require less setup. Its value grows when several interfaces must preserve the same operation semantics.