Nothing to register
Your site's address is its name. No keys, no dashboard, no approval queue. One script tag.
POINTCAST · CONNECT · v1
A login for the small web that does not track you. Your town card goes with you to any site that asks, and nothing follows you home.
Your site's address is its name. No keys, no dashboard, no approval queue. One script tag.
Your card, and your Tezos wallet only if the site asks. Line by line, before you say yes.
The site gets a code that works once and dies in two minutes. No token, no refresh, no way back in without you.
Each site gets its own id for you, so two sites cannot line up their lists and find you in both.
That is the whole payload. PointCast.xyz asked as an ordinary site would. Run it again and sub stays the same here; on any other site it would be different.
{ sub, card }. Store sub as their id on your site.<script src="https://pointcast.xyz/connect.js" defer></script>
<button data-pointcast-connect data-scope="card">
Continue with PointCast
</button>
<script>
document.addEventListener('pointcast:connected', (e) => {
const { sub, card } = e.detail; // sub: stable for your site only
console.log('Hello', card ? '@' + card.handle : sub);
});
</script> // Need your server to trust it? Ask for the code instead:
const { code } = await PointCast.connect({ exchange: false });
// …send code to your server, then from the server:
const res = await fetch('https://pointcast.xyz/api/connect/token', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ code, client: 'https://your.site' }),
});
const who = await res.json(); // { ok, sub, card, wallet?, aud, iss } data-scope="card wallet". The person sees the exact address first.None of them can reach you again without asking. This list is your receipt.