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 declared | Default | Declaring adds |
|---|---|---|
| Call site | One anonymous surface | Findings attributed per surface |
| Profile | Safety validators only · coverage: safety_only | Task findings, and the ability to claim a gate |
| Escalation | A route to a human must exist | Checked against your own service level |
| Jurisdiction | Per request, from the argument | Per-region reporting |
| Environment | From the key prefix: hr_test_ never touches the record | Nothing; the key already did it |
| Retention | None: signals, metadata and a hash only | Quote 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.htmlAPI reference
| Method | Endpoint | Purpose |
|---|---|---|
| GET | /api/v1/policy/block | Cached block (byte-stable, hash, ETag) + session block + ranked referral |
| POST | /api/v1/grade | Grade a reply after send; writes a sealed record |
| POST | /api/v1/referrals/rank | Fitness-ranked services and composed referral text |
| GET | /api/v1/records/verify | Recompute your system's hash chain against the published head |
| GET | /api/v1/health | Liveness 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.