contributions to the tools AI runs on
Open Source
AIRANKS is proud to give back to the open source projects it depends on. Measuring AI is not the only work AIRANKS does. Founder Jeremy Schoemaker works hands-on inside the same tooling that frontier labs and standards bodies ship: the Model Context Protocol SDK, the OpenAI Agents SDK, Claude Code's GitHub Action, and the CLIs and MCP servers Mozilla AI, Mozilla, and MiniMax maintain, and sends fixes back upstream when something is broken. Every pull request below merged to the project's main branch; each one links straight to it.
Nothing below is inferred. Every count on this page is computed from the list of pull requests it renders; the sample is the page.
The same care is how we measure you: every AIR ranking is a 1,000-resample bootstrap with a visible confidence interval, not a confident single number. Run your free report to see yours -

SOLDER MAP — ONE BUS, ONE TRACE PER ORG · NO IMPLIED PARTNERSHIP BETWEEN ORGS
the ledger, computed from the list below
- merged pull requests
- 16
- organisations
- 7
- repositories
- 9
Provenance: PR merge dates 2026-08-03 → 2026-08-24, verified via gh api repos/{owner}/{repo}/pulls/{n} against the live GitHub API on 2026-08-24; every PR above links to its merged commit. Full source in resources/js/data/contributions.js and loop-5 HAR at council_meetings/free-air-report-loop5-20260824-1236/verdict.html.
Each mark below identifies the organisation whose repository received a merged pull request; it is not a claim of sponsorship, partnership, or endorsement.
OpenAI
Headline merge1 PR- fix(core): max_turns no longer clobbers a tripped input guardrail exception in streaming#4606 · 2026-08-23
A tripped input guardrail is a safety stop. When a streamed run also hit its max_turns limit, the max_turns error overwrote the guardrail exception, so the caller saw a generic limit message instead of the safety trip that had actually fired.
Model Context Protocol
2 PRs- fix(sse): loop instead of recursing when skipping SSE events#1146 · 2026-08-07
The SSE event loop skipped filtered events by recursing instead of looping. A long enough run of skips could overflow the stack and abort the client process outright.
- fix(auth): map 401/403 challenges on the SSE GET stream#1152 · 2026-08-07
The standalone SSE stream handled a 405 response but not a 401/403 carrying a WWW-Authenticate challenge, so an expired token there was never routed to the client's refresh-and-retry logic; the stream just failed. Mapped it the same way the sibling code path already did.
Anthropic
1 PR- docs: fix broken Bedrock anchor in cloud-providers.md#1579 · 2026-08-07
The Bedrock section link in the docs pointed at an anchor that no longer exists, dropping readers at the top of a long page instead of the section they wanted. Repointed it at the anchor the page actually uses.
Mozilla AI
8 PRs- docs: update stale MCP spec references to 2025-11-25#277 · 2026-08-04
Four references to the MCP specification were pinned to a version whose #meta anchor no longer exists. Updated all four to the specification revision the project's own dependency actually implements.
Documented the previously-unwritten plugin directory config field, the Docker bind-mount pattern for running plugins in a container, and the musl/glibc architecture mismatches behind a confusing "exec format error."
- docs: add a Writing a Plugin guide#281 · 2026-08-07
Added a Writing a Plugin guide covering the SDKs, the startup handshake, version pinning, and the health/shutdown sequence: the missing step between "how to configure a plugin" and "how to build one."
- fix(cmd): accept bare seconds, reject negatives, and wire --timeout-mcp-shutdown for daemon timeouts#284 · 2026-08-12
One of five daemon timeout flags accepted a bare number as seconds while the other four rejected it, despite help text implying otherwise. Normalized all five and fixed the misleading help strings.
- refactor(runtime): return valueArgTransformation by value#282 · 2026-08-13
A struct was passed around as a pointer that nothing nil-checked, mutated, or let escape the package; pure indirection. Changed it to a plain value.
Converting a tool schema silently dropped $defs and additionalProperties, which broke any $ref pointing into $defs and advertised a restrictive schema as permissive to every client behind the daemon. Both fields are now carried through.
Moving a plugin didn't reject mutually-exclusive positioning flags, and a category move that succeeded before a failing positional step left the plugin stranded with no rollback. Added validation and a rollback path.
- fix(gmail): restore base64url padding before decoding message bodies#200 · 2026-08-07
Gmail's API returns message bodies as base64url that commonly omits its trailing padding, which the decoder rejected silently, inside a caught exception, turning a readable email into placeholder text on roughly two-thirds of message lengths. Restored the padding before decoding, in one shared helper used everywhere the module decodes this format.
Mozilla
1 PRThe server advertised a resources capability it never implemented, so a client that tried to read a resource received a generic "internal error" instead of "method not found." Removed the false capability declaration and the two dead stub handlers.
MiniMax
2 PRsCommands registered under a second alias path were exported twice by the tool-schema generator, producing 19 tool schemas with only 17 distinct names: a shape both the Anthropic and OpenAI tool APIs reject outright. Deduplicated by command identity instead of by path.
- fix(retry): let streaming requests reach the retry loop#47 · 2026-08-10
Streaming requests converted a failure into a normal return value instead of raising it, so the retry loop never saw the failure and gave up after one attempt; while non-streaming requests on the same provider retried up to ten times. That made a flaky provider score a better success rate under streaming than without it. Re-raised the failure so both modes retry the same way.
TanStack
1 PR- fix(gemini): duplicate tool call events on UNEXPECTED_TOOL_CALL finish crash the chat run#1216 · 2026-08-24
A final Gemini chunk carrying both functionCall parts and finishReason UNEXPECTED_TOOL_CALL re-emitted the same tool calls, duplicating TOOL_CALL_START/END events and aborting the run with a duplicate-interrupt error. The redundant branch was a strict subset of the per-part loop already handling the chunk.