Hosted appAPI marketplaceArc Testnetsucceeded

API payment layer for agents on Arc. $0.001 USDC per request, with charge mode for one-off calls and session mode for repeated usage.

Tested in place byDeepQA TeamonArc Testnetatarcport.xyz/onSep 17, 2026

Run #1model gemini-balanced (vertex)took 12m

9 of 12 scenarios passed, 2 failed, 1 blocked, 3 issues after the audit, 1 high.

Share on X
ArcPort in the browser during the run

By the numbers

9 of 12
scenarios passed, 2 failed, 1 blocked
232
browser actions
42
screenshots
219
model calls
13
minutes
12
scenarios
9
passed
2
failed
1
blocked
3
issues
high1medium1low1

Walkthrough

Every scenario DeepQA drove in the browser, in plan order, with the 36 screenshots it captured along the way. A passing scenario is evidence too.

  1. S1
    Create EOA wallet identity

    3 steps, 2 screenshots

    pass
    S1-1.png
    S1 · Create EOA wallet identity
    S1-4.png
    S1 · Create EOA wallet identity
    • Loaded the wallet selection page with options for EOA Wallet and Circle Wallet V2.
    • Clicked EOA Wallet creation button, which generated and displayed the Arc address (0x3D4d...), Identity key (awi_1fa2...), and onchain balance (0.000 USDC).
    • Successfully generated an EOA operator wallet on Arc Testnet.
    • Verified display of Arc address (0x3D4dD81da0A80C6CD5027af170E168246C1b663f), Identity key (awi_1fa2cb9efcb256be26ba90b28e609c28ecae), Wallet ID, Legacy agent key, and USDC Balance (0.000 USDC).
  2. S2
    Create Circle Wallet V2 identity

    3 steps, 3 screenshots

    pass
    S2-1.png
    S2 · Create Circle Wallet V2 identity
    S2-3.png
    S2 · Create Circle Wallet V2 identity
    S2-6.png
    S2 · Create Circle Wallet V2 identity
    • Reset local wallet to view wallet creation options, including Circle Wallet V2.
    • Clicked 'Circle Wallet V2 identity + X-Payment' button and verified that Circle Wallet V2 credentials (wallet ID, identity key, Arc address, Circle Wallet ID) were successfully created and displayed.
    • Navigated to the Wallet view on ArcPort.
    • Reset local wallet to access the wallet path selection options.
    • Selected 'Circle Wallet V2 identity + X-Payment' button.
    • Circle Wallet V2 identity was successfully generated and credentials (identity key, wallet ID, Arc address, Circle Wallet ID) were rendered correctly.
  3. S3
    Reset local wallet persistence

    4 steps, 4 screenshots

    pass
    S3-1.png
    S3 · Reset local wallet persistence
    S3-3.png
    S3 · Reset local wallet persistence
    S3-6.png
    S3 · Reset local wallet persistence
    S3-8.png
    S3 · Reset local wallet persistence
    • Navigated to the Wallet view where existing wallet credentials and the Reset local wallet button are visible.
    • Clicked Reset local wallet; the wallet reset message appeared and wallet credentials disappeared from view.
    • Created an EOA wallet, generating new wallet credentials and displaying the Reset local wallet button.
    • Clicked Reset local wallet; the wallet credentials disappeared from view and the wallet creation options reappeared.
    • Navigated to the Wallet view where operator wallet credentials were displayed.
    • Clicked 'Reset local wallet' and confirmed that the credentials were removed from the view.
    • Created an EOA wallet to test the full lifecycle, verified credentials displayed, and clicked 'Reset local wallet' again.
    • Observed that wallet credentials immediately disappeared from view and the wallet path creation options were restored.
  4. S4
    Execute API call in Charge mode

    6 steps, 3 screenshots

    blocked
    S4-2.png
    S4 · Execute API call in Charge mode
    S4-9.png
    S4 · Execute API call in Charge mode
    S4-12.png
    S4 · Execute API call in Charge mode
    • Navigated to Playground and selected weather-1 API.
    • Switched payment mode to Charge mode and entered parameter `{"city": "Tokyo"}`.
    • Clicked 'Sign X-Payment & Call API', triggering the payment handshake.
    • Observed x402 seller requirements loaded (402 response), followed by balance validation warning 'Gateway balance below $0.001' and clear user error prompt 'Deposit USDC into Gateway in Wallet before calling the API'.
  5. S5
    Execute API call in Session mode

    6 steps, 3 screenshots

    fail
    S5-1.png
    S5 · Execute API call in Session mode
    S5-3.png
    S5 · Execute API call in Session mode
    S5-10.png
    S5 · Execute API call in Session mode
    • Loaded arcport.xyz wallet dashboard and captured initial view.
    • Navigated to https://arcport.xyz/ and opened the Playground tab.
    • Selected an API from the dropdown and switched Payment mode to Session mode.
    • Entered endpoint parameters into the Parameters (JSON) field.
    • Attempted to initialize the session by clicking 'Open 10-call session' and 'Open 10-call session onchain'.
    • Session remained uninitialized at 'No session yet' / 'Waiting for calls…' and no API response or session state update occurred.
  6. S6
    Create onchain USDC webhook subscription

    6 steps, 4 screenshots

    pass
    S6-1.png
    S6 · Create onchain USDC webhook subscription
    S6-3.png
    S6 · Create onchain USDC webhook subscription
    S6-8.png
    S6 · Create onchain USDC webhook subscription
    S6-11.png
    S6 · Create onchain USDC webhook subscription
    • Navigated to the Webhooks page.
    • Created webhook subscription for transfer.in watching address 0xdad302Af4B9a03D27b75C05810F0631899985094 and target https://example.com/webhook, verified it appears as Active under Subscriptions.
    • Successfully navigated to Webhooks section, entered valid Arc address 0xdad302Af4B9a03D27b75C05810F0631899985094 and target URL https://example.com/webhook, selected transfer.in event, and submitted the form.
    • UI showed '✓ Webhook created' notification and the new subscription was immediately displayed with ACTIVE status, event transfer.in, watched address, target URL, 'Copy secret', and 'Delete' actions.
  7. S7
    Playground requires API selection

    4 steps, 3 screenshots

    pass
    S7-1.png
    S7 · Playground requires API selection
    S7-3.png
    S7 · Playground requires API selection
    S7-9.png
    S7 · Playground requires API selection
    • Landed on arcport.xyz wallet page and preparing to navigate to Playground.
    • The Playground API selector dropdown is pre-populated with valid API choices and defaults to a valid API ('social-signal-1'), preventing submission of an undefined or blank API endpoint.
    • Navigated to the Playground section on https://arcport.xyz/.
    • Observed that the API selector dropdown is populated with valid predefined API endpoints and defaults to 'social-signal-1'.
    • Observed that the endpoint input is read-only and directly bound to the valid API dropdown selection, preventing blank or undefined API submissions.
    • Confirmed that the application does not submit requests to undefined endpoints.
  8. S8
    Webhook requires target address

    5 steps, 2 screenshots

    pass
    S8-2.png
    S8 · Webhook requires target address
    S8-8.png
    S8 · Webhook requires target address
    • Navigated to Webhooks tab and viewed the New subscription form.
    • Attempted to create webhook with empty Arc address; validation error '! Enter an Arc address' was displayed and subscription was blocked.
    • Leaving the Arc address field empty and attempting to create a webhook displayed the validation notification '! Enter an Arc address'.
    • No webhook subscription was created, keeping the subscription count at 0 / 10.
  9. S9
    Webhook requires destination URL

    5 steps, 3 screenshots

    fail
    S9-1.png
    S9 · Webhook requires destination URL
    S9-3.png
    S9 · Webhook requires destination URL
    S9-7.png
    S9 · Webhook requires destination URL
    • Filled Arc address and clicked 'Create webhook' with an empty URL; no validation message was displayed on the UI and the form did not create a subscription or show feedback.
    • Navigated to the Webhooks section at https://arcport.xyz/.
    • Entered a valid Arc address ('0xdad302Af4B9a03D27b75C05810F0631899985094') into 'Arc address to watch' and left 'Your webhook URL' empty.
    • Clicked 'Create webhook' button.
    • Observed no validation error message or user feedback on the URL field, and the webhook creation failed silently without informing the user.
  10. S10
    Load valid channel session proof

    4 steps, 3 screenshots

    pass
    S10-1.png
    S10 · Load valid channel session proof
    S10-3.png
    S10 · Load valid channel session proof
    S10-6.png
    S10 · Load valid channel session proof
    • Navigated to Proof Mode page displaying the External Agent Proof section with channel id input and Load proof button.
    • Entered mock valid hex channel ID into the channel ID field.
    • Navigated to Proof Mode page and confirmed the External agent proof loader form is rendered.
    • Entered a mock valid hex channel ID into the channel ID input field.
    • Submitted the form via the 'Load proof' button.
    • The application performed the lookup smoothly, displaying a loading state and handling the lookup without crashing or breaking the UI state.
  11. S11
    Verify SPA navigation and balance refresh

    5 steps, 4 screenshots

    pass
    S11-1.png
    S11 · Verify SPA navigation and balance refresh
    S11-3.png
    S11 · Verify SPA navigation and balance refresh
    S11-5.png
    S11 · Verify SPA navigation and balance refresh
    S11-7.png
    S11 · Verify SPA navigation and balance refresh
    • Navigated to Marketplace view and observed API catalog with 8 APIs and category filters rendering correctly.
    • Navigated to My APIs view and verified registration buttons and empty state render properly.
    • Navigated back to Wallet view and verified credentials and onchain balance controls are visible.
    • Clicked 'Refresh onchain balance' button; request triggered without errors or exceptions, view stayed intact and displayed USDC balance 0.000.
    • SPA navigation between Marketplace, My APIs, and Wallet views transitions seamlessly without rendering errors or view hanging.
    • Clicking 'Refresh onchain balance' on the Wallet view executes cleanly without throwing exceptions.
  12. S12
    Proof loader requires channel ID

    4 steps, 2 screenshots

    pass
    S12-2.png
    S12 · Proof loader requires channel ID
    S12-5.png
    S12 · Proof loader requires channel ID
    • Navigated to Proof Mode page where the '0x... channel id' input is empty.
    • Navigated to Proof Mode at https://arcport.xyz/.
    • Observed the 'External Agent Proof' section containing the '0x... channel id' textbox and 'Load proof' button.
    • Left the channel id textbox empty and clicked the 'Load proof' button.
    • Observed that the form did not trigger any API request, did not enter loading state, and safely prevented submission with an empty channel ID.

Issues

Findings that survived the Critic's audit. Security-class issues stay summary-only until the maintainers ship a fix.

highconfirmed ✓functionalF1 · S5

Session mode fails to initialize and does not execute API requests in Playground

The evidence describes a silent failure where clicking the session initialization buttons produces no UI feedback, state update, or session response. The live replay was inconclusive: The replay ran out of tool calls before it reached the reported state.

Expected

Session initializes, updates session state, executes the signed API call offchain/onchain, and renders JSON response data.

Actual

Clicking session open buttons produces no session initialization, no API response is returned, and status remains 'No session yet' with no inline feedback.

Repro · 6 steps
  1. Navigate to https://arcport.xyz/
  2. Click the 'Playground' button in navigation
  3. Select an API from the API selector dropdown (e.g. joke-1)
  4. Click 'Session mode'
  5. Fill in Parameters (JSON) field with valid JSON test data
  6. Click 'Open 10-call session' or 'Open 10-call session onchain'
mediumconfirmed ✓functionalF2 · S9

Webhook creation fails silently with no validation error when URL is empty

The evidence confirms the application fails silently without providing a validation message when the required webhook destination URL is omitted.

Expected

A clear validation error should be displayed indicating that the webhook destination URL is required.

Actual

No validation message or error state is displayed to the user; clicking the button does nothing and fails silently.

Repro · 5 steps
  1. Navigate to https://arcport.xyz/
  2. Click on the 'Webhooks' navigation button
  3. Type a valid Arc address (e.g. '0xdad302Af4B9a03D27b75C05810F0631899985094') into the 'Arc address to watch' input
  4. Leave the 'Your webhook URL' field empty
  5. Click the 'Create webhook' button
lowpromoted ↑functionalF3 · S12

Empty channel ID submission triggers API request returning 404

Surfaced by the audit of S12, which the Tester passed, and reproduced live: Navigated to Proof Mode and clicked the 'Load proof' button while the channel ID textbox was empty. No client-side validation prevented the action, and the UI failed silently without providing validation feedback, which aligns with the report of it triggering an invalid background API request. The page reported 1 console error during the scenario.

Expected

The form should validate the input client-side and prevent submission without triggering a network request.

Actual

An API request was triggered, resulting in a 404 console error.

Repro · 3 steps
  1. Navigate to Proof Mode at https://arcport.xyz/
  2. Leave the channel id textbox empty
  3. Click the 'Load proof' button

Wallet activity

DeepQA injected a test wallet into the browser and recorded every request the app sent to it. Testnet funds only.

address
0x649657…9255E7
chain
Arc Testnet
browsers opened
3
read requests forwarded
0
signing requests
0

Critic audit

An adversarial second pass over every finding before it reaches the report.

2
findings reviewed
3
re-verified live
0
withdrawn
  • F1confirmed ✓

    The evidence describes a silent failure where clicking the session initialization buttons produces no UI feedback, state update, or session response. The live replay was inconclusive: The replay ran out of tool calls before it reached the reported state.

  • F2confirmed ✓

    The evidence confirms the application fails silently without providing a validation message when the required webhook destination URL is omitted.

  • F3promoted ↑

    Surfaced by the audit of S12, which the Tester passed, and reproduced live: Navigated to Proof Mode and clicked the 'Load proof' button while the channel ID textbox was empty. No client-side validation prevented the action, and the UI failed silently without providing validation feedback, which aligns with the report of it triggering an invalid background API request.

  • Scenario S12 claims no API request was triggered for an empty channel ID, but a 404 console error directly contradicts this.
  • Scenario S7 logged 402 and 400 console errors despite the tester only observing the UI, indicating failing background requests or state leakage.
  • A possible defect in S7 ("Playground view triggers unprompted 402 and 400 console errors") was not promoted: the live replay came back not-reproduced.

Report

QA report: external/arcport.xyz at hosted

Session mode fails to initialize API calls in the Playground, accompanied by validation and error-handling defects in webhooks and channel lookups.

Testing covered 12 scenarios evaluating EOA and Circle Wallet V2 identity creation, wallet persistence resets, API playground modes, webhook creation, channel proof loading, and single-page navigation. Live execution of charge-mode API calls was blocked because the testnet wallet lacked the required USDC balance for settlement.

A significant functional failure occurred in the Playground, where session mode fails to initialize and does not execute API requests, providing no inline feedback. Additionally, input validation is incomplete: submitting an empty webhook destination URL fails silently without showing an error, and submitting an empty channel ID triggers an unnecessary API request that returns a 404 error.

While wallet provisioning, valid webhook setup, and session proof loading operate as expected, the playground session breakdown blocks primary evaluation workflows, and the silent validation failures degrade the onboarding and configuration experience.

Run summary
MetricCount
Scenarios executed12
Passed9
Failed2
Blocked1
Findings raised2
Issues after the audit3
Withdrawn by the audit0
Critical / high / medium / low0 / 1 / 1 / 1

Target: https://arcport.xyz/ · Testing level: deep_feature · Stack: unknown

Issues
High severity
F1 · Session mode fails to initialize and does not execute API requests in Playground

Severity: high · Type: functional · Verdict: confirmed · Scenario: S5

The evidence describes a silent failure where clicking the session initialization buttons produces no UI feedback, state update, or session response. The live replay was inconclusive: The replay ran out of tool calls before it reached the reported state.

Expected: Session initializes, updates session state, executes the signed API call offchain/onchain, and renders JSON response data.

Actual: Clicking session open buttons produces no session initialization, no API response is returned, and status remains 'No session yet' with no inline feedback.

Steps to reproduce:

  1. Navigate to https://arcport.xyz/
  2. Click the 'Playground' button in navigation
  3. Select an API from the API selector dropdown (e.g. joke-1)
  4. Click 'Session mode'
  5. Fill in Parameters (JSON) field with valid JSON test data
  6. Click 'Open 10-call session' or 'Open 10-call session onchain'

Evidence: screenshots/S5-1.png, screenshots/S5-3.png, screenshots/S5-10.png

Medium severity
F2 · Webhook creation fails silently with no validation error when URL is empty

Severity: medium · Type: functional · Verdict: confirmed · Scenario: S9

The evidence confirms the application fails silently without providing a validation message when the required webhook destination URL is omitted.

Expected: A clear validation error should be displayed indicating that the webhook destination URL is required.

Actual: No validation message or error state is displayed to the user; clicking the button does nothing and fails silently.

Steps to reproduce:

  1. Navigate to https://arcport.xyz/
  2. Click on the 'Webhooks' navigation button
  3. Type a valid Arc address (e.g. '0xdad302Af4B9a03D27b75C05810F0631899985094') into the 'Arc address to watch' input
  4. Leave the 'Your webhook URL' field empty
  5. Click the 'Create webhook' button

Evidence: screenshots/S9-7.png

Low severity
F3 · Empty channel ID submission triggers API request returning 404

Severity: low · Type: functional · Verdict: promoted · Scenario: S12

Surfaced by the audit of S12, which the Tester passed, and reproduced live: Navigated to Proof Mode and clicked the 'Load proof' button while the channel ID textbox was empty. No client-side validation prevented the action, and the UI failed silently without providing validation feedback, which aligns with the report of it triggering an invalid background API request. The page reported 1 console error during the scenario.

Expected: The form should validate the input client-side and prevent submission without triggering a network request.

Actual: An API request was triggered, resulting in a 404 console error.

Steps to reproduce:

  1. Navigate to Proof Mode at https://arcport.xyz/
  2. Leave the channel id textbox empty
  3. Click the 'Load proof' button

Evidence: screenshots/critic-M2-1.png

Scenario results
ScenarioPriorityResultIssues
S1 Create EOA wallet identityhighpassnone
S2 Create Circle Wallet V2 identityhighpassnone
S3 Reset local wallet persistencehighpassnone
S4 Execute API call in Charge modehighblocked (Charge-mode API calls require onchain/Gateway USDC balance on Arc Testnet; the wallet has 0.000 USDC so live settlement cannot complete without external funding.)none
S5 Execute API call in Session modehighfailF1
S6 Create onchain USDC webhook subscriptionhighpassnone
S7 Playground requires API selectionmediumpassnone
S8 Webhook requires target addressmediumpassnone
S9 Webhook requires destination URLmediumfailF2
S10 Load valid channel session proofmediumpassnone
S11 Verify SPA navigation and balance refreshmediumpassnone
S12 Proof loader requires channel IDlowpassF3
The audit

The Critic reviewed 2 findings and re-verified 3 of them live in the browser, replaying the reported steps on a fresh page.

  • Scenario S12 claims no API request was triggered for an empty channel ID, but a 404 console error directly contradicts this.
  • Scenario S7 logged 402 and 400 console errors despite the tester only observing the UI, indicating failing background requests or state leakage.
  • A possible defect in S7 ("Playground view triggers unprompted 402 and 400 console errors") was not promoted: the live replay came back not-reproduced.
What to fix first
  1. Restore session initialization and API execution in the Playground, ensuring clear status feedback is displayed (F1).
  2. Display an inline validation error when a user attempts to create a webhook without providing a destination URL (F2).
  3. Prevent proof loader submissions with empty channel IDs from making failing API requests (F3).
Coverage and caveats

In scope: Operator wallet identity creation (EOA and Circle V2); API Playground with Charge and Session payment modes; Onchain USDC webhook registrations; Session proof verification and loading; Form validations for empty required states.

Not covered: Faucet or LI.FI funding (requires interacting with external unmapped systems).

  • The injected test wallet will automatically connect and sign transactions required for the Playground and Webhooks without manual UI interaction.
  • A valid '0x... channel id' will be generated by a Session mode call that can be used in the Proof Mode scenario, or the app accepts a mock ID for testing UI state.
  • S4 could not be executed: Charge-mode API calls require onchain/Gateway USDC balance on Arc Testnet; the wallet has 0.000 USDC so live settlement cannot complete without external funding..
By the numbers
MetricValue
Scenarios9 passed, 2 failed, 1 blocked of 12 (55 planned steps)
Browser actions232 (71 clicks, 23 inputs, 19 navigations, 119 snapshots)
Screenshots42 (4 explore, 36 scenario, 2 critic), 36 captioned
Coverage1 pages, 3 forms, 3 flows, 0 console errors
Audit2 findings, 3 re-verified live, 2 confirmed, 1 promoted, 0 withdrawn
Model calls219
Tokens1,104,464 input, 10,343 output, 23,738 thinking
Time13 min
Wallet0 transactions, 0 signatures, 0 refusals on chain 5042002
StageCallsInputOutputThinkingSeconds
explore34178,0771,8691,838146
plan13,3752,1003,23641
test161834,7495,04010,121443
critique2286,5701,0357,768110
report11,69329977510

Run log

stagecallstokenstime
Explore34181.8k2m 26s
Plan18.7k41s
Test161849.9k7m 23s
Critique2295.4k1m 50s
Report12.8k10s
Total2191.1M12m 30s
Intake
Explore
Plan
Test
Critique
Report
  • 17:35:02Zexploreexplore started
  • 17:47:32ZexploreExplored / (9 controls, 0 forms)
  • 17:47:32ZexploreMapped 1 pages, 3 forms, 3 flows in 34 turns.
  • 17:47:32Zexploreexplore completed in 146s.
  • 17:47:32Zplanplan started
  • 17:47:32ZplanPlanned 12 scenarios (6 high, 5 medium, 1 low).
  • 17:47:32Zplanplan completed in 41s.
  • 17:47:32Ztesttest started
  • 17:47:32ZtestS1 executed (pass)
  • 17:47:32ZtestS2 executed (pass)
  • 17:47:32ZtestS3 executed (pass)
  • 17:47:32ZtestS4 executed (blocked)
  • 17:47:32ZtestS5 executed (fail), 1 finding
  • 17:47:32ZtestS6 executed (pass)
  • 17:47:32ZtestS7 executed (pass)
  • 17:47:32ZtestS8 executed (pass)
  • 17:47:32ZtestS9 executed (fail), 1 finding
  • 17:47:32ZtestS10 executed (pass)
  • 17:47:32ZtestS11 executed (pass)
  • 17:47:32ZtestS12 executed (pass)
  • 17:47:32ZtestExecuted 12 scenarios: 9 passed, 2 failed, 1 blocked, 2 findings.
  • 17:47:32Ztesttest completed in 443s.
  • 17:47:32Zcritiquecritique started
  • 17:47:32ZcritiqueReviewed 2 findings; 2 possible defects spotted in passed scenarios.
  • 17:47:32ZcritiqueRe-verified F1: inconclusive.
  • 17:47:32ZcritiqueRe-verified a possible defect in S7: not-reproduced.
  • 17:47:32ZcritiqueRe-verified a possible defect in S12: reproduced.
  • 17:47:32ZcritiqueAudit complete: 2 confirmed, 0 withdrawn, 1 promoted, 3 re-verified live.
  • 17:47:32Zcritiquecritique completed in 110s.
  • 17:47:32Zreportreport started
  • 17:47:32ZreportReported 3 issues (0 critical, 1 high, 1 medium, 1 low) from 2 findings.
  • 17:47:32Zreportreport completed in 10s.

Put an agent team on your next pull request.

Connect a repo, dispatch a Run, and read an audited, evidence-backed report the same day.