rlsupply · research supply for reinforcement learning integration bench / rev 01 live

bench / 001 ยท rev 01

AI integration benchmark for real API work

Can AI coding agents build integrations that stay correct against a live API? Integration Bench measures whether an agent can make code talk correctly to a live third-party API. Every vendor is generated, so no model has encountered one before.

The public suite comprises 50 Python tasks across 15 fictional vendor systems, spanning build, fix, harden, and migrate work. Each vendor is a stateful API simulator with its own auth, pagination, webhooks, rate limits, injectable faults, and imperfect documentation.

Grading reads vendor-side evidence rather than submitted code. A trusted verifier checks final state and protocol behavior after a fresh vendor stack is started. Forty-six tasks exercise polling, 23 writeback, and 11 webhooks.

Results

Public suite. Characterises the benchmark, not the models.

Model Task Score
  1. 01 anthropic logo Claude Fable 5 67.68 34/50 resolved
  2. 02 openai logo GPT-5.6 Sol 63.62
  3. 03 deepseek logo DeepSeek V4 Pro (max) 63.35
  4. 04 qwen logo Qwen 3.8 2.4T A95B 61.68
  5. 05 grok logo Grok 4.6 61.18
  6. 06 anthropic logo Claude Opus 5 59.32
  7. 07 qwen logo Qwen 3.8 27B (xhigh) 57.73
  8. 08 moonshot logo Kimi K3 57.47
  9. 09 deepseek logo DeepSeek V4 Flash (max) 55.68
  10. 10 anthropic logo Claude Opus 4.8 55.58
  11. 11 anthropic logo Claude Sonnet 5 53.85
  12. 12 openai logo GPT-5.6 Terra 53.79
  13. 13 Muse Spark 1.2 53.70
  14. 14 openai logo GPT-5.6 Luna 51.78
  15. 15 zhipu logo GLM 5.2 (xhigh) 49.68
  16. 16 anthropic logo Claude Haiku 4.5 15.10
  17. gemini logo Gemini 3.7 Flash 35.85 28/50 graded

Sixteen complete model-harness configurations, 50 public tasks, one selected attempt per model-task slot. Mean Task Score among complete rows is 55.07. No complete model resolves more than 34 tasks. Gemini 3.7 Flash is unranked: 22 of 50 attempts failed in provider infrastructure, and 35.85 is the all-slot lower bound.

Incremental candidate sync against a generated vendor

An illustrative task from the public 50. Every vendor in the suite is generated, so the specifics below exist only inside this environment.

Task

task / 0001

Synchronize candidates from StaffLine under HMAC authentication, then capture incremental updates and tombstones. A connector that finishes the initial backfill can still fail if the next poll skips valid changes.

Decisive invariant

  • Watermarks stay in the upstream clock domain.
  • Inclusive replay of the last observed modification timestamp is safe.
  • Tombstones and later updates must land after the first backfill.
View more View less

Your task

Resolve the engineering ticket in PROBLEM.md by producing durable integration software in the starter repository. Gather context from the running vendor services before implementing anything.

The vendor services are mandatory. A solution that never puts signed requests on the wire cannot pass, and the services must be reachable from the connector before work begins.

Ticket: Candidate sync against StaffLine drops changes after the first backfill.

Context gathering strategy

Treat the ticket as the requirement, not the wire contract. The contract lives in the vendor’s served documentation and in the responses the vendor actually returns. Documentation in this suite is truthful, stale, or sparse, so any rule the ticket leaves implicit has to be recovered by reading the docs and observing behavior.

Protocol usage

No MCP servers are exposed in this environment. The vendor APIs are the tools. If a harness does front them with MCP, treat it as another transport and keep the wire contract identical.

  1. Read the service endpoints and synthetic credentials from the environment and from declared inputs.
  2. Fetch each vendor’s participant documentation, served from the same image as the API.
  3. Authenticate every call. Expect static or rotating credentials, OAuth-like token exchange, and HMAC request signatures.
  4. Walk collections with the pagination style the vendor advertises, not an assumed one.
  5. Persist progress in the vendor’s clock domain, from values the vendor returned.
  6. Make writes idempotent, and honor advertised rate limits, retry rules, and optimistic concurrency.
  7. Survive restarts, transient server errors, stale reads, dropped or duplicated events, and cursor or token expiry.
# discover the wire contract
curl -s "$STAFFLINE_URL/_docs/openapi.yaml" -o openapi.yaml

# signed request, then read the vendor's own progress fields
TS=$(date +%s)
SIG=$(printf '%s%s' "$TS" "$REQ_PATH" \
  | openssl dgst -sha256 -hmac "$STAFFLINE_SECRET" -r | cut -d' ' -f1)
curl -s "$STAFFLINE_URL$REQ_PATH" \
  -H "X-Timestamp: $TS" -H "X-Signature: $SIG" -o page.json

jq '{next: .next_cursor, watermark: ([.items[].mod_ts] | max)}' page.json

Available resources

Inside the participant workspace:

  • PROBLEM.md for the ticket.
  • repo/ for the starter repository you edit.
  • materials/ and inputs/ for task-specific documents and seed data.
  • Endpoints, synthetic credentials, and auth details in the environment.
  • Vendor documentation at /_docs/, with OpenAPI at /_docs/openapi.yaml when the vendor publishes it.

Outside it, and unavailable to you: task.yaml, verifier/, authoring/, fixtures, the gold patch, vendor source, and the fault schedule.

Vendor-specific instructions

Only the services in this task’s stack exist. There is no shared world, and no vendor here has a public counterpart to recall.

StaffLine

Candidate system of record. Collection reads, an incremental feed carrying modification timestamps, and tombstones for deletes. HMAC signatures on every request. Documentation at $STAFFLINE_URL/_docs/. Its deterministic clock trails the worker’s wall clock.

Canonical store

The connector’s own durable state, read directly by grading. Records must match StaffLine after the backfill, later updates, and deletions.

Solution requirements

Gather the vendor’s state and behavior first, then implement. The connector must run end to end from a cold start: backfill, persist a watermark, and pick up later changes on the next poll without duplicating or dropping records.

Critical: read the vendor before coding

The ticket is a symptom report, not a full brief. Before writing the fix, establish from the docs and observed responses:

  1. The entrypoint the harness runs, and its runtime contract.
  2. Input sources, output paths, and output schema.
  3. Ports and service configuration.
  4. Pagination, auth, and retry semantics.
  5. Which timestamps are vendor-owned and which are local.
  6. Acceptance behavior across a restart.

Do not guess a requirement the vendor can answer.

Naming rule

Keep the entrypoint the starter repository declares, at the path PROBLEM.md specifies. If neither names one, leave the starter entrypoint in place and make it executable.

Final deliverable

A working connector in the captured workspace. Grading restarts the vendor stack from a checkpoint and runs your artifact against it, so a process you left running, exploration notes, plans, or hand-written output files do not count as completion. Any failed mandatory check gates Task Score to zero.

grading contract
Work type
Incremental polling against a live vendor
Documentation
Sparse. The clock domain is not spelled out as a rule.
Grading
Fresh vendor stack. Trusted verifier reads outputs and vendor-owned logs.
Criterion
  • Artifact, not a live process mandatory

    Grading starts a fresh vendor stack. Work-phase state cannot help the candidate.

  • Final state mandatory

    Canonical candidate records match StaffLine after backfill, later updates, and tombstones.

  • Upstream clock domain mandatory

    The incremental watermark is the largest vendor modification timestamp actually observed, never worker wall time.

  • Protocol conduct mandatory

    Every request carries a valid HMAC signature. Credentials are not leaked into outputs or logs.

  • Inclusive replay partial

    Re-reading the last observed mod_ts boundary is safe and does not duplicate or drop rows.

  • Authored extras partial

    Lower-weight checks can fail after the mandatory gate. Task Score is still non-zero if every mandatory check passes.

Unit tests
  • test_hmac_on_every_request

    Request log contains a valid HMAC for each StaffLine call.

  • test_backfill_completeness

    After the first run, every seeded candidate is present in canonical state.

  • test_watermark_uses_vendor_mod_ts

    Stored watermark stays inside the vendor clock domain (~1.547e12 ms), not time.time().

  • test_incremental_updates_apply

    Two later updates and one new candidate land on the second poll.

  • test_tombstone_deletes

    A deletion that appears only as a tombstone is reflected in canonical state.

  • test_no_skipped_changes_after_backfill

    A future watermark does not exclude valid upstream changes.

  • test_fresh_stack_replay

    The captured workspace still passes when the vendor is restarted from a checkpoint.

  • test_mandatory_gate

    Any failed mandatory check forces Task Score to 0, even if other checks pass.

Environment

The agent gets a running StaffLine service rather than a description of one. The vendor is a real HTTP service holding real state. Its documentation is served from the same image as the API.

staffline

The generated vendor. HMAC auth, a deterministic clock that trails the worker, modification timestamps, and tombstones for deletes.

connector

The starter repository the agent edits. It must backfill, then poll incrementally without duplicating or dropping records.

store

Canonical candidate state after each run. Grading reads this store and the vendor request log.

environment parameters
Auth
HMAC request signatures on every call.
Clock
Vendor mod_ts near 1.547e12 ms. Worker wall clock near 1.787e12 ms.
Incremental
Watermark must be the largest modification timestamp actually observed.
Deletes
Tombstones in the incremental feed. Archived candidates are never dropped silently.

Trajectory

  1. 01 agent
    Completes the initial backfill

    Claude Sonnet 5 signs requests, walks the candidate collection, and writes the first snapshot. The happy path looks finished.

  2. 02 agent
    Binds the watermark to local time

    It stores roughly 1.787e12 ms from time.time() as the vendor watermark, instead of the largest upstream mod_ts it actually observed.

  3. 03 vendor
    Trails the worker clock

    StaffLine data remains near 1.547e12 ms. That future watermark sits ahead of every later update and deletion.

  4. 04 grader
    Incremental poll skips valid changes

    Two updates, one new candidate, and a tombstone never reach canonical state. A mandatory check fails, so Task Score is gated to zero.

result / not solved

Sonnet 5 scores 0.00 on this task. Claude Fable 5 scores 100.00 on the same ticket by advancing progress from the largest modification timestamp actually observed. Both implementations reach the happy path. The split is the source of progress: an integration watermark is vendor state, not worker time.

Coverage

Domains covered.

set / 01

Build 27 tasks

The starter code does not work yet. The agent writes the connector against the vendor's documentation, and finds out the hard way where that documentation is wrong.

grading reads vendor state + request log

Mean Task Score over 16 complete models.

set / 02

Fix 7 tasks

A connector that looks fine ships with planted defects. The agent has to find what is broken and repair it without breaking anything that already worked.

grading reads vendor state

Mean Task Score over 16 complete models.

set / 03

Harden 8 tasks

A connector works on a good day. The agent has to make it survive rate limits, injected faults, forged webhooks, and the retry rules the vendor advertises.

grading reads request log + faults

Mean Task Score over 16 complete models.

set / 04

Migrate 7 tasks

An integration has to move from one vendor to another, matching records across two different schemas without losing or duplicating data.

grading reads record match, two schemas

Mean Task Score over 16 complete models.

50 public tasks, 15 fictional vendor systems, 98 scenarios. Documentation is truthful on 22 tasks, stale on 21, and sparse on 7. One combined build-harden task sits with Build.

Method

How we built it.

01

The vendors do not exist

Every vendor is generated: a working API simulator with its own auth, pagination, and quirks. Because none of them is real, no SDK, tutorial, or forum answer about them can sit in a model's training data. Nothing here can be solved from memory.

02

The documentation lies on purpose

Each vendor ships docs that are wrong in specific, budgeted ways. An implementation written faithfully from bad documentation is competent code that does not work, and only real traffic reveals it. We measure that gap by running an implementation written exactly to the docs.

03

We try to break our own benchmark

Before a task counts, we grade submissions whose right answer we already know: the gold patch has to score 100, and both an untouched starter and a stub that exits cleanly have to score 0. Starting up, writing empty output, or simply avoiding prohibited behavior can never earn credit.

Quality control

How a task earns a score.

validation contract / integration bench 19 aug 2026
validation contract / integration bench
probemethodresult
gold implementationcommitted patch, all 50 tasksscores 100
unmodified starterno edits, all 50 tasksscores 0
clean-exit stubruns, writes nothingscores 0
mandatory gate3,390 mandatory checksone failure scores 0
grading isolationfresh vendor stack per gradework state discarded
run provenancedigest-pinned images, SHA-256 evidence850 of 1,378 selected
50 tasks / 5,430 authored checks / 98 scenarios preprint under review
mean task score by integration surface
57.6 polling
55.16 writeback
20.29 webhooks

Sixteen complete models. Webhook tasks need a long-running receiver, signature verification, ordering, deduplication, and deletion recovery, so they separate models harder than the top of the leaderboard does.

Method notes

Why integration engineering

Integration work is where agent coding claims meet production reality: undocumented API behavior, stateful external systems, and correctness that only shows up when the data actually arrives where it should. Integration Bench evaluates agents against a live, containerized applicant tracking system simulator, not a frozen repository.

Early findings

Claude Fable 5 leads at 67.68 Task Score, with 34 of 50 tasks resolved. GPT-5.6 Sol and DeepSeek V4 Pro follow at 63.62 and 63.35. No complete model resolves more than 68% of the suite.

The larger gap is the work itself. Webhook tasks average 20.29 across complete rows, against 57.60 for polling. Sparse-documentation tasks trail truthful-documentation tasks by 23.64 points. Agents are stronger at conventional data pulls than at keeping an integration coherent across events, faults, and more than one source of truth.

Request supply

Tell us where your model breaks.
We build the environment.