URL: /code · Id: `page:/code`

# Code: every call, file and refusal behind the pages

> Every call, file and refusal behind the pages: a Play file, what it compiles to, and the line that fails.

A call you can run sits behind every page here. Your [Startup](https://startupbuilder.dev/business/nouns/startup) is a folder of files: `show` traces each key to its line, and `dev` names the line that fails.

```mdx title="plays/cold-email.mdx"
---
audience: small-property-managers
sequence: cold-email-thread-founder
---
Write as Dana: one fresh reason from a public source, one ask, plain text.
```

```text title="show"
$ npx startup-builder show plays/cold-email.mdx
family     demand                                                                    play:cold-email@1
metric     positive-reply-rate → new-leads → new-arr → net-new-arr → arr             play:cold-email@1
process    outbound                                                                  play:cold-email@1
audience   small-property-managers                                                   plays/cold-email.mdx:2 (Ask, 2026-10-19)
on         Review.published, Monitor.checked, Conversation.answered +4 unregistered  play:cold-email@1, 8 Triggers
holdout    unit contact, control 0.25                                                compile default
worker     role:prospector (SDR)                                                     play:cold-email@1
sequence   cold-email-thread-founder                                                 plays/cold-email.mdx:3 (Ask, 2026-10-19)
heardFrom  signup.heardFrom                                                          funnels/signup.mdx:3
approval   every-send                                                                play:cold-email@1
budget     { amount: 0, currency: USD, per: month }                                  the Ask, 2026-10-19 (no budget)
guards     6: use-when, baseline, domain-authenticated +3                            play:cold-email@1
stops      12: bounce, shadow-complaint, provider-spam +9                            play:cold-email@1
body       1 rule → 1 Evaluator, run as Action.evaluate on each draft                plays/cold-email.mdx:5
owner      SalesBuilder
```

`play:cold-email@1` is the catalog Play this file inherits; versions are Not live yet (gaps #5). Every key and what it compiles to: [the plays/ folder](/code/files/plays).

```mdx title="plays/lead-reactivation.mdx"
---
audience: lapsed-leads
approval: first-send
on: Lead.lapsed
budget: { amount: 48, currency: USD, per: month }
---
Every Message cites one fresh reason with its public source.
```

```text title="dev"
$ npx startup-builder dev
plays/lead-reactivation.mdx:4  S5  on: Lead.lapsed is not a registered Event. Did you mean Offer.trialed?
```

## Files
| Folder | One file is | Compiled by | Checked by |
| --- | --- | --- | --- |
| [`plays/`](/code/files/plays) | one Play: the Workflows a Worker may choose between and the Key Result it moves, compiled to one Campaign | SalesBuilder | S1, S2, S3, S4, S5, S7, S8 |
| [`audiences/`](/code/files/audiences) | one Audience: who is in, who is left out and what fills it | SalesBuilder | S3 |
| [`sequences/`](/code/files/sequences) | one Sequence: its steps, waits and the replies that end it | SalesBuilder | S2, S5 |
| [`funnels/`](/code/files/funnels) | one funnel, and the question that asks each new Lead where they heard of you | SalesBuilder | — |
| [`workflows/`](/code/files/workflows) | one sales Process, holding only what differs from the hub’s | SalesBuilder | — |
| [`agents/`](/code/files/agents) | one seat’s contract: who fills it, its number, its standards, limits and approvals | SalesBuilder | S4, S9 |
| [`systems/`](/code/files/systems) | an override of one System the Startup inherits | SalesBuilder | S2 |
| [`domains/`](/code/files/domains) | one Domain and what it does: the site, or the email it sends from | SiteBuilder | S2 |
| [`offers/`](/code/files/offers) | one Offer: its Price, its trial, its checkout and how it is sold | SalesBuilder | S8 |
| [`content/`](/code/files/content) | one piece: who wrote it, what it came from, where it goes and what it moves | SalesBuilder | S1, S6, S7 |
| [`metrics/`](/code/files/metrics) | the quarter’s Goal and Key Results, and each leaf Metric with its one parent | SalesBuilder | S1, S9 |

## Checks
| Check | It holds | What dev prints |
| --- | --- | --- |
| [S1](/code/checks#s1) | The Metric’s parent chain reaches `arr`: the Result card’s path. | `metrics/q4.mdx:5  S1  keyResults[1].metric: demo-requests has no parent chain to arr. Set its parent: opened-deals-and-trials.` |
| [S2](/code/checks#s2) | Every send passes a code-tier Check before it goes. | `sequences/cold-email-thread-founder.mdx:5  S2  steps.second sends with no code-tier Check. Add guards: [customer-collision].` |
| [S3](/code/checks#s3) | Lists leave out suppressed Contacts and read Consent. | `audiences/lapsed-leads.mdx:4  S3  exclude: drops suppressed. Suppressed Contacts never enter a List: put it back.` |
| [S4](/code/checks#s4) | The budget fits the Mandate, or opens an Approval. | `plays/lead-reactivation.mdx:5  S4  budget: 48 USD a month is over Dana’s Mandate of 0. Sign it with Mandate.authorize, or the first send waits on an Approval.` |
| [S5](/code/checks#s5) | Every `on:` names a registered Event. | `plays/lead-reactivation.mdx:4  S5  on: Lead.lapsed is not a registered Event. Did you mean Offer.trialed?` |
| [S6](/code/checks#s6) | Content `from` and `distribute` handles resolve. | `content/webinars/60-day-notices.mdx:4  S6  distribute.posts.handles: dana-x is not a connected account. Did you mean dana-linkedin?` |
| [S7](/code/checks#s7) | Every body rule compiles to an Evaluator that runs as <Op verb="Action.evaluate" /> on each draft before its window opens. | `plays/cold-email.mdx:5  S7  body: “sound friendly” compiles to no Evaluator. Write what a draft must hold or must leave out.` |
| [S8](/code/checks#s8) | An Experiment that varies an Offer’s Price assigns by market or by time. | `experiments/pro-price.mdx:3  S8  varies: offers/pro.mdx price, assigned by contact. Assign by market or by time.` |
| [S9](/code/checks#s9) | Each Key Result names a node or leaf of the ARR tree, and a seat’s Key Result sits in its band. | `agents/sales/prospector.mdx:4  S9  results: reply-count is not a node or leaf of the ARR tree. Did you mean positive-reply-rate?` |

## Refusals
380 codes carry a fix and the call that clears it. [Every code](/code/refusals).

| Code | Alias | Then |
| --- | --- | --- |
| [`abuse`](/code/refusals#check-abuse) | Free account looks like abuse | <Op verb="PaymentSource.add" /> |
| [`accept-guard`](/code/refusals#check-accept-guard) | Residency check failing | <Op verb="Quote.supersede" /> |
| [`activation-event`](/code/refusals#check-activation-event) | No activation Event | <Op verb="Offer.publish" /> |
| [`address-cap`](/code/refusals#check-address-cap) | Too many claim messages | <Op verb="Message.schedule" /> |
| [`admin-lock`](/code/refusals#check-admin-lock) | Item an admin locked | <Op verb="File.generate" /> |
| [`advice-review`](/code/refusals#check-advice-review) | Advice needs the editor | <Op verb="Task.claim" /> |
| [`agent-label`](/code/refusals#check-agent-label) | Agent label | <Op verb="Task.assign" /> |
| [`agreement`](/code/refusals#check-agreement) | No confidentiality terms yet | <Op verb="Agreement.create" /> |

## Events
| Events the pages name | Registered | Not live yet |
| --- | --- | --- |
| 370 | 234 | 136 |

Each registered Event with its webhook payload: [Events](/code/events).

## Calls
| Group | Calls | Such as |
| --- | --- | --- |
| [Lists](/code/reference#lists) | 37 | <Op verb="Contact.suppress" />, <Op verb="Lead.create" />, <Op verb="Lead.nurture" />, <Op verb="Lead.assign" /> |
| [Content](/code/reference#content) | 37 | <Op verb="Content.draft" />, <Op verb="Site.publish" />, <Op verb="Page.update" />, <Op verb="Content.publish" /> |
| [Sending](/code/reference#sending) | 28 | <Op verb="Message.schedule" />, <Op verb="Conversation.answer" />, <Op verb="Conversation.escalate" />, <Op verb="Integration.connect" /> |
| [Sequences](/code/reference#sequences) | 12 | <Op verb="Event.list" />, <Op verb="Event.capture" />, <Op verb="Process.enable" />, <Op verb="Process.pause" /> |
| [Team](/code/reference#team) | 35 | <Op verb="Action.list" />, <Op verb="Decision.list" />, <Op verb="Action.redirect" />, <Op verb="Approval.approve" /> |
| [Plays](/code/reference#plays) | 30 | <Op verb="Metric.query" />, <Op verb="Campaign.create" />, <Op verb="Change.revert" />, <Op verb="Change.merge" /> |
| [Offers and Deals](/code/reference#offers-and-deals) | 36 | <Op verb="Offer.publish" />, <Op verb="Quote.send" />, <Op verb="Agreement.sign" />, <Op verb="Offer.trial" /> |
| [Customers](/code/reference#customers) | 25 | <Op verb="Entitlement.check" />, <Op verb="Issue.create" />, <Op verb="Renewal.open" />, <Op verb="Subscription.switch" /> |

240 calls, each with its signature and the pages that make it: [Calls](/code/reference).

## MCP
```bash title="Connect your agent"
claude mcp add --transport http salesbuilder-docs https://salesbuilder.dev/mcp
claude mcp add --transport http startup-builder https://api.sb/mcp
```

Read these docs keyless on the first line; act on your Startup on the second: [MCP](/code/mcp).