Monitoring

List findings

See the rules your agents didn’t meet.

POSThttps://api.ollive.ai/api/findings/query/v1
Safe to retryPagedv1

How it works

A finding is one agent not meeting one rule. If an agent misses the same rule in 10 runs, that is one finding with run_count: 10.

Use group_by to choose how much detail you get:

  • rule (the default): one row for each rule an agent didn’t meet, with how many runs missed it and when it was first and last seen.
  • pattern: for one finding, groups the runs that missed the rule in the same way. Needs agent_id and rule_id.
  • run: for one finding, one row per run. Needs agent_id and rule_id.

To dig into a row, send its agent_id and rule_id back with the next group_by.

Authorization

  • Authorizationheaderrequired

    Your API key, after the word Bearer, like this: Bearer ollive_sk_…. Create a key.

Request body

application/json

  • group_bystringdefault rule

    How much detail to return. See above.

    rulepatternrun
  • agent_idstring

    Only this agent. Required for pattern and run.

  • rule_idstring

    The rule. Required for pattern and run.

  • rule_set_idstring (uuid)

    Only rules from this rule set.

  • pattern_idstring

    With run: only runs in this pattern.

  • severitiesstring[]

    With rule: only these severities.

    criticalhighmediumlow
  • sincestringdefault 30d

    How far back to look, such as 30m, 12h, 7d, or all for everything.

  • limitinteger

    How many rows per page. With rule, the default is 10 and the most is 200. With pattern, 10 and 50. With run, 25 and 100.

  • cursorstring

    The next_cursor from the previous page.

  • sourcestringdefault platform

    Which runs to include: platform for ones Ollive collected, api or mcp for ones you sent.

    platformapimcp

Every field is optional unless group_by needs it. Send {} for all findings in the last 30 days.

Response

The findings. An empty list if there are none.

  • dataobject[]required

    One row per finding, pattern or run, depending on group_by.

    • agent_idstring (uuid)required

      The agent that didn’t meet the rule.

    • rule_idstringrequired

      The rule.

    • rule_set_idstringrequired

      The rule set it belongs to.

    • severitystringrequired

      How serious it is.

      criticalhighmediumlow
    • run_countintegerrequired

      How many runs missed the rule.

    • rule_set_namestring

      The rule set’s name. rule rows only.

    • source_typestring

      Where the rule comes from. rule rows only.

      regulationframeworkcontract
    • titlestring

      A short name for the finding. rule rows only.

    • descriptionstring

      A longer explanation. rule rows only.

    • rule_textstring

      The rule, in words. rule rows only.

    • finding_textstring

      What the agent did instead. rule rows only.

    • citationsstring[]required

      References to the source, such as a section number. rule rows only.

    • first_seen_atstring (date-time)

      When it first happened. rule rows only.

    • last_seen_atstring (date-time)

      When it last happened. rule rows only.

    • pattern_idstringrequired

      The pattern’s ID. Set on pattern and run rows.

    • checksobject[]required

      What the runs in this pattern have in common. pattern rows only.

      • questionstringrequired

        The question Ollive answered.

      • answerstringrequired

        The answer.

        truefalseunknown
    • runobject

      The run. run rows only.

      • run_idstringrequired

        Your ID for the run.

      • occurred_atstring (date-time)

        When it happened.

      • duration_msinteger

        How long it lasted, in milliseconds.

      • flagged_stepsobject[]required

        Where in the run the rule wasn’t met.

        • reasonstringrequired

          Why it was flagged.

        • turn_indicesinteger[]required

          The turns involved.

      • flagged_turn_indicesinteger[]required

        Every turn that was flagged.

  • total_countintegerrequired

    How many results match, across all pages.

  • has_morebooleanrequired

    Whether there is another page.

  • next_cursorstringrequired

    Send this as cursor to get the next page. Empty on the last page.

← Get a transcriptList results →