Skip to content

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

@beautifulrem

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions