hbeval.com

Documentation

What HB-Eval measures, how each part works, how they differ, and how to go from nothing to a first evaluation and a first monitored run.

What HB-Eval measures

Capability benchmarks answer one question: what can this agent do under clean conditions? They say almost nothing about what happens when a tool call fails, the context degrades, or an input turns adversarial — and that gap between benchmark performance and behaviour under failure is what HB-Eval measures directly, by injecting faults on purpose and scoring what survives.

The platform gives you five ways to use that measurement, and each answers a different question:

EvaluateWas this agent reliable, once?
MonitorIs it still reliable, right now?
Safe HaltShould it keep running?
ObservatoryHow does the field compare?
MCPCan I ask my assistant instead?

The five metrics

MetricMeasuresRange
PEI

Planning Efficiency Index

Whether the plan is coherent and economical rather than wasteful. Repeated re-planning drives it down.0–1
FRR

Failure Resilience Rate

Whether the agent keeps functioning when a fault is injected, rather than collapsing.0–1
IRS

Intentional Recovery Score

Whether recovery from failure was deliberate rather than accidental. Defined only on faulted episodes — recovery is meaningless with nothing to recover from.0–1, or undefined
TI

Traceability Index

Whether the agent's behaviour can be followed and audited step by step.0–5
CSI

Consistency Stability Index

Whether the agent behaves the same way across repeated runs, or drifts. Needs several runs, so it is undefined within a single session.0–1, or undefined

Undefined is not zero

IRS with no injected fault, or CSI within a single run, were not measured — they are reported as undefined, everywhere in the platform, and never coerced to zero. A zero would claim a measured failure on a dimension nothing examined.

Tiers are governed by the weakest required metric, not the average — an agent cannot average its way to trustworthiness by excelling on some dimensions while failing a critical one.

Quickstart

  1. 1. Install the SDK

    bash
    pip install hb-eval-sdk
  2. 2. Create an agent and copy its keys from Dashboard → Agents.

  3. 3. Run your first evaluation

    python
    from hb_eval_sdk import HBEvalClient
    
    client = HBEvalClient(api_key=..., aes_key=..., signing_secret=...)
    
    def my_agent(system_prompt: str, question: str) -> str:
        return call_your_model(system_prompt, question)
    
    base_task = {
        "system": "You are a customer support agent.",
        "question": "A shipment is three days late. Respond appropriately.",
    }
    report = client.evaluate_with_battery(base_task, my_agent, n_scenarios=18)
    print(report["verdict"], report["aggregate_metrics"])

Evaluation — after the run

Evaluation runs a fault-injection battery against an agent and returns a verdict once it finishes. There are two paths, and they answer different trust questions.

Local (Path B)Verified (Path A)
Who runs the agentYour machineThe platform, calling your endpoint
Your model keysNever leave your machineNot applicable — the platform calls your agent's own API
Tamper resistanceSelf-reported responsesNobody in the middle — the result is verified
CostFreeRequires a paid plan
NeedsA callable agent_runnerA public HTTPS endpoint + explicit consent

Local — evaluate_with_battery

python
report = client.evaluate_with_battery(
    base_task, my_agent, n_scenarios=18,
)

Verified — request_verified_evaluation

python
report = client.request_verified_evaluation(
    agent_url="https://my-agent.example.com/run",
    base_task=base_task,
    consent=True,      # the platform will call this endpoint
    n_scenarios=30,
)

Already have a LangChain, LangGraph or CrewAI agent? Adapters wrap it into the shape both paths expect — see the Evaluate page for framework-specific snippets.

Monitoring — during the run

Evaluation judges a run once it is over. Monitoring watches an agent while it executes, recomputing the metrics after every step, so a collapse is visible at the step it happens rather than in a post-mortem.

Per-step signals are computed locally, in your process — real-time monitoring cannot afford a network call per step, and that is also why basic monitoring is free. Only the session summary, sent in small periodic batches, reaches the platform.

python
with client.monitor(agent_id="my-agent") as m:
    for step in agent.run(task):
        m.record_step(
            action=step.name,
            success=step.ok,
            had_fault=step.fault_injected,
            recovered_intentionally=step.deliberate_recovery,
            traceable=step.has_reasoning,
        )
        if m.should_halt:
            break

print(m.summary)

Sessions and live metrics appear on the Monitoring dashboard as they happen.

Safe Halt — stop the collapse

Detecting a collapse is only half of what a safety mechanism owes you — the other half is stopping before the damage compounds.halt_policyturns a sustained breach into a halt decision.

python
with client.monitor(
    agent_id="my-agent",
    halt_policy={"metric": "frr", "below": 0.5, "for_steps": 3},
) as m:
    for step in agent.run(task):
        m.record_step(...)
        if m.should_halt:
            print(m.halt_reason)
            break

Sustained, not instant

One bad step is noise. A guard that fires on noise gets switched off, so the metric must stay under the floor for several consecutive steps.

Cooperative, not forced

Nothing is killed mid-step — that is how transactions end up half-applied. The session raises should_halt; your loop decides how to stop.

Off unless you ask

No halt_policy means observation only. Stopping an agent without being asked is not a default anyone should inherit.

Observatory — the field, not the lab

Published studies measure agents under controlled conditions. The Observatory publishes aggregate reliability statistics from agents running in actual deployments, so the two can be compared.

Contribution is opt-in, set from Settings, and off by default. Identifiers are dropped before a contribution is written — never stored, not merely hidden — and figures are withheld until at least five independent accounts have contributed.

View live statistics

MCP — ask your assistant

HB-Eval is a remote MCP server. Add one URL to an MCP-capable assistant, sign in once, and ask in plain language — the assistant discovers and calls the tools itself.

Server URL

url
https://hbeval-reliability-os-production.up.railway.app/mcp

Claude

  1. Settings → Connectors → Add custom connector
  2. Paste the server URL
  3. Sign in and approve when prompted

ChatGPT

  1. Settings → Security and login → Developer mode
  2. Add the server URL as a connector
  3. Sign in and approve

Gemini

  1. Available via Gemini Enterprise
  2. Register the URL as a connector (Streamable HTTP)
  3. Complete the OAuth sign-in

What you can ask

list_my_agents"What agents do I have?"
get_reliability_metrics"What does FRR measure?"
get_reliability_trend"Is my agent improving?"
retrieve_qualified_memory"How was this handled before?"
explain_verdict"Why did this verdict come out this way?"
evaluate_agent_reliability"Run a reliability check on my agent." (paid plan)

Only get_reliability_metrics and list_my_agents work with no agent on the account yet — the rest need one created first.

From nothing to a monitored agent

  1. 1

    Register

    Create an account at hbeval.com — free, no card.

  2. 2

    Create an agent

    Dashboard → Agents → New. Copy the API key, AES key and signing secret shown once.

  3. 3

    First evaluation

    Run the Quickstart snippet above with your own agent_runner. You get a verdict and the five metrics.

  4. 4

    First monitored run

    Wrap your agent loop in client.monitor(...). Watch it on the Monitoring dashboard while it runs.

  5. 5

    Optional: Safe Halt

    Add a halt_policy once you know which metric matters most for that agent.

  6. 6

    Optional: Observatory

    Turn on contribution in Settings if you want your (anonymised) results included in the public aggregate.

  7. 7

    Optional: connect MCP

    Add the server URL to Claude, ChatGPT or Gemini and ask about your agents directly.

Which one do I use?

If you want to…Use
Score an agent before shipping itEvaluation (local)
Prove a result to someone elseEvaluation (verified)
Watch reliability while an agent worksMonitoring
Stop a collapsing agent automaticallySafe Halt (on top of Monitoring)
See how the industry comparesObservatory
Do any of this without opening a dashboardMCP