slug | kebab-case, globally unique | ^[a-z0-9]+(-[a-z0-9]+)*$ | acme-payments |
version | semver, optional prerelease/build | ^\d+\.\d+\.\d+(-[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*)?(\+[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*)?$ | 1.0.0, 2.1.0-beta.3 |
components.widgets[].id | kebab-case, globally unique — prefix with slug | ^[a-z0-9]+(-[a-z0-9]+)*$ | acme-payments-summary |
tools[].name | lowercase snake_case | ^[a-z][a-z0-9_]*$ | list_recent_payments |
webhooks[].id | kebab-case | ^[a-z0-9]+(-[a-z0-9]+)*$ | payment-updated |
schedules[].id | kebab-case | ^[a-z0-9]+(-[a-z0-9]+)*$ | daily-reconcile |
schedules[].cron | 5-field numeric cron | Standard grammar | 0 6 * * * |
actions keys | kebab-case | ^[a-z0-9]+(-[a-z0-9]+)*$ | create-record |
| storage keys | <dataType> or <dataType>/<subtype>; dataType from the scope’s allowed list | ^[a-z0-9_-]+(/[a-z0-9_-]+)?$ | settings/location, cache/forecast |
egress[] | https origin, optional leading *., optional port | — | https://api.example.com, https://*.cdn.example.com:8443 |
| OAuth endpoints | absolute https, no embedded credentials, origin in egress | — | https://oauth.provider.com/authorize |