Skip to content

Jev: Verify rules

Runs a battery of yes/no checks on a text in a single call and exits through Pass (none fires) or Flagged (any exceeds its threshold). jev.failed says which ones and with what probability; jev.blocked is true if any was a block check.

It includes predefined checks (their instructions are in English, where Jev performs best):

PresetWhat it detectsAction
spamSpam or mass advertisingflag
credentialsAsks for passwords, keys, codes or cardsblock
piiPersonal data (IDs, phones, addresses, accounts)flag
injectionTries to manipulate an AI assistantblock

You can add custom checks. Keep deterministic logic (dates, amounts) in code and use Jev only for judgement.

ParameterTypeRequiredDescription
credentials_idcredentialsYesTypeSafe credential (API key).
modelselectYesJev model. jev-latest is an alias that moves to new models on release (today jev-1.13.0); in production pin jev-1.13.0 or jev-1.14.0.
state_modeselectYesWhat is evaluated: text (a text), object (object with named fields, recommended) or all (all data reaching the node).
statetextareaNoText or JSON object to evaluate. Supports \{\{field\}\} variables.
long_contextbooleanNoLong context (experimental): raises the text limit from 64k to 262k tokens. It is slower and less accurate; use it only when the text does not fit otherwise.
output_keytextNoKey in the data where the result is stored. Default jev; the rest of the data is kept.
presetstextNoPredefined, comma separated: spam, credentials, pii, injection. Default spam,credentials.
checksjsonNoCustom: list [{name, instructions, threshold?, action: "flag" or "block"}].
default_thresholdnumberNoA check fires if its probability is at or above. Default 0.7.

Requires a TypeSafe credential (credentials_id) holding the api_key from the TypeSafe console (TYPESAFE_API_KEY). The key is yours: TypeSafe bills the usage, not Floogos. In the credential, the Test button calls GET /v1/models (no tokens spent).

The result is added to the input data (it does not replace it): the ticket or form stays available downstream. Read it as \{\{jev.field\}\}.

{
"nextModule": "selected-route-target",
"data": {
"...": "input data, untouched",
"jev": {
"passed": false,
"blocked": true,
"failed": [
{
"name": "credentials",
"probability": 0.95,
"threshold": 0.7,
"action": "block"
}
],
"checks": {
"spam": 0.08,
"credentials": 0.95
},
"route": "flag",
"route_fallback": false,
"model": "jev-1.13.0",
"usage": {
"input_tokens": 90,
"output_tokens": 6
},
"cost_usd": 0.000004
}
}
}

Several outputs: route_pass, route_flag. Each port connects to its target; the node chooses which one to exit through.

Place Jev: Verify rules with credentials,injection before an agent: Pass continues to the agent; Flagged replies with a neutral message and alerts a person.

  • Privacy: the text you evaluate leaves Floogos for TypeSafe, a third party. Per their documentation it is not used for training, and zero retention exists only on their Enterprise plan. Do not send data you cannot share; filter first with the Jev: Verify rules node (pii) if needed.
  • Language: Jev performs best in English; other languages, Spanish included, work with lower accuracy. Test with your own data before automating, and write instructions in English if results are unreliable.
  • Variables: the engine substitutes \{\{field\}\} in the configuration before running the node. The node does not substitute again, so user text containing braces travels as-is.
  • Cost: 0.042 $ per million input tokens; output is free. jev.cost_usd is a per-run estimate.
  • Errors: missing_credentials, validation (configuration or 422), auth_error (401), rate_limited (429), overloaded (529), state_too_large, jev_error and connection_error. 429, 529, 5xx and network drops retry automatically (up to 3 times with growing delay); the rest do not.
  • Confidence: confidence is not an accuracy guarantee: calibrate thresholds with your own cases and start conservative. Do not automate destructive actions.