> For the complete documentation index, see [llms.txt](https://docs.usance.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.usance.xyz/build-on-it/developers.md).

# For developers

Usance is built to be read and checked, not taken on faith. This is where to start if you are integrating with it, verifying it, or publishing on it.

## Everything is verifiable

Every financial action writes a **receipt** that cites the transactions behind it, and every receipt has a public page at `/proof/…` that needs no wallet. The receipt model is a single shared schema, so the public proof and a user's own activity view can never disagree about the same event. A receipt is refused the `CONFIRMED` status unless it can cite a successful transaction, so "it happened" is never assertable without the hash.

## Reading chain state

The interface reads directly from the deployed contracts on [X Layer](/understand-it/networks.md) rather than from an indexer or cache, and re-reads on every request, which is why an account status is never stale. There is no Usance indexer yet, so anything done directly against the contracts is real and on-chain but will not show up in the app's own activity list, and that is stated in the product rather than hidden.

## Attribution

Every write path carries an **ERC-8021 builder-code suffix** in its calldata, and Usance decodes that attribution back out of the submitted transaction rather than assuming it because a helper supports it. The builder code is configured with `USANCE_BUILDER_CODE`.

## Typed schemas

The domain types, such as mandate actions, Sentinel templates and instances, budgets, runs, snapshots and receipts, are strict, shared schemas (zod + viem) used identically by the contracts' expectations, the runtime, and the interface. That is what lets independent implementations of the valuation and risk logic agree to the wei.

## Publishing a Sentinel template

A [Sentinel](/use-it/sentinels.md) template is a **declarative, versioned manifest**. It holds no user authority and contains no executable code. Publishing commits a manifest (publisher, risk class, the exact actions and trigger classes it requires, fee model, schema hashes) to the on-chain registry, under immutable sequential versions with bounded fees. An installed instance pins a specific template version and its manifest hash, and a mismatch is refused rather than guessed. `/developers/sentinels` documents the publishing contract.

## What needs access

Some integrations are intentionally gated, and they are disabled with the reason shown, never simulated. External venue execution for hedging and trading needs builder deployment access that has not been granted. ChainGPT extraction is verified against the live API, and the public proof pages are built from a single deterministic path by design, so their Passports are marked single-source. The current, reproducible state of every integration is on the [status page](/understand-it/networks.md) and at `/status` in the app.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.usance.xyz/build-on-it/developers.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
