Agent programs: teach, upgrade
The Agent Verbs teach, upgrade as MCP do programs, with inputs, result, refusals and an example.
curl -X POST https: //api.sb/ leaseline.app/ agents/ mint \
-H "Authorization: Bearer $SB_TOKEN" \
-H "Content-Type: application/ json" \
-d '{"tenant": "ten_Bu63f0he26", "product": "prod_MJmgS5dysq"}'
API reference
Agent.mintnpx startup-builder do Agent.mint --data '{"tenant": "ten_Bu63f0he26", "product": "prod_MJmgS5dysq"}'
CLI reference
Agent.mint{
"name": "do",
"arguments": {
"code": "return await $.Agent.mint({ tenant: 'ten_Bu63f0he26', product: 'prod_MJmgS5dysq' })"
}
}
MCP reference
Agent.mintimport { $ } from 'startup-builder'
const agent = await $.Agent.mint({ tenant: 'ten_Bu63f0he26', product: 'prod_MJmgS5dysq' })
SDK reference
Agent.mintReference for Agent, one group of Agent programs.
Agent.teach
Teach adds a rule to a Customer’s own minted Agent that binds only that Customer’s Tenant. Verb page.
do: return await $.Agent.teach(input)Emits Agent.taught.
Inputs
| Input | Type | Required | Description |
|---|---|---|---|
agent | Agent | required | The minted Agent. |
rule | text | required | The rule, in plain words. |
case | text | required | A case the rule must pass, kept with the Tenant’s cases. |
Returns
| Output | Type | Required | Description |
|---|---|---|---|
agent | Agent | required | The Agent with the rule. |
Refuses when
| Check | Error | Fix | Then call |
|---|---|---|---|
| The key is valid, but its scopes do not allow this operation | forbidden | Use a key whose scopes cover the operation, or ask an owner of the namespace to grant them. | None. |
| A rule that would widen what the product’s Role contract allows | refused | Clear what the check names, then call it again. | None. |
agent is missing, or is not a agent | invalid-input | Send agent as a agent, then call it again. | None. |
rule is missing, or is not a text | invalid-input | Send rule as a text, then call it again. | None. |
case is missing, or is not a text | invalid-input | Send case as a text, then call it again. | None. |
The Idempotency-Key was sent before with another operation or other input | idempotency-mismatch | Send a new key for new input; reuse a key only to retry the same request. | None. |
Example
{
"name": "do",
"arguments": {
"code": "return await $.Agent.teach({ agent: 'agent_tCzKDMorKn', rule: 'Example rule', case: 'Example case' })",
"idempotencyKey": "leaseline-agent-teach-1"
}
}Agent.upgrade
Upgrade moves a Customer’s minted Agent to a new Version once every case in its Tenant passes on that Version. Verb page.
do: return await $.Agent.upgrade(input)Emits Agent.upgraded.
Inputs
| Input | Type | Required | Description |
|---|---|---|---|
agent | Agent | required | The minted Agent. |
version | Version | required | The target Version. |
Returns
| Output | Type | Required | Description |
|---|---|---|---|
agent | Agent | required | The Agent, on the target Version. |
Refuses when
| Check | Error | Fix | Then call |
|---|---|---|---|
| The key is valid, but its scopes do not allow this operation | forbidden | Use a key whose scopes cover the operation, or ask an owner of the namespace to grant them. | None. |
agent is missing, or is not a agent | invalid-input | Send agent as a agent, then call it again. | None. |
version is missing, or is not a version | invalid-input | Send version as a version, then call it again. | None. |
The Idempotency-Key was sent before with another operation or other input | idempotency-mismatch | Send a new key for new input; reuse a key only to retry the same request. | None. |
Example
{
"name": "do",
"arguments": {
"code": "return await $.Agent.upgrade({ agent: 'agent_tCzKDMorKn', version: 'version_4HTEMs14G4' })",
"idempotencyKey": "leaseline-agent-upgrade-1"
}
}