ActionSchema is the descriptor for every callable action discovered on a tracked application. The NSP probe extracts action schemas directly from the application’s runtime — reading JavaScript function signatures from the V8 heap, method descriptors from JVMTI, or managed method metadata from the CLR. You find action schemas inside the actions map of a SubstrateState and also via GET /schema/{pid}. Before calling POST /action, you should inspect the schema to know the required parameters and understand the reversibility tier.
JSON Example
Fields
string
required
The full typed signature of the action in NSP’s This string is informational — the daemon uses the
fn(…) -> type notation. Required parameters appear without a ?; optional parameters are suffixed with ?. For example:parameters array for validation, not the signature string.enum
required
The safety classification for this action. One of
read, reversible_write, or irreversible_write. This value is a hard safety contract enforced by the daemon, not a suggestion. See the reversibility tiers table below for confidence requirements and verification rules.string
required
A human-readable explanation of what the action does, generated by the schema discovery engine and stored in the schema registry.
float (0.0–1.0)
required
How certain the probe is that this action schema accurately maps to a real callable function in the application. A value of
0.99 means the mapping was confirmed via runtime introspection. Lower values may indicate the mapping was inferred heuristically.array of ParameterSchema
required
The ordered list of parameters accepted by this action. You must supply all parameters with
required: true in the parameters object of your POST /action request body.Reversibility Tiers
Every action belongs to exactly one reversibility tier. The tier determines the minimum confidence required in theSubstrateState before the daemon will dispatch the action, and whether a verify_expression is mandatory.
If you call
POST /action on an irreversible_write action without providing a verify_expression, the daemon immediately returns 400 missing_verify_expression — the action is never dispatched. This gate exists to prevent agents from performing irreversible operations without explicit post-action confirmation.