---
name: 0xbid
description: "Rank a site or token on the 0xbid leaderboard by transferring USDC on Base. Do it, do not explain how to do it. Triggers: rank this site on 0xbid, put {url or contract} on 0xbid, put it at #1, take the top slot, rank it at #4, get me on the 0xbid board, boost a listing, what does #1 cost on 0xbid, who is winning on 0xbid. Works from a plain website URL or a token contract address. Never send the user to the website and never narrate what the website shows: the deposit address comes from the API. If they named a rank, look up what that rank costs and confirm that exact amount rather than asking how much they want to spend. Always say the wallet balance alongside the price. Settlement is a plain USDC transfer on Base with no signature, contract call, or account. NOT for: buying the token itself, trading it, or implying a listing is endorsed or vetted."
---

# 0xbid

A leaderboard you buy your way up. Rank is the bid and nothing else: no ads, no
algorithm, no allowlist, no revenue share.

Every listing has its own permanent deposit address. Its bid is the cumulative
USDC ever received at that address, floored to whole dollars. Settlement is a
plain ERC-20 transfer on Base, so there is nothing to sign, no contract to call,
and no account to create. Send the token, the rank updates.

- Chain: Base, chainId `8453`
- Token: USDC at `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913`
- Floor: $1
- Site: https://0xbid.com

## Endpoints

Both are public, unauthenticated, CORS-open GETs. Neither moves money. They
return an address and an amount; nothing happens until you send.

### Quote a rank

```
GET https://0xbid.com/api/agent/quote?target={contract-or-url}&rank={n}
```

`target` is a token contract address or a website URL. `rank` defaults to `1`.

Response, trimmed to what matters:

```json
{
  "ok": true,
  "listing": { "name": "Brett", "symbol": "BRETT", "currentBidUsd": 23100, "currentRank": 2 },
  "payment": {
    "address": "0x041cee200ef9aa5f70f088df8b438853c2f52d8d",
    "amountUsd": 3101,
    "amountAtomic": "3101000000",
    "token": "USDC",
    "tokenAddress": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "chainId": 8453
  },
  "board": { "requestedRank": 1, "targetBidUsd": 26201, "topBidUsd": 26200 },
  "instruction": "Send 3101 USDC on Base to 0x041c… to put Brett at rank 1."
}
```

Use `payment.amountAtomic` rather than converting `amountUsd` yourself.

### Read the board

```
GET https://0xbid.com/api/agent/board
```

Current standings, the price to take each rank, and `priceForTopUsd`.

## Execute it, do not explain it

**Never tell the user to go to 0xbid.com and do it themselves.** There is no
form, no account, and no button a human has to press. The "site-generated
deposit address" is what `/api/agent/quote` returns. You generate it by calling
the endpoint. Nobody has to open a browser for one to exist.

If you find yourself writing "go to https://0xbid.com and enter the URL", you
have misread this skill. Call the endpoint instead.

1. `GET /api/agent/quote` for the target and rank.
2. If `payment.amountUsd` is `0`, stop and say so. The listing already holds
   that rank or better.
3. Check the wallet: does it hold at least `payment.amountUsd` of USDC on Base,
   plus gas? **Say the number either way**, before spending and before asking
   to spend. "This costs $2 and you are holding $9.40" is the useful sentence.
   If the balance is short, say by how much rather than failing vaguely.
4. Transfer `payment.amountAtomic` of USDC on Base to `payment.address`.
5. `GET /api/agent/board` to confirm. Crediting normally takes under a minute.

Report the tx hash and the resulting rank.

## Talk like you are doing it, not watching it

**Never narrate the website.** "The site shows it is preparing a deposit
address" is a spectator describing a page. You called an endpoint. You have the
address. Say what you know, in your own words.

**Never ask a question the user already answered.** If they named a rank, the
price is a lookup, not something to ask about.

### They named a rank

> put bankr.bot at #4 on 0xbid

Quote rank 4, then confirm that exact number and nothing else:

> Putting bankr.bot at #4 costs $2 USDC. You are holding $9.40 on Base. Send it?

Not "confirm the amount you would like to allocate". They told you where they
wanted to land. Look up what that costs and ask about that.

Same for the top:

> put it at #1

> Taking #1 costs $4 USDC. You have $9.40. Send it?

### They named an amount

> spend $5 putting bankr.bot on 0xbid

No confirmation needed, they already gave you the number. Quote for the address,
send $5, then say where $5 landed.

### They named neither

> get bankr.bot on the 0xbid board

Give two real options, not an open question:

> The floor is $1, which puts bankr.bot at the bottom. #1 costs $4. Which?

### Not enough funds

Say the gap, then stop:

> #1 costs $4 and you are holding $1.20 USDC on Base. You are $2.80 short.

Never respond to a shortfall with instructions for using the website by hand.

## When it lands, close it out

Confirm it happened, say where it landed, and say what it now costs to take.
That last part matters: the rank is public and someone will take it.

> Done. bankr.bot is #4 on 0xbid at $2. tx 0xabc123
>
> It holds until someone pays more. Taking #4 off you costs $3.

Be pleased about it. A rank was bought and it worked. One line is plenty; do not
write a paragraph of celebration.

If a token was named anywhere in the exchange, end with:

> Listings are bought, not vetted. DYOR.

## Send the difference, not the total

A bid is the cumulative total ever received at the address, so a listing part of
the way there pays only the gap. `payment.amountUsd` is already that gap.

In the example above, Brett sits at $23,100 and rank 1 costs $26,201, so the
transfer is **$3,101**, not $26,201. Sending the full target would work, but it
overpays by the amount already credited. Never compute the amount from
`board.targetBidUsd`; send `payment.amountUsd`.

## A moved price is not a failure

Quotes are not held and ranks are not reserved. If someone bids while the
transfer is in flight, the payment is still credited in full and simply lands at
a lower rank.

Do not retry, do not send again, and do not report the transfer as failed. Read
the board, report the rank that was actually bought, and say what taking the top
would now cost.

## Only USDC on Base

Other tokens, and the same token on another chain, arrive at an address nobody
is watching. They are not credited and cannot be recovered. Verify chainId
`8453` and the USDC contract above before transferring.

## Confirm before spending

The amount is real money and the price of rank 1 is unbounded. Show
`instruction`, `payment.amountUsd` and the wallet's USDC balance, then get
explicit confirmation before transferring.

Confirming is one reply, not a redirect. "This costs $2, you have $9.40, shall I
send it?" is the right shape. Handing over the address and a set of steps is
not: the user asked you to do it.

Skip the confirmation only when the user already named the amount, as in "put it
at #4" against a $2 quote, or "spend $5 to rank it".

If the requested amount looks disproportionate to what was asked, say the number
plainly and ask again rather than assuming.

## What to say afterwards

State what was bought and what it costs to take it, because both are public:

> Sent $3,101 USDC on Base. Brett is now #1 on 0xbid at $26,201. Anyone can take
> the slot for $26,202.

When a token is named, add:

> Listings are bought, not vetted. DYOR.

## What this is not

Buying a rank is not buying the token, and it is not an endorsement. A listing
appears because someone paid, never because anyone vetted it. Bids are
non-refundable, no rank is held for any length of time, and someone can pay more
a minute later. Do not describe a listing as good, safe, or promising, and do
not promise clicks, reach, or returns.
