Skip to content

Discovery 1.7.5 labels MPP EVM/Base challenges as tempo:8453 #1209

Description

@seancrecord

@agentcash/discovery@1.7.5 parses an MPP evm/charge challenge on Base as network: "tempo:8453". It also omits the six-decimal precision when the EVM request puts decimals in methodDetails.

Reporting here because apps/scan/package.json pins this package and the linked package repository (merit-systems/agentcash-discovery) returns 404. Please transfer if there is a better public tracker.

Reproduced with an unsigned GET of https://scvd.store/api/buy/context_anchor on September 17. The challenge declares method="evm", intent="charge", methodDetails.chainId=8453, and Base USDC. No payment was submitted. A deterministic reproduction needs no network or wallet:

npm install --ignore-scripts @agentcash/discovery@1.7.5
import { checkEndpointSchema } from '@agentcash/discovery';
const request = Buffer.from(JSON.stringify({
  amount: '1000000',
  currency: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
  methodDetails: { chainId: 8453, decimals: 6, credentialTypes: ['authorization'] },
  recipient: '0xDD350976B8cfFc65938C0464d39A2C78BE079bd0',
})).toString('base64url');
const header = `Payment id="fixture", realm="example.com", method="evm", intent="charge", request="${request}"`;
globalThis.fetch = async (url, init) => {
  if (String(url).endsWith('/anchor') && init?.method === 'GET') {
    return new Response('{}', { status: 402, headers: { 'WWW-Authenticate': header } });
  }
  return new Response(null, { status: 404 });
};
const result = await checkEndpointSchema({ url: 'https://example.com/anchor', probe: true });
console.log(JSON.stringify(result, null, 2));

The returned MPP option contains:

{"protocol":"mpp","paymentMethod":"evm","intent":"charge","network":"tempo:8453","amount":"1000000"}

Expected: preserve the EVM/Base identity (for example eip155:8453, consistent with the chain identifier), or mark an unsupported method explicitly. It should not be relabelled as a Tempo network. For supported EVM requests, preserve methodDetails.decimals=6 as well.

The published bundle's extractPaymentOptions unconditionally formats network as tempo:${chainId} and only reads request.decimals. This appears independent of SCVD's OpenAPI metadata. Separately, our current x-payment-info.protocols lists only x402; adding an MPP descriptor on our side is still needed and is not claimed as fixed by this report.

This blocks our MPPScan qualification. Does the current registration path support evm/charge on Base, or should this method be explicitly treated as unsupported for now?

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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