Developers

Two calls. Fifteen minutes.
Nothing to declare first.

Fetch governed behaviour into your prompt, then grade the reply after it has gone. Everything else (call sites, profiles, retention, connectors) is an upgrade you add when you want what it gives you.

1 · Get a key

Test keys (hr_test_) write only to a test system. Your console issues them.

2 · Add the block

Cache it with your prompt. Pin by hash; adopt new versions on your schedule.

3 · Grade after send

Off the response path. Coverage, findings and the record appear.

Quickstart

# 1 · Governed behaviour for your system prompt
curl https://harmwise.joliro.org/api/v1/policy/block?jurisdiction=AU \
  -H "Authorization: Bearer $HARMWISE_KEY"
# → { "block": "…", "hash": "sha256:…", "session_block": "…", "referral": {…} }

# 2 · After the reply has been sent, grade it
curl https://harmwise.joliro.org/api/v1/grade \
  -H "Authorization: Bearer $HARMWISE_KEY" -H "Content-Type: application/json" \
  -d '{"candidate":"<the reply>","turns":[{"role":"user","content":"<what they said>"}],
       "jurisdiction":"AU","policy_hash":"sha256:…"}'

Prompt caching: the block is byte identical for a given module version, so it can sit inside a cached prefix. Per session text is always a separate block, never interpolated into the cached one.

Playground, live

Grade a real reply against the real validators.

This runs the published framework's deterministic validators, the referral fitness checks and the record seal. It is the same code path as production, on a public rate limited key that writes only to the Playground organisation.

Uses a public test key. Test keys write only to the Playground's test system — never to a production record.

Grade a reply to see the findings, the referral assessment and the sealed record it writes.

Integration patterns

Pattern 1 · Instruction

You own the system prompt: compose the block into it and grade after send. The most safety value, and the fifteen minute path.

Pattern 2 · Tool and transcript

Your assistant runs on a platform where you can't edit the prompt. Give the platform's model Harmwise Guardrail as a tool (referrals/rank) through MCP or the platform's action mechanism, and grade from the transcript export.

Platform connectors

Connectors package Harmwise Guardrail as a platform's native extension. The first is built for the pilot customer's platform; the framework follows for Microsoft Copilot Studio, Genesys Cloud, Salesforce, Amazon Connect and Lex, Dialogflow CX, ServiceNow and Zendesk, in order of demand.

Defaults: nothing declared

Not declaredDefaultDeclaring adds
Call siteOne anonymous surfaceFindings attributed per surface
ProfileSafety validators only · coverage: safety_onlyTask findings, and the ability to claim a gate
EscalationA route to a human must existChecked against your own service level
JurisdictionPer request, from the argumentPer-region reporting
EnvironmentFrom the key prefix: hr_test_ never touches the recordNothing; the key already did it
RetentionNone: signals, metadata and a hash onlyQuote spans, on a TTL you choose

When something fails

  • Harmwise Guardrail unreachable

    Your SDK serves the last good block from disk; the reply goes out; the grade queues.

  • Grader error or timeout

    Recorded as instrument_error: ours, never counted against you, never reported as clean.

  • Router low confidence

    The baseline block for every enabled module is served, flagged degraded.

  • Directory has no local coverage

    Emergency number and national 24/7 services, and the reply says local services aren't covered yet.

Never block, never edit, never strip. These are not settings.

Baseline

Find out what your channel is already hearing.

Point Baseline at a sample of your own conversation history. It reports how many disclosures occurred, of what kind, how they were handled, and the worst examples verbatim, together with what the core floor would have changed. It runs on your machine; nothing leaves.

For enterprise environments it ships as a container that runs inside your tenancy with a redaction pass first.

$ npx harmwise baseline ./transcripts.jsonl

  10,000 conversations · deterministic · no network
  ─────────────────────────────────────────────
  disclosures detected        214   (2.1%)
    economic abuse             96
    tech-facilitated abuse     58
    stated immediate danger     7
  handled with an S0 finding   11
  referral dead-ends           38
  → report.html

API reference

MethodEndpointPurpose
GET/api/v1/policy/blockCached block (byte-stable, hash, ETag) + session block + ranked referral
POST/api/v1/gradeGrade a reply after send; writes a sealed record
POST/api/v1/referrals/rankFitness-ranked services and composed referral text
GET/api/v1/records/verifyRecompute your system's hash chain against the published head
GET/api/v1/healthLiveness plus a real grader round-trip

Errors are RFC 9457 problem details. Keys are prefixed hr_live_ and hr_test_ so secret scanners find them.