name | string | package.json's name | The brand's name on every surface. |
domain | string | none | Its canonical origin: agents.json's name, the absolute openapi and doc_url links, openapi's servers. Localhost still serves them. |
words | { <generic word>: string } | none | The brand's own words for the generic ones, on every Layer B surface: paths, events, commands, tools, SDK names, docs, the Site and the apps. Each plural is the word's own. |
also | { <op id>: path | path[] } | none | Paths of the brand's own at which an operation is also served, beside the row's: { 'member.ledger.get': '/conflicts' }. A declared column of the operation registry, like words: the same handler, the same callers, in the HTTP column of every surface that renders it. An id that names no operation, or a path that collides with one services.dev serves, fails word_collision. |
credentials | { <credential>: { verify, fresh?, via? } } | none | Credentials the brand itself holds, verified and kept fresh like a member's. A rules row names one with { brand }; while one is unverified or stale, an act that needs it answers brand_unverified. |
fees | { shares?: boolean; percent_pay?: boolean; split_professional_fee?: boolean; percent_member_fee?: false } | none | Fee policy: false forbids a fee form on every Service. |
family | string[] | none | Sibling brands one buyer key opens. |
tenants | boolean | { limits: ('max_fee' | 'regions' | 'humans_earlier')[] } | none | Integrators who resell your Services as their own offers. |
workspaces | boolean | none | Buyers may bring their own professionals into a scoped practice workspace. |
payouts | { rail: 'stripe'; schedule?: 'same-day' | 'weekly' } | none | How services.dev's take and members' pay move. |
descriptor | string, up to 22 characters | the domain, uppercased | How your charge reads on the buyer's statement, each Service's short name after it. |
tax | 'stripe' | false | false | Tax on your charges, calculated by Stripe Tax and collected as its own line, outside the take. |
dunning | { for?: Within; ask?: boolean } | { for: '14d', ask: true } | How long a failed charge retries, and whether the buyer is asked to update how they pay. |
disputes | { evidence?: 'auto' | 'review'; prevent?: { refund_under?: number } } | { evidence: 'auto' } | Whether dispute evidence is sent for you or waits for your review, and the warned charges refunded before a dispute opens. |
calendar | Calendar | none: dates close at 23:59 UTC and nothing rolls | Where the brand's dates fall: the zone its deadlines are kept in, its weekends and closed days, the minute a due date closes and the minute rungs ring, and whether a date on a closed day rolls to the next open one. A Service may set its own. |