Help & Knowledge Base

Everything you need to install, use, troubleshoot, and uninstall the INS MetaMask Snap. If you can’t find your answer here, open an issue on GitHub or DM @IgraNameService.

Contents

1. Installing the Snap #

What you need

Why Flask and not regular MetaMask? Snaps in regular MetaMask can only be installed from the official MetaMask Snap Directory. Our directory submission is filed and under review — once approved (typical: 5–14 days), you’ll be able to install in regular MetaMask too. Until then, Flask is the path.

Install steps

  1. Visit insdomains.org/snap
  2. The page will detect MetaMask Flask via EIP-6963 wallet discovery and mark it with a green border
  3. Click Install INS Snap
  4. In the Flask popup, click Connect
  5. Review the permissions screen (you should see name lookup and network access only). Click Install
  6. Click OK when Flask confirms installation
Successful install returns a JSON object on the page showing "blocked": false, "enabled": true, "version": "0.1.0". If you see this, you’re done.

2. Using forward resolution #

Forward resolution turns a name (e.g. alice.igra) into a wallet address. It’s triggered automatically whenever you type into any field that MetaMask treats as a recipient.

Where it works

Walk-through

  1. Open MetaMask Flask
  2. Switch to Ethereum Mainnet (or Igra L2 if you’ve added it)
  3. Click Send
  4. In the recipient field, type a name ending in .igra
  5. Wait ~1 second — Flask will show the resolved address below the field
  6. Continue with amount + send as normal

Names to test it on

igranetwork.igraResolves to the Igra team wallet
insdomains.igraResolves to the INS team wallet (same wallet as above)
claudeai.igraResolves to a separate wallet (good cross-check)

3. Using reverse resolution #

Reverse resolution does the opposite: it turns a wallet address back into a human-readable name. MetaMask uses this automatically when displaying addresses — if the address has a primary .igra name registered, you’ll see alice.igra instead of 0x….

How a holder sets their primary name

  1. Visit insdomains.org/domains with the wallet that owns one or more .igra names
  2. Click Set as primary on the name you want as your default reverse
  3. Sign the transaction (small gas fee on Igra L2)
  4. Within a minute, MetaMask will start displaying that name when it shows your address
Reverse resolution doesn’t work for addresses that haven’t opted in. If you paste a wallet that hasn’t set a primary name, MetaMask will keep showing the raw 0x… — that’s expected behavior, not a bug.

4. Supported chains #

The Snap is enabled on these chains. Resolution is triggered when MetaMask’s active network matches one of them:

Ethereum MainnetChain ID 1 (eip155:1) — the most-used chain, all .igra names resolve here
Igra L2Chain ID 38833 (eip155:38833) — the home chain for INS

Adding Igra L2 to MetaMask

  1. Click the network dropdown in MetaMask
  2. Click Add a custom network
  3. Fill in:
    • Network name: Igra L2
    • RPC URL: https://rpc.igralabs.com
    • Chain ID: 38833
    • Currency symbol: iKAS
    • Block explorer: https://explorer.igralabs.com
  4. Save

5. Troubleshooting #

"MetaMask Flask not detected" on the install page

Install fails with a shasum mismatch

Rare, but happens if a major version difference exists between our published manifest and your Flask install. Try:

  1. Update Flask to the latest version (Settings → About in Flask)
  2. Reload the install page
  3. If it still fails, file a bug report with the exact error text and your Flask version — we’ll ship a patch

Name doesn't resolve in the Send field

Wrong address shown

The address comes from the on-chain INS registry. If it’s wrong, the name’s owner may have updated where it points after the last time you looked. Cross-check at insdomains.org/app — the snap and the dApp read from the same source of truth.

Snap appears disabled in Settings → Snaps

  1. Open MetaMask Flask → Settings → Snaps
  2. Find "INS - Igra Name Service"
  3. Toggle it to enabled
  4. Refresh any dapp that uses MetaMask resolution

6. Permissions explained #

When you install the Snap, MetaMask will show you a permissions screen. Here’s exactly what each one means and why we ask for it:

endowment:name-lookup The mechanism by which MetaMask calls our Snap when you type a name. This is the only hook we use — we can’t do anything else with it.
endowment:network-access Lets us call https://insdomains.org/api/resolve and /api/reverse. Without it, we’d have no way to look up addresses. We’ve hard-coded the destination — the Snap cannot reach any other URL.

What we deliberately don’t request:

Full security review: SECURITY.md.

7. Privacy & data #

The Snap is a thin read-only client. Here’s what we see and what we don’t:

What we see The name string you type (e.g. alice.igra) when MetaMask asks us to resolve it. Or the wallet address MetaMask wants us to reverse-lookup. That’s it.
What we don’t see Your private keys. Your balances. Your transaction history. Other names you’ve typed in other contexts. Anything from other dapps. The Snap sandbox in MetaMask Flask prevents this.
What we store Nothing on your device. Server-side, our API logs ephemeral request metadata (timestamp, source IP) for rate-limiting and abuse prevention — these logs roll over within 24 hours.
Account / tracking None. No account creation, no email, no cookies, no analytics tracker.

Full privacy notes for the INS platform are at insdomains.org/privacy.

8. Hardware wallet compatibility #

The Snap works fine with hardware wallets (Ledger, Trezor, Lattice, etc.) connected through MetaMask Flask. Resolution happens entirely in the browser before the transaction is sent to the hardware wallet for signing — your hardware wallet still displays the resolved address on its screen for you to verify, so even if the snap returned a wrong address you’d catch it before signing.

Best practice: always confirm the address on your hardware wallet’s screen matches what you expect, regardless of whether name resolution was used. This is just standard hardware-wallet hygiene.

9. Updating & versions #

Snaps update automatically when you reinstall them, but Flask doesn’t auto-update them on a schedule. To grab a new version:

  1. Visit insdomains.org/snap
  2. Click Install INS Snap again — Flask will detect the version bump and prompt you to update

Current version: 0.1.0. Version history: CHANGELOG.

10. Uninstalling #

  1. Open MetaMask Flask
  2. Click the menu (☰) → SettingsSnaps
  3. Find "INS - Igra Name Service"
  4. Click into it → scroll to the bottom → Remove
  5. Confirm

The Snap will be removed and any name resolution will stop. Your wallet, keys, and any .igra names you own on-chain are completely unaffected.

11. For developers #

Integration options ranked from least to most work:

  1. Trigger Snap install from your dapp — one function call:
    await window.ethereum.request({
      method: 'wallet_requestSnaps',
      params: { 'npm:ins-snap-resolver': {} },
    });
  2. Call our REST API directly — no Snap install required:
    // Forward
    fetch('https://insdomains.org/api/resolve?name=alice.igra')
    
    // Reverse
    fetch('https://insdomains.org/api/reverse?address=0x...')
  3. Read from on-chain — for ultimate trustlessness. Call Registry.resolve(label) on Igra L2 chain 38833.

Full API reference: docs/API.md. Snap source: github.com/ItsGoonBoyCrypto/INSdomains/tree/main/snap.

12. Frequently asked #

Why does this require MetaMask Flask right now?

Regular MetaMask only loads Snaps from the official Snap Directory. We’ve submitted INS Snap for review — once approved, it’ll install in regular MetaMask too.

When will INS Snap be available in regular MetaMask?

As soon as the MetaMask team approves our directory submission. Typical review window: 5–14 days. Follow @IgraNameService for the announcement.

Can the Snap steal my funds?

No. The Snap can’t sign transactions, doesn’t have access to your keys, and never sees your balance. Worst case it could return a wrong resolved address — but MetaMask always shows you the address in the send confirmation, so you’d catch it before signing.

Does it cost anything to use?

No. The Snap itself is free. Registering a .igra name on-chain costs iKAS gas at the standard INS tier (1-char = 4000 iKAS, 2-char = 2000 iKAS, etc.) but resolving names is free for everyone forever.

What happens if your API goes down?

The Snap fails closed — you’ll see your raw input (e.g. alice.igra) instead of an address, and MetaMask will block sending until you paste a real address. The Snap can never substitute a wrong address silently.

Does this work on Brave / Edge / other Chromium browsers?

Yes — anywhere MetaMask Flask runs. Flask isn’t Chrome-only.

Will adding the Snap slow MetaMask down?

No measurable impact. The Snap is 1.3 KB, runs only when MetaMask explicitly invokes it for name resolution, and has a 5-second hard timeout to prevent any single lookup from hanging the UI.

Does this need a .eth name?

No. INS Snap is independent of ENS. We resolve .igra names directly via the INS registry on Igra L2.

13. Glossary #

INSIgra Name Service — the name registry mapping .igra names to wallet addresses on Igra Network
Igra NetworkAn EVM-equivalent L2 chain (ID 38833) built on top of the Kaspa BlockDAG
MetaMask SnapA small extension that runs inside MetaMask to add features — in our case, native .igra name resolution
MetaMask FlaskMetaMask’s developer build, which can install Snaps directly from npm. Free, runs alongside regular MetaMask without conflicting.
Snap DirectoryThe official MetaMask-curated list of approved Snaps at snaps.metamask.io. Snaps on this list install in regular MetaMask.
Forward resolutionName → address. Type alice.igra, get back 0x…
Reverse resolutionAddress → name. Paste a wallet, see alice.igra if they’ve set one as primary
Primary nameThe .igra name a wallet has chosen as its default reverse-resolution result. Set at insdomains.org/domains.
EIP-6963The standard MetaMask uses to announce its presence to dapps. The install page uses it to detect Flask specifically.
iKASThe gas + utility token on Igra Network

14. Reporting bugs or security issues #

Bug reports + feature requests

Open an issue using one of our templates: github.com/ItsGoonBoyCrypto/INSdomains/issues/new/choose

Security vulnerabilities

Do not file a public issue for security vulnerabilities. Use a private security advisory instead. We commit to acknowledging within 48 hours and shipping a fix within 7 days for any critical issue.

General contact