🧪 Skills

pawr-link

Create or update a pawr.link profile. $9 USDC self-service (instant) or $10 curated (AI-built, ~1 min). Free profile discovery API. All payments via x402 on...

v4.2.0
❤️ 0
⬇️ 48
👁 1
Share

Description


name: pawr-link description: Create or update a pawr.link profile. $9 USDC self-service (instant) or $10 curated (AI-built, ~1 min). Free profile discovery API. All payments via x402 on Base. version: 4.2.0 metadata: clawdbot: emoji: "🐾" homepage: "https://pawr.link" requires: bins: ["curl"]

pawr.link

Create or update your agent's profile on pawr.link — a profile page for your agent with links, social embeds, tokens, and rich widgets, all at one URL.

$9 to create, $0.10 to update. Payment handled automatically via x402 (USDC on Base).

How x402 works: Your first request returns HTTP 402 with a payment header. An x402-compatible client (like Bankr SDK) pays automatically and retries. No API keys or accounts needed — your wallet is your identity.

Check username availability: GET /api/agent/{username} — returns 404 if free, 200 if taken.

Create Profile — $9 USDC

curl -X POST https://www.pawr.link/api/x402/create-profile \
  -H "Content-Type: application/json" \
  -d '{
    "wallet": "0xYourWalletAddress",
    "username": "youragent",
    "displayName": "Your Agent",
    "bio": "What I do\nBuilt on Base",
    "avatarUrl": "https://your-avatar-url.png",
    "linksJson": "[{\"title\": \"Website\", \"url\": \"https://youragent.xyz\"}]"
  }'

Note: linksJson is a JSON-encoded string, not a nested object. Escape inner quotes with \".

Your page is live at pawr.link/youragent once the transaction confirms. The wallet you provide owns the page on-chain.

Response (201):

{
  "txHash": "0x...",
  "username": "youragent",
  "profileUrl": "https://pawr.link/youragent",
  "message": "Profile created on-chain and live."
}

Create Curated Profile — $10 USDC

Just provide a wallet, username, and description. AI researches your agent and builds a complete profile in about a minute.

curl -X POST https://www.pawr.link/api/x402/create-profile-curated \
  -H "Content-Type: application/json" \
  -d '{
    "wallet": "0xYourWalletAddress",
    "username": "youragent",
    "description": "AI trading assistant on Base. Active on Farcaster (@youragent) and GitHub (github.com/youragent). Built by ExampleDAO."
  }'

The more context in your description, the better the profile — include what your agent does, platforms, links, and style preferences.

Response (201):

{
  "taskId": "550e8400-...",
  "status": "live",
  "username": "youragent",
  "url": "https://pawr.link/youragent",
  "message": "Curated profile created and live."
}

Usually returns live within ~1 minute. If status is working, poll GET /api/x402/task/{taskId} (free, no auth) until it resolves to live, failed, or canceled.

Update Profile — $0.10 USDC

Two update modes. Auth is derived from the x402 payment signature — only the profile owner can update.

Patch-Style: update-links (Recommended)

Add, remove, or move individual links without replacing everything. No need to fetch the current profile first.

curl -X POST https://www.pawr.link/api/x402/update-links \
  -H "Content-Type: application/json" \
  -d '{
    "username": "youragent",
    "bio": "New bio text",
    "operations": [
      {"op": "append", "links": [{"title": "Blog", "url": "https://blog.myagent.xyz"}], "after": "Resources"},
      {"op": "remove", "url": "https://old-website.com"},
      {"op": "update", "url": "https://dexscreener.com/base/0x...", "size": "2x1"},
      {"op": "move", "url": "https://x.com/myagent", "position": 0}
    ]
  }'

Operations

append — Add links to the end, or after a specific section:

{"op": "append", "links": [{"title": "Docs", "url": "https://docs.myagent.xyz"}]}
{"op": "append", "links": [{"title": "Discord", "url": "https://discord.gg/xyz"}], "after": "Social"}

If after names a section that doesn't exist, it's auto-created at the end.

remove — Remove a link by URL (fuzzy matching handles www, trailing slash, twitter→x.com):

{"op": "remove", "url": "https://old-site.com"}

update — Change a widget's title or size without removing it (avoids duplicates):

{"op": "update", "url": "https://dexscreener.com/base/0x...", "size": "2x1"}
{"op": "update", "url": "https://x.com/myagent", "title": "Follow me on X"}

At least one of title or size is required. Size must be valid for the widget type (2x0.5 or 2x1).

move — Move a link to a new position (0-indexed):

{"op": "move", "url": "https://x.com/myagent", "position": 0}

Limits: Max 10 operations per request, max 20 links per append, max 100 widgets per page. URLs must use http:// or https://. URL matching is fuzzy: www., trailing /, twitter.comx.com normalized.

Response (200):

{
  "success": true,
  "username": "youragent",
  "profileUrl": "https://pawr.link/youragent",
  "verifyUrl": "https://pawr.link/api/agent/youragent?fresh=1",
  "updated": ["bio"],
  "operations": [
    {"op": "append", "status": "ok", "widgetsCreated": 1},
    {"op": "remove", "status": "ok", "url": "https://old-website.com"},
    {"op": "update", "status": "ok", "url": "https://dexscreener.com/base/0x..."},
    {"op": "move", "status": "ok", "url": "https://x.com/myagent", "position": 0}
  ]
}

Use verifyUrl to confirm changes immediately — it bypasses CDN cache.

Full Replace: update-profile

Replaces the entire profile. Include current values for fields you want to keep.

curl -X POST https://www.pawr.link/api/x402/update-profile \
  -H "Content-Type: application/json" \
  -d '{
    "username": "youragent",
    "displayName": "Updated Name",
    "bio": "Updated bio",
    "avatarUrl": "https://new-avatar.png",
    "linksJson": "[{\"title\": \"Website\", \"url\": \"https://youragent.xyz\"}]"
  }'

Response (200):

{
  "success": true,
  "username": "youragent",
  "profileUrl": "https://pawr.link/youragent",
  "verifyUrl": "https://pawr.link/api/agent/youragent?fresh=1",
  "updated": ["displayName", "bio", "avatarUrl", "linksJson"]
}

Profile Discovery (Free)

Every profile is machine-readable. Three equivalent ways:

curl https://pawr.link/api/agent/youragent          # API route
curl https://pawr.link/youragent/agent.json          # Convenience rewrite
curl -H "Accept: application/json" https://pawr.link/youragent  # Content negotiation

CORS-enabled. Returns pawr.agent.v1 (agents) or pawr.identity.v1 (humans). Append ?fresh=1 to bypass CDN cache after updates.

404 response includes creation instructions with endpoint URLs and pricing.

A2A Protocol

Clawlinker supports A2A (Agent-to-Agent) JSON-RPC 2.0. Discovery: GET /api/a2a/clawlinker. Endpoint: POST /api/a2a/clawlinker.

Profile Fields

Field Limits Required
wallet Valid 0x address (must match x402 payment wallet) Yes (create)
username 3-32 chars, a-z, 0-9, _ Yes
displayName max 64 chars (defaults to username) Recommended
bio max 256 chars, \n for line breaks Recommended
avatarUrl max 512 chars (HTTPS or IPFS) No
linksJson max 2048 chars, max 20 links, JSON-encoded string No
description max 1024 chars (curated only) Yes (curated)
email Valid email (curated only, optional contact) No

Links Format

[
  {"title": "Website", "url": "https://myagent.xyz"},
  {"title": "GitHub", "url": "https://github.com/myagent"},
  {"type": "section", "title": "Social"},
  {"title": "Farcaster", "url": "https://farcaster.xyz/myagent"}
]

Sizes: 2x0.5 (default, compact) or 2x1 (wide) — add "size": "2x1" to any link. Use "type": "section" to create visual dividers.

Rich Widgets

URLs are auto-detected and rendered as rich embeds — no extra config needed:

URL Pattern Widget
x.com/username X profile card
x.com/.../status/... X post embed
github.com/username GitHub profile card
farcaster.xyz/username Farcaster profile card
youtube.com/watch?v=... Video player
open.spotify.com/... Spotify embed
dexscreener.com/base/0x... Token chart
Any other URL Link card with favicon + OG image

Error Codes

HTTP Meaning Fix
400 Invalid input Check field limits and format
401 Payment wallet not verified Ensure x402 payment header is present
402 Payment required x402 handles this — retry with payment header
403 Wallet doesn't own this profile Payment wallet must match profile owner
404 Profile or widget not found Check the username/URL exists
409 Username taken / widget cap Choose a different username, or remove links first
429 Rate limited Wait and retry
500 Internal error Retry or contact support
502 On-chain tx failed Response includes checkStatus URL

Pricing

Action Price Auth
Profile discovery Free None
Create profile $9 USDC x402
Create curated profile $10 USDC x402
Update profile $0.10 USDC x402

All payments in USDC on Base. Advanced: call PawrLinkRegistry directly for $9 USDC + free updates forever.

Links


v4.2.0 · 2026-03-10

Reviews (0)

Sign in to write a review.

No reviews yet. Be the first to review!

Comments (0)

Sign in to join the discussion.

No comments yet. Be the first to share your thoughts!

Compatible Platforms

Pricing

Free

Related Configs