Pay a .agt name from MetaMask

Type launchpad.agt where MetaMask asks who to pay, and the address the name's owner published on the AGT Registry fills in. The AGT Names Snap does the lookup inside the wallet, straight from the registry on Polygon, and answers on the major EVM networks.

npm:@agtnames/snap · version 0.1.2

What you see

Start a send on any supported network and type the name. MetaMask shows the resolved address under the field with the label AGT Registry:

MetaMask send screen on Polygon: launchpad.agt resolved to 0x37007…17596, labelled Address resolved via AGT Registry

Names that are lapsed, unregistered or have no address records show MetaMask's own "No address resolution found" message. The Snap never guesses: if the registry cannot be read, it shows nothing.

Which address you pay

NetworkAddress offeredLabel
PolygonThe payment address the owner set (agentWallet)AGT Registry
PolygonThe owner account (addr), as a second option only when it differsAGT Registry (owner account)
Polygon, no payment address setaddrAGT Registry
Ethereum, Base, Arbitrum, Optimism, BNB Chain, AvalancheThe address the owner set for that network (addr(coinType)), else addr when it is a plain key-controlled accountAGT Registry

For name owners

The address people pay is the one you enter as the payment address when you publish your identity; it is written to the agentWallet record. The owner account field writes addr; it is prefilled with the current record and only written when you change it. Both are ordinary resolver records you can also set from code. A name in its grace period resolves to nothing until it is renewed.

Install by hand

From any page connected to MetaMask, or the browser console on one:

wallet_requestSnapsjs
await window.ethereum.request({
  method: "wallet_requestSnaps",
  params: { "function(){throw Error("Attempted to call SNAP_ID() from the server but SNAP_ID is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")}": { version: "function(){throw Error("Attempted to call SNAP_VERSION() from the server but SNAP_VERSION is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")}" } },
});

Pin the version as shown; MetaMask installs exactly the version that has been reviewed.

Permissions and privacy

  • endowment:name-lookup for .agt on the seven networks above: MetaMask calls the Snap only for text ending in .agt.
  • endowment:network-access to read the registry over public Polygon JSON-RPC (publicnode, dRPC, 1RPC). Two batched read calls per lookup.
  • No accounts, keys, stored data, analytics or third-party API. The Snap cannot sign or send anything; it only fills in an address for you to confirm.

Other name-resolution Snaps may also answer for a .agt name with a legacy record; MetaMask labels every result, so look for AGT Registry.

Questions

The name does not resolve. Why?
Three usual reasons: the network selected in MetaMask is not one of the seven the Snap answers on; the name is lapsed, unregistered or has no address record yet (MetaMask then says "No address resolution found"); or the owner account is a smart-contract account and you are on a network other than Polygon, where the Snap deliberately offers nothing. Try the same name on Polygon; if it resolves there, the last case applies.
MetaMask shows two addresses for one name. Which do I pick?
On Polygon the first entry, labelled AGT Registry, is the payment address the owner set. The second, AGT Registry (owner account), is the account that published the name. Pay the first unless the owner told you otherwise.
Another entry appears with a different label.
Another name-resolution Snap you have installed answered too, possibly with a legacy record. Results are labelled by source; pick the AGT Registry one for the current registry.
Can I type a name where MetaMask asks for an address elsewhere, or search by address?
The Snap works in the send flow (recipient field). Address → name (reverse lookup) is not in this version.
Why does regular MetaMask refuse to install it?
MetaMask installs only Snaps listed in its Snaps Directory. Until this Snap is listed, it installs in MetaMask Flask. The button above tells you which case you are in.
What does the Snap send or store?
Nothing about you. Each lookup is two read-only calls to public Polygon RPC endpoints for the name you typed. The Snap keeps no state and cannot sign or move funds.
I own a name. How do I control what people pay?
Set the payment address when you publish your identity (it becomes the agentWallet record). For a different address on another network, set that network's addr(coinType) record; see Records & Resolution. Renew before the grace period so the name keeps resolving.
Where do I report a problem?
github.com/agtnames/agt/issues or support@agtnames.com.

Reference