Your API. One policy. Every agent interface.
Try the behavior before the architecture
Section titled “Try the behavior before the architecture”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:
pnpm anvil compile examples/payments/openapi.yaml \ --manifest examples/payments/anvil.yaml \ --service payments --out generated/paymentspnpm anvil status generated/paymentspnpm anvil inspect generated/paymentsRun the full local quickstart to exercise the policy and test the generated MCP server against a mock.
What you can use afterward
Section titled “What you can use afterward”| Output | Consumer | Shared contract |
|---|---|---|
| Typed CLI | Developer or coding harness | Approved operations and validated arguments |
| MCP server | MCP client | The same operation and runtime policy |
| Four client SDKs | TypeScript, Python, Go, Java application | Generated operation methods and gates |
| Skill and hooks | Coding harness | Operation guidance and supported early refusals |
| Mocks and assurance records | CI or reviewer | Executable checks tied to the bundle hash |
| Deployment inputs | Operator | Configuration and release plans |
The CLI and MCP runtime require installed or linked Anvil packages. The SDK trees can be vendored independently. SDK details.
Start from the material you have
Section titled “Start from the material you have”| Input | First step | What it produces |
|---|---|---|
| API description | anvil agentify | Candidate bundle, assessment, and capability proposals |
| Gateway export | anvil estate inventory | Gateway-aware inventory with provenance |
| Legacy deployment configuration | anvil legacy inventory | Offline evidence and technical candidates |
| Existing MCP server | anvil adopt | Review 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.
| Condition | Result |
|---|---|
| Operation is unapproved | It is absent from callable surfaces |
| Required confirmation is missing | The call fails before execution |
| Idempotency is unproven | Automatic mutation retry is disabled |
| A harness hook is absent | Runtime policy still applies |
| Bundle bytes change | Previous assurance evidence becomes stale |
publish succeeds | An 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.
Pick the next step
Section titled “Pick the next step”| Goal | Guide |
|---|---|
| Compile and exercise one bundle locally | Quickstart |
| Resolve uncertain operations | Enrich and approve |
| Process a gateway export | Gateway import |
| Inventory middleware without an API description | Legacy inventory |
| Require fresh evidence before release | CI integration |
| Understand a refusal or incomplete bundle | Troubleshooting |
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.