General Agent Evaluation
Organizations: IBM Research · MIT
Abstract
General-purpose agents perform tasks in unfamiliar environments without domain-specific manual customization. Yet no study has systematically measured how agent architecture shapes performance across heterogeneous protocols and diverse unfamiliar environments. This is the first systematic study, comparing tool-calling, MCP, code-generation, and CLI agents on the same benchmarks with the same models. Two gaps blocked such a study: existing harnesses require per-benchmark wiring or fixed protocol classes (web for BrowserGym, CLI for Harbor), and benchmarks themselves expect human-authored prompts, context, and integration glue. To enable this study, we contribute (1) a unifying protocol that bridges existing benchmark and agent protocols; (2) an evaluation harness that surfaces any benchmark to any general-purpose agent and backbone model; and (3) the first Open General Agent Leaderboard of agent configurations, a full factorial over 5 agent architectures x 5 backbone LLMs (three closed-source, two open-weight) x 6 benchmarks spanning software engineering, customer service, deep research, and personal assistance. We find that (i) general agents adapt to every tested domain without per-domain customization; (ii) agent architecture choice swings results by up to 12pp within a single model, yet backbone model choice dominates overall performance; (iii) on 4 of 6 tested benchmarks, top general agents are indistinguishable from the leading heavily-customized domain-specific agents; (iv) open-weight models tested exhibit "generality sinks" absent from frontier closed-source models: they consistently collapse on specific agent architectures or benchmarks; (v) a behavioral failure analysis reveals architecture-distinctive error signatures that aggregate scoring cannot discriminate. Code, harness, leaderboard, and traces are at https://www.exgentic.ai.
Figures & tables
| System | Multi-Protocol Benchmark | Multi-Protocol Agent | Agent Plug-and-Play | General-Purpose Tasks | Systematic Factorial Study |
| agent-eval [ 10 ] | ✓ | ✓ | ✗ | ✗ | |
| HAL [ 19 ] | ✓ | ✓ | ✗ | ✓ | |
| Inspect [ 1 ] | ✓ | ✓ | ✗ | ✓ | ✗ |
| BrowserGym [ 12 ] | ✗ | ✗ | ✓ | ||
| Harbor [ 35 ] | ✗ | ✗ | ✓ | ✗ | |
| AgentBeats | ✗ | ✗ | ✓ | ✓ | ✗ |
| # | Agent | Model | App | BC+ | SWE | T-Air | T-Ret | T-Tel | Avg | Cost |
| 1 | OpenAI Solo | Claude Opus 4.5 | 0.68 | 0.61 | 0.81 | 0.74 | 0.85 | 0.84 | 0.73 | $8.5 |
| 2 | Claude Code | Claude Opus 4.5 | 0.66 | 0.53 | 0.74 | 0.66 | 0.83 | 0.76 | 0.67 | $8.0 |
| 3 | Smolagent | Claude Opus 4.5 | 0.70 | 0.61 | 0.65 | 0.72 | 0.78 | 0.58 | 0.66 | $4.4 |
| 4 | ReAct Short | Gemini 3 | 0.55 | 0.48 | 0.71 | 0.70 | 0.82 | 0.73 | 0.62 | $0.7 |
| 5 | ReAct Short | Claude Opus 4.5 | 0.64 | 0.49 | 0.61 | 0.66 | 0.78 | 0.76 | 0.62 | $3.8 |
| 6 | ReAct | Gemini 3 | 0.50 | 0.48 | 0.71 | 0.70 | 0.82 | 0.73 | 0.61 | $0.8 |
| Benchmark | Best Configuration | General Agent Score | Domain-Specific Agent Score |
| SWE-Bench Verified | OpenAI Solo + Claude Opus 4.5 | 0.81 | 0.79 |
| BrowseComp+ | Smolagent + Claude Opus 4.5 | 0.61 | 0.80 |
| -Bench-Airline | OpenAI Solo + Claude Opus 4.5 | 0.74 | 0.73 |
| -Bench-Retail | OpenAI Solo + Claude Opus 4.5 | 0.85 | 0.86 |
| -Bench-Telecom | Smolagent + Gemini 3 | 0.88 | 0.98 |
| AppWorld | Smolagent + Claude Opus 4.5 | 0.70 | 0.73 |
Appendix figures & tables35 assets
Supplementary material from the paper’s appendix.
Appendix
| System | Multi-Protocol Benchmark | Multi-Protocol Agent | Agent Plug-and-Play | General-Purpose Tasks | Systematic Factorial Study |
| agent-eval [ 10 ] | ✓ (Inspect harness) | ✓ (InspectAI solvers) | ✗ (solver implementation) | ✗ (scientific research only) | (no model axis; sci only) |
| HAL [ 19 ] | ✓ | ✓ | ✗ (per-benchmark adaptation) | ✓ | (architecture per-benchmark wired) |
| Inspect [ 1 ] | ✓ | ✓ | ✗ (per-task solver setup) | ✓ | ✗ (framework only) |
| BrowserGym [ 12 ] | ✗ (web only) | ✗ (custom API) | ✓ | (web-mediated) | (single architecture across LLMs) |
| Harbor [ 35 ] | ✗ (CLI only) | ✗ (CLI only) | ✓ | (CLI-mediated) | ✗ (framework only) |
| AgentBeats | ✗ (A2A+MCP) | ✗ (A2A+MCP) | ✓ | ✓ | ✗ (framework only) |
| Benchmark | Reference impl. | Actions exposed | Task / context fields |
| SWE-Bench Verified | mini-SWE agent | bash , finish | Task: bash-protocol prompt + issue body. Context: empty. |
| AppWorld | native interpreter | one per AppWorld API ( 468); finish | Task: supervisor instruction. Context: policy , supervisor , datetime . |
| BrowseComp+ | authors’ retriever | search , get_document , submit | Task: scoring-rubric prompt + question. Context: empty. |
| -Airline | reference ReAct | message + benchmark tools | Task: “customer service agent” line. Context: policy (airline). |
| -Retail | reference ReAct | message + benchmark tools | As above; policy (retail). |
| -Telecom | reference ReAct | message + benchmark tools | As above; policy (telecom). |
| Benchmark | Reference agent | Source |
| SWE-Bench Verified | mini-SWE agent | github.com/SWE-agent/mini-swe-agent |
| AppWorld | minimal_agent.ipynb (ReAct) | StonyBrookNLP/appworld/notebooks/minimal_agent.ipynb |
| BrowseComp+ | OpenAI search-agent baseline | texttron/BrowseComp-Plus/search_agent/openai_client.py |
| -Bench | LLMAgent (text default) | sierra-research/tau2-bench/src/tau2/agent/llm_agent.py |
| Agent | Version | Source |
| ReAct | exgentic_0.1.0 | first-party (LiteLLM tool-calling) |
| ReAct Short | exgentic_0.1.0 + litellm_1.79.1 | first-party + tool shortlisting |
| Smolagent | smolagents_1.24.0 | HuggingFace smolagents |
| OpenAI Solo | openai_sdk_0.7.0 | openai-agents (Solo + MCP) |
| Claude Code | claude_code_2.1.7 | @anthropic-ai/claude-code (Docker) |
| Agent | Execution Runtime | Tool Shortlisting | Tool Schema Guard | Communication Protocol | Memory | Planning |
| ReAct | ✗ | ✗ | ✗ | Tool-calling | ||
| ReAct Short | ✗ | ✓ | ✗ | Tool-calling | ||
| Smolagent | ✓ | ✗ | ✓ | Python-Functions | ||
| OpenAI Solo | ✗ | ✗ | ✓ | MCP | ||
| Claude Code | ✓ | ✗ | ✓ | MCP | ✓ | ✓ |
| Agent | Model | App | BC+ | SWE | T-Air | T-Ret | T-Tel | Mean |
| Solo | Opus | 0.68 | 0.61 | 0.81 | 0.74 | 0.85 | 0.84 | 0.73 |
| CC | Opus | 0.66 | 0.53 | 0.74 | 0.66 | 0.83 | 0.76 | 0.67 |
| Smol | Opus | 0.70 | 0.61 | 0.65 | 0.72 | 0.78 | 0.58 | 0.66 |
| React+Short | Gemini | 0.55 | 0.48 | 0.71 | 0.70 | 0.82 | 0.73 | 0.62 |
| React+Short | Opus | 0.64 | 0.49 | 0.61 | 0.66 | 0.78 | 0.76 | 0.62 |
| React | Gemini | 0.50 | 0.48 | 0.71 | 0.70 | 0.82 | 0.73 | 0.61 |
| Configuration | Score | Cost/Task | Efficiency |
| ReAct + GPT 5.2 | 0.41 | $0.17 | 2.43 |
| OpenAI Solo + DeepSeek-V3.2 | 0.32 | $0.13 | 2.43 |
| OpenAI Solo + GPT 5.2 | 0.39 | $0.19 | 2.03 |
| ReAct Short + DeepSeek-V3.2 | 0.45 | $0.23 | 1.95 |
| Claude Code + DeepSeek-V3.2 | 0.42 | $0.21 | 1.94 |
| ReAct Short + GPT 5.2 | 0.46 | $0.26 | 1.79 |
| Benchmark | Best Generalist | Gen | Spec | Gap (pp) | HW gen/spec (pp) | Verdict | |
| SWE-Bench Verified | OpenAI Solo+Claude Opus 4.5 | 100 | 0.81 | 0.79 | 7.5 / 8.0 | Indistinguishable | |
| BrowseComp+ | Smolagent+Claude Opus 4.5 | 100 | 0.61 | 0.80 | 9.5 / 8.0 | Specialist leads | |
| -Bench-Airline | OpenAI Solo+Claude Opus 4.5 | 50 | 0.74 | 0.73 | 12.0 / 12.5 | Indistinguishable | |
| -Bench-Retail | OpenAI Solo+Claude Opus 4.5 | 100 | 0.85 | 0.86 | 7.0 / 7.0 | Indistinguishable | |
| -Bench-Telecom | Smolagent+Gemini 3 | 100 | 0.88 | 0.98 | 6.5 / 3.5 | Specialist leads | |
| AppWorld | Smolagent+Claude Opus 4.5 | 100 | 0.70 | 0.73 | 9.0 / 8.5 | Indistinguishable |
| Model | AppWorld (pp) | Aggregate (pp) | Cost /task |
| Claude Opus 4.5 | -\1.97$ | ||
| Gemini 3 | -\0.15$ | ||
| GPT 5.2 | +\0.09$ | ||
| DeepSeek-V3.2 | -\0.15$ | ||
| Kimi-K2.5 | -\0.07$ |
| Benchmark | Claude Code Succ | Claude Code Fail | OpenAI Solo Succ | OpenAI Solo Fail | Smolagent Succ | Smolagent Fail | ReAct Succ | ReAct Fail | ReAct Short Succ | ReAct Short Fail |
| AppWorld | 23.67 | 38.56 | 26.41 | 39.39 | 25.69 | 34.17 | 13.24 | 27.91 | 12.34 | 21.41 |
| BrowseComp+ | 13.90 | 23.64 | 15.23 | 17.96 | 15.89 | 23.83 | 9.28 | 15.53 | 9.28 | 15.53 |
| SWE-Bench Verified | 27.69 | 32.21 | 27.76 | 29.30 | 29.28 | 32.03 | 28.38 | 34.22 | 28.38 | 34.22 |
| airline | 10.43 | 13.02 | 10.19 | 13.65 | 10.39 | 14.06 | 9.31 | 12.18 | 9.31 | 12.18 |
| retail | 11.73 | 11.54 | 11.36 | 9.81 | 11.48 | 11.31 | 10.81 | 11.52 | 10.81 | 11.52 |
| telecom | 12.98 | 12.25 | 13.06 | 13.26 | 11.99 | 12.75 | 13.23 | 15.84 | 13.23 | 15.84 |
| Benchmark | Claude Code | OpenAI Solo | Smolagent | ReAct | ReAct Short |
| AppWorld | 63% | 49% | 33% | 111% | 74% |
| BrowseComp+ | 70% | 18% | 50% | 67% | 67% |
| SWE-Bench Verified | 16% | 6% | 9% | 21% | 21% |
| -Bench-Airline | 25% | 34% | 35% | 31% | 31% |
| -Bench-Retail | -2% | -14% | -2% | 7% | 7% |
| -Bench-Telecom | -6% | 2% | 6% | 20% | 20% |
| Model | Agent | App | BC+ | SWE | T-Air | T-Ret | T-Tel | Bench-wgt |
| Claude Opus 4.5 | ReAct | |||||||
| Claude Opus 4.5 | ReAct Short | |||||||
| Claude Opus 4.5 | Smolagent | |||||||
| Claude Opus 4.5 | OpenAI Solo | |||||||
| Claude Opus 4.5 | Claude Code | |||||||
| Gemini 3 | ReAct |
| Model | Best arch. | Mean | Worst arch. | Mean | (pp) | ||
| Opus | Solo | 0.727 | React | 0.610 | +11.7 | 105 | 0.100 |
| Gemini | React+Short | 0.622 | Smol | 0.557 | +6.6 | 5 | 0.317 |
| GPT | React+Short | 0.463 | Smol | 0.380 | +8.3 | 105 | 0.005 |
| DeepSeek | React | 0.459 | Solo | 0.322 | +13.7 | 550 | 0.001 |
| Kimi | React+Short | 0.428 | Solo | 0.250 | +17.7 | 547 | 0.001 |
| React | React+Short | Smol | Solo | CC | |
| React | — | +0.0 | -20.0 | -7.6 | -20.0 |
| React+Short | 0.001*** | — | +0.0 | -20.0 | -16.7 |
| Smol | 0.317 | 1.000 | — | +0.0 | -16.7 |
| Solo | 0.100 | 0.317 | 0.001*** | — | +0.0 |
| CC | 0.317 | 0.317 | 0.317 | 0.001*** | — |
| React | React+Short | Smol | Solo | CC | |
| React | — | -4.8 | +20.0 | -5.7 | -20.0 |
| React+Short | 0.224 | — | +20.0 | -1.0 | -20.0 |
| Smol | 0.317 | 0.317 | — | +0.0 | -33.3 |
| Solo | 0.256 | 0.836 | 1.000 | — | -40.0 |
| CC | 0.317 | 0.317 | 0.114 | 0.102 | — |
| React | React+Short | Smol | Solo | CC | |
| React | — | -21.0 | -7.6 | +0.0 | -1.9 |
| React+Short | 0.001*** | — | +13.3 | +21.0 | +19.0 |
| Smol | 0.003** | 0.005** | — | +7.6 | +5.7 |
| Solo | 1.000 | 0.001*** | 0.003** | — | -1.9 |
| CC | 0.155 | 0.001*** | 0.031* | 0.155 | — |
| React | React+Short | Smol | Solo | CC | |
| React | — | +0.9 | -0.5 | +36.0 | +7.1 |
| React+Short | 0.025* | — | -1.5 | +35.1 | +6.2 |
| Smol | 0.768 | 0.442 | — | +36.5 | +7.6 |
| Solo | 0.001*** | 0.001*** | 0.001*** | — | -28.9 |
| CC | 0.001*** | 0.003** | 0.001*** | 0.001*** | — |
| React | React+Short | Smol | Solo | CC | |
| React | — | -0.2 | +1.5 | +34.2 | +29.5 |
| React+Short | 0.564 | — | +1.7 | +34.4 | +29.7 |
| Smol | 0.442 | 0.389 | — | +33.0 | +28.2 |
| Solo | 0.001*** | 0.001*** | 0.001*** | — | -4.6 |
| CC | 0.001*** | 0.001*** | 0.001*** | 0.004** | — |
| Component | Axis decomp. (%) | Additive on cells (%) |
| Model | 27.8 | 93.9 |
| Agent | 0.5 | 0.7 |
| Benchmark | 40.7 | – |
| Interaction | – | 5.4 |
| Residual (within-cell + interactions) | 31.0 | – |
| Model / Agent ratio | 57.8 | 128.6 |
| Benchmark | Capability gap (pp) | Arch.-sens. gap (pp) | Sink type |
| AppWorld | Benchmark sink | ||
| SWE-Bench Verified | (none) | ||
| BrowseComp+ | (none) | ||
| -Bench-Airline | Architecture sink | ||
| -Bench-Retail | Architecture sink | ||
| -Bench-Telecom | Architecture sink |
| App | BC+ | SWE | T-Air | T-Ret | T-Tel | |
| App | — | +0.67 | +0.60 | +0.73 | +0.81 | +0.57 |
| BC+ | +0.67 | — | +0.62 | +0.75 | +0.60 | +0.44 |
| SWE | +0.60 | +0.62 | — | +0.69 | +0.73 | +0.80 |
| T-Air | +0.73 | +0.75 | +0.69 | — | +0.73 | +0.56 |
| T-Ret | +0.81 | +0.60 | +0.73 | +0.73 | — | +0.66 |
| T-Tel | +0.57 | +0.44 | +0.80 | +0.56 | +0.66 | — |
| Agent | Model | App | BC+ | SWE | T-Air | T-Ret | T-Tel | Mean |
| React | Opus | 0.61 | 0.49 | 0.61 | 0.66 | 0.78 | 0.76 | 0.610 |
| React+Short | Opus | 0.64 | 0.49 | 0.61 | 0.66 | 0.78 | 0.76 | 0.617 |
| Smol | Opus | 0.70 | 0.61 | 0.65 | 0.72 | 0.78 | 0.58 | 0.663 |
| Solo | Opus | 0.68 | 0.61 | 0.81 | 0.74 | 0.85 | 0.84 | 0.727 |
| CC | Opus | 0.66 | 0.53 | 0.74 | 0.66 | 0.83 | 0.76 | 0.670 |
| React | Gemini | 0.50 | 0.48 | 0.71 | 0.70 | 0.82 | 0.73 | 0.610 |
| Agent | Model | Benchmark | Completed | Planned | #runs |
|---|---|---|---|---|---|
| React | Opus | App | 100 | 100 | 1 |
| React | Opus | BC+ | 0 | 100 | 1 |
| React | Opus | SWE | 99 | 99 | 1 |
| React | Opus | T-Air | 50 | 50 | 1 |
| React | Opus | T-Ret | 100 | 100 | 1 |
| React | Opus | T-Tel | 100 | 100 | 1 |
| Parameter | Value |
| LLMs | GPT 5.2, Claude Opus 4.5, Gemini 3 Pro, DeepSeek-V3.2, Kimi-K2.5 |
| LLM sampling | Provider API defaults (temperature, top- ) |
| Reasoning mode | Provider default for each model (not manually toggled) |
| Max turns per task | 100 |
| Agent architectures | ReAct, ReAct Short, Smolagent, OpenAI Solo, Claude Code |
| Benchmarks | AppWorld, BrowseComp+, SWE-Bench Verified, -Bench (3 subdomains) |
| Model | Endpoint | temp. | top- | top- | thinking |
| Claude Opus 4.5 | AWS Bedrock | undisclosed | undisclosed | off | |
| GPT 5.2 | Azure OpenAI | unsupported | unsupported | unsupported | off |
| Gemini 3 Pro | GCP Vertex AI | high | |||
| DeepSeek-V3.2 | Azure / Foundry | unsupported | enabled | ||
| Kimi-K2.5 | Azure / Foundry | unsupported | enabled |
| Script | Reproduces | Invocation |
| audit_failure_steps.py | § 4.9 , App. F | python3 tools/audit_failure_steps.py |
| audit_variance.py | § 4.3 , Tab. 22 | python3 tools/audit_variance.py |
| audit_within_model_spread.py | § 4.4 , Tab. 16 | python3 tools/audit_within_model_spread.py |
| audit_pairwise_significance.py | App. F : pairwise tables | python3 tools/audit_pairwise_significance.py |
| audit_spearman.py | § 4.7 , Tab. 23 | python3 tools/audit_spearman.py |
| audit_shortlisting.py | § 4.4 : shortlisting deltas | python3 tools/audit_shortlisting.py |
| # | Category | n | % |
| 1 | Premature Termination | 232 | 8.1 |
| 2 | Evidence Retrieval Omission | 211 | 7.4 |
| 3 | Search Recovery & Adaptation | 183 | 6.4 |
| 4 | Unsupported Fabrication | 167 | 5.8 |
| 5 | Tool Invocation Error | 167 | 5.8 |
| 6 | Constraint Interpretation Error | 157 | 5.5 |
| Category | Definition |
|---|---|
| Action Execution Error | Agent has authorization and correct intent but carries out required mutations, payments, bookings, patches, cleanup, batching, or edits incorrectly or incompletely. |
| Authentication Handling Error | Agent omits, misreads, invents, corrupts, extracts incorrectly, or misuses credentials, tokens, login state, authentication order, or authenticated context. |
| Candidate Verification Failure | Agent commits to or rejects a candidate without checking discriminating constraints, alternatives, contradictions, disqualifiers, or uncertainty against available evidence. |
| Confirmation Handling Error | Agent omits, mistimes, misreads, repeats, or malforms required consent, clarification, preference check, disclosure, approval, or post-action confirmation communication. |
| Constraint Interpretation Error | Agent misreads explicit user or task constraints, including scope, dates, filters, preferences, privacy requirements, answer form, variants, or replacement boundaries. |
| Coverage Enumeration Omission | Agent fails to exhaust required pages, lists, histories, variants, batches, statuses, transactions, recommendations, options, contacts, or libraries for complete coverage. |