Skip to content

relayer_getCapabilities returns {} on unsupported chains — return an explicit unsupported signal (complements 1Shot-API-Examples#1) #2

Description

@beautifulrem

What happened

While integrating the Permissionless Relayer for the MetaMask Dev Cook-Off, we called:

{ "method": "relayer_getCapabilities", "params": ["84532"] }

…and got back an empty object {}. No error, no message. We spent a debugging session checking our request shape, the chain-id encoding (string vs number), and whether the relayer was down — before concluding by elimination that the permissionless relayer simply doesn't serve Base Sepolia, and redesigning our demo around an opt-in mainnet leg that night.

Related: 1Shot-API/1Shot-API-Examples#1 asks for a clear testnet vs mainnet endpoint matrix in the docs — fully agree, and this issue proposes the complementary API-level fix so integrators get the answer at runtime too.

Suggestion

Make "unsupported chain" an explicit signal rather than an empty object:

{
  "84532": { "supported": false, "reason": "the permissionless relayer serves mainnet chains only" }
}

or a top-level supportedChains: ["8453", …] field in the capabilities response. Either is a small change, and it converts a half-day of head-scratching into a one-glance answer — especially for hackathon teams who reach for testnets first by reflex.

Context: the integration this came from (mainnet castVote relay, 7702 burner upgrade through the relayer, webhook status receiver with Ed25519/JWKS verification) is open source here: https://github.com/beautifulrem/regent (live demo: https://mandate-app-murex.vercel.app)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions