Secrets are a secure, central place to store credentials — API keys, tokens, and other sensitive values — that your external tools need. You register a secret once under a name, then reference it by that name from any external tool. Runtype resolves the value at runtime and never exposes it to the AI model, the response, or your logs.
A secret is a named value stored encrypted in your account. Secrets are write-only: once you save one, the dashboard and API never return its value again. You only ever see a masked preview (for example, the last few characters) to help you identify it. To change a value, you rotate it — you cannot read the existing one back.
Each secret has:
Secrets are encrypted at rest, resolved only inside the tool that uses them, and scrubbed from streamed events, stored results, and logs.
stripe_api_key) and paste the value.The value is encrypted immediately. After saving, only the masked preview is shown.
Use the {{secret:NAME}} syntax wherever an external tool accepts text — the URL, headers, or body:
At execution time, Runtype substitutes the stored value directly into the outgoing HTTP request before anything else runs. The value never enters the model’s context, so the AI cannot see or repeat it.
Managed secrets work only in external (HTTP) tools and in the fetch-url and api-call steps. They are intentionally blocked from custom code, transform-data steps, and other tool types so a credential can never be read by code you control. If you add a {{secret:NAME}} reference to a tool type that doesn’t support it, the save is rejected.
{{secret:NAME}} vs {{secrets.name}}These look similar but are different mechanisms:
Use {{secret:NAME}} for credentials you manage once and reuse. Use {{secrets.name}} when a developer supplies a per-request value through the API or SDK, such as a per-user token in a multi-tenant app.
If a tool references a secret you haven’t configured yet, Runtype marks the tool as needing configuration rather than failing silently. When this happens through an MCP client, the tool returns a configuration-required response with a link to the dashboard, so the credential is never requested through the AI model. Open that link, add the missing secret, and the tool resolves normally on the next run.