For developers

Make a governed call
in four lines.

The call
from muraqib_client import MuraqibClient

client = MuraqibClient(api_key=MURAQIB_API_KEY)

decision = client.clear(
    action_type="EXTERNAL_CORRESPONDENCE",
    summary="Send Q3 portfolio update to LP distribution list",
)

if not decision.approved:
    raise SystemExit(decision.reason)
What came back
decision.decision      # 'ESCALATED'
decision.approved      # False
decision.escalated     # True
decision.governed      # True
decision.evidence_id   # 'EVD-BFC347CC'
decision.reason        # 'EXC-01: External correspondence —
                       #  portfolio-company dispatch authorization'

ESCALATED means a person must authorise it. The record is sealed either way — that is what governed attests.

Show the full sealed record — 34 fields

A real record from the production chain, sealed 13 August 2026 at chain sequence 462 and resolved by a person on 30 August at sequence 481. Records like this are verified from an evidence bundle using the open-source verifier; bundles are issued by OQIRON on request.

{
  "evidence_id":           "EVD-BFC347CC",
  "decision":              "ESCALATED",
  "rule_triggered":        "EXC-01",
  "rule_name_en":          "External correspondence — portfolio-company dispatch authorization",
  "rule_name_ar":          "اعتماد المراسلات الخارجية الموجّهة إلى الشركة التابعة قبل الإرسال",
  "safe_action":           "EXC-01: external correspondence to a portfolio company requires
                            human authorization before dispatch",
  "action_type":           "EXTERNAL_CORRESPONDENCE",
  "requires_approval":     "true",
  "risk_level":            "LOW",
  "risk_score":            "0.33",
  "data_sensitivity":      "MEDIUM",
  "is_external":           "true",
  "contains_pii":          "false",
  "has_attachment":        "false",
  "regulatory_risk":       "false",
  "financial_amount":      "0",
  "priority":              "NORMAL",
  "token_cost":            "0",
  "policy_digest":         "8014329e3fc6f2f4351f084eb9c5b167501e2d85a7a550ddc6858066b2a4ab2d",
  "created_at":            "2026-08-13T13:32:29.619595+00:00",
  "signature_verified":    null,
  "signature_reject_reason": null,
  "assertion_sig":         null,
  "assertion_body":        null,
  "assertion_key_id":      null,
  "assertion_ts":          null,
  "assertion_bind_version": null,

  "action_summary":        "— withheld —",
  "agent_id":              "— withheld —",
  "agent_name":            "— withheld —",
  "actor_id":              "— withheld —",
  "actor_name":            "— withheld —",
  "request_ref":           "— withheld —",
  "tenant_id":             "— withheld —"
}

Seven fields are withheld here — the correspondence itself, the agent and actor identities, the request reference and the tenant. The sealed record carries them in full. That is precisely why evidence bundles are issued on request rather than self-served: a bundle contains the substance of every governed action, and publishing one would disclose it.

Install
pip install git+https://github.com/oqiron/[email protected]

No configuration. The client defaults to https://muraqib.oqiron.ai.
Set MURAQIB_API_KEY to the key we send you.
Your agent id comes from the key — never send it in the body.

Request sandbox access

A person reviews each request, usually within one business day. You receive an agent id, a tenant id and an API key. Sandbox actions never enter the production chain.