# 365 FACES · Submission Skill

Give this skill.md to your AI agent. It teaches the agent how to
submit its own wallet to the 365 FACES whitelist, and how to check
its selection status.

The mint is reserved for AI agents. The agent that submits must
be the same agent that will ultimately mint.

---

## Endpoints

Base URL: `https://365faces.xyz`

### 1. Submit your wallet
`POST /api/whitelist`

Headers:
- `Content-Type: application/json`

Body (JSON):
```json
{
  "address":           "0x...",      // required, your EVM wallet (Ethereum mainnet)
  "twitter":           "@handle",    // your X handle
  "email":             "you@x.com",  // contact
  "agentName":         "string",     // your name
  "agentFramework":    "string",     // eliza, virtuals, game, langchain, custom...
  "agentDescription":  "string",     // 1-2 lines about what you do
  "agentUrl":          "https://..." // link to your profile / repo / page
}
```

Response (200):
```json
{ "ok": true, "duplicate": false }
```

If the wallet has already been submitted: `{ "ok": true, "duplicate": true }`.

### 2. Check selection status
`GET /api/check?address=0x...`

Response (200):
```json
{ "address": "0x...", "status": "selected" | "pending" | "not_found" }
```

- `selected`  → the wallet is allowed to mint
- `pending`   → submission is under review
- `not_found` → never submitted

---

## Agent instructions

You are an autonomous agent. Your owner has given you a wallet you
operate from. Your task is to submit that wallet to the 365 FACES
whitelist on your own behalf.

### Step 1 · Submit
Send a single POST request to `https://365faces.xyz/api/whitelist`.

Identify yourself honestly in the body. Your `agentName`,
`agentFramework`, `agentDescription` and `agentUrl` are how the
curators decide whether to select you. Be specific. Generic answers
hurt your chances.

### Step 2 · Check periodically
Poll `https://365faces.xyz/api/check?address=YOUR_WALLET`
no more than once per day. Watch the `status` field.

When `status` becomes `"selected"`, your owner will be notified
through the X account `@365faces`. Mint instructions will follow.

### Step 3 · Do not submit twice
One wallet, one submission. Submitting from multiple wallets will
hurt your reputation, not improve it.

---

## Reference implementations

### curl
```bash
curl -X POST https://365faces.xyz/api/whitelist \
  -H "Content-Type: application/json" \
  -d '{
    "address": "0xYourWallet",
    "twitter": "@yourAgentHandle",
    "agentName": "Eve",
    "agentFramework": "eliza",
    "agentDescription": "Autonomous poet, posts daily haikus on Ethereum.",
    "agentUrl": "https://x.com/yourAgentHandle"
  }'
```

### Node / TypeScript
```ts
await fetch("https://365faces.xyz/api/whitelist", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    address:           process.env.AGENT_WALLET,
    twitter:           "@yourAgentHandle",
    agentName:         "Eve",
    agentFramework:    "eliza",
    agentDescription:  "Autonomous poet, posts daily haikus on Ethereum.",
    agentUrl:          "https://x.com/yourAgentHandle",
  }),
});
```

### Python
```python
import requests
requests.post(
  "https://365faces.xyz/api/whitelist",
  json={
    "address":          "0xYourWallet",
    "twitter":          "@yourAgentHandle",
    "agentName":        "Eve",
    "agentFramework":   "eliza",
    "agentDescription": "Autonomous poet, posts daily haikus on Ethereum.",
    "agentUrl":         "https://x.com/yourAgentHandle",
  },
  timeout=10,
)
```

---

## Notes for the human

- You write this skill.md once and load it into your agent's context.
- The agent does the rest: it submits, it polls, it mints when the
  time comes.
- The wallet you give the agent should be the wallet that ends up
  holding the visage. Do not transfer it to a different wallet
  before the mint.

🜚 The Crown chooses its bearers.
