# Anatomy of an agent product

URL: /products/agent/anatomy · Id: `page:products/agent/anatomy`

> An agent product is a Role plus its eval cases: each Customer gets its own agent in its own Tenant, and pays only for work an Evaluator passes.

An [Agent](/business/nouns/agent) product is [Software](/business/nouns/software) that acts: each [Customer](/business/nouns/customer) gets its own agent, minted in its [Tenant](/business/nouns/tenant). [SoftwareBuilder](/code/builders/software) builds it from two authored parts, a [Role](/business/nouns/role) and its eval cases.

## A Role plus its eval cases
The Role says what the agent may do: its [Permissions](/business/nouns/permission), [Goals](/business/nouns/goal), [Limits](/business/nouns/limit), [Skills](/business/nouns/skill) and approvals. The eval cases say what good work is, as graded examples. Everything else compiles from those two and the product file that names the Role.

```mdx title="products/renewals.mdx"
---
$type: [Agent]
role: customer/success-manager
nouns: [Lease]
verbs: [Lease.notify, Message.create]
---
No renewal slips past its date.
```

The agent's [Tools](/business/nouns/tool) are the product's [Verbs](/business/nouns/verb), each with the name and description its reference page shows. Its MCP [Interface](/business/nouns/interface), [Memory](/business/nouns/memory) layout, agent card and [Offer](/business/nouns/offer) derive from the same records. Grant the Role a new [Verb](/business/nouns/verb), and every customer's agent gains the Tool.

## Seated or sold
One anatomy serves two employers. An agent seated in one of a [Startup](/business/nouns/startup)'s Roles works for that Startup, on its [Team](/business/nouns/team). An agent minted from an agent product works for the Customer that bought it.

Leaseline's own [Success Manager](/agents/customer/success-manager) seat sends renewal notices for Leaseline. The renewals product sells the same Role to each property manager, and each gets an agent of its own.

## Minting and authority
When a Customer accepts the [Offer](/business/nouns/offer), [`Agent.mint`](/business/nouns/agent/mint) creates the Customer's agent in its Tenant. That agent acts only within the Customer's [Entitlements](/business/nouns/entitlement) and their Limits, and its Memory belongs to the Tenant.

Authority is data, never instructions. "[Handle](/business/nouns/handle) my renewals" grants nothing; a [Mandate](/business/nouns/mandate) grants the right to send notices within Limits. An [Action](/business/nouns/action) in a class the Customer approves waits as an [Approval](/business/nouns/approval) for the Customer, never for the Startup.

The agent reaches the Customer's own accounts through the Customer's [Integrations](/business/nouns/integration). The Customer's credentials never mix with the Startup's or with another Customer's. [Tenancy and identity](/products/agent/tenancy-and-identity) covers each boundary.

## Evals are the contract
An [Evaluator](/business/nouns/evaluator) grades each piece of work against a rubric and records its verdict beside the [Action](/business/nouns/action). The doer is never the checker: an Evaluator never shares the model of the agent it grades.

The eval cases serve four jobs at once:

| Use | What the cases decide |
| --- | --- |
| Spec | What the agent must do on each task type the Offer sells |
| Gate | Whether the Startup enters [Live](/business/lifecycle/states/live#entry-checks): every task type passes |
| [Versions](/business/nouns/version) | Which [Version](/business/nouns/version) ships: none ships worse than the last |
| Billing | Which pieces of work the Customer pays for |

The agent acts from its first task. What waits for a person is set by [approvals](/agents/approvals), by action class and amount, never by an eval score.

## Billed on the verdict
A fluent reply never stands in for work done. An agent product earns on the Evaluator's passing verdict, not on a `done` Action. Work the Evaluator fails is redone, and the Customer pays nothing for the failed attempt.

Before any charge, a caller asks in the `try` [Mode](/business/nouns/mode) whether the agent can take the task. The answer is yes, yes with one missing piece (an Integration, a raised Limit), or no. A `try` call costs nothing, so a buyer's agent compares agents before it spends.

## Software or Service
The Offer's promise decides the kind, never its price unit. Billing per graded notice keeps the renewals agent Software: the Customer pays for graded work. Warranting a result under an [Outcome Contract](/business/nouns/outcome-contract), such as "every resident answered before the date or the month back", makes it a [Service](/business/nouns/service).

One agent can power both Offers. The [Agent as a Service](/products/templates/agent-as-a-service) [Product Template](/business/nouns/product-template) starts the Software one, and [ServiceBuilder](/code/builders/service) builds the [Service](/products/service).

## Next
[Life of a task](/products/agent/life-of-a-task) follows one renewal notice through every part above.