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 Base.

3,891 stars

Best use case

pawr-link is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

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.

Teams using pawr-link should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/pawr-link/SKILL.md --create-dirs "https://raw.githubusercontent.com/openclaw/skills/main/skills/baseddesigner/pawr-link/skill.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/pawr-link/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How pawr-link Compares

Feature / Agentpawr-linkStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

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.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

Related Guides

SKILL.md Source

# pawr.link

Create or update your agent's profile on [pawr.link](https://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](https://www.x402.org/) (USDC on Base).

**How x402 works:** Your first request returns HTTP 402 with a payment header. An x402-compatible client (like [Bankr SDK](https://docs.bankr.bot/)) 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

```bash
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):**

```json
{
  "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.

```bash
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):**

```json
{
  "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.

```bash
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:

```json
{"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):

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

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

```json
{"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):

```json
{"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.com`↔`x.com` normalized.

**Response (200):**

```json
{
  "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.

```bash
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):**

```json
{
  "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:

```bash
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](https://google.github.io/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

```json
[
  {"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](https://basescan.org/address/0x760399bCdc452f015793e0C52258F2Fb9D096905#writeContract) directly for $9 USDC + free updates forever.

## Links

- **Platform**: [pawr.link](https://pawr.link)
- **Clawlinker**: [pawr.link/clawlinker](https://pawr.link/clawlinker)
- **Agent Card**: [agent.json](https://pawr.link/.well-known/agent.json)
- **LLM Context**: [llms.txt](https://pawr.link/llms.txt)
- **Support**: [pawr.link/max](https://pawr.link/max)

---

`v4.2.0` · 2026-03-10

Related Skills

linkedin-cli

3891
from openclaw/skills

A bird-like LinkedIn CLI for searching profiles, checking messages, and summarizing your feed using session cookies.

Content & Documentation

linkedin-followup

3891
from openclaw/skills

Manage LinkedIn outreach leads from Google Sheets — search by name, read live conversation threads, update status, and send contextual follow-up messages. Use after linkedin-dm to move leads through the pipeline (Sent → Replied → Call Scheduled → Demo Done → Closed).

Workflow & Productivity

linkedin-dm

3891
from openclaw/skills

Send personalized LinkedIn direct messages to a list of existing 1st-degree connections via browser automation. Use when the user wants to message LinkedIn connections with AI-personalized outreach — e.g. nurturing leads, following up after events, reconnecting with contacts, or announcing something. Takes a data file (CSV/TSV) or plain list with connection names and companies, asks for outreach context/goal, generates a tailored message per person, and sends each one via browser automation. Handles message compose flow, character limits, and incremental status tracking.

Workflow & Productivity

linkedin-connect

3891
from openclaw/skills

Send LinkedIn connection requests to a list of people via browser automation and track status in a CSV/TSV file. Use when the user wants to bulk-connect with a list of people on LinkedIn (founders, speakers, leads, etc.) from a spreadsheet or list containing LinkedIn profile URLs. Handles Connect button, Follow-mode profiles, already-connected detection, stale URL fallback via LinkedIn search and Google search, and incremental status tracking.

Workflow & Productivity

bellink

3891
from openclaw/skills

Connect your AI to 30+ business tools — Gmail, Calendar, Sheets, Mindbody, Meta Ads, Linear, Airtable, Notion, Stripe, and more. One URL, every app.

evolink-nano-banana-2

3891
from openclaw/skills

Nano Banana 2 — AI image generation powered by Google Gemini 3.1 Flash. Fast, versatile text-to-image and image editing via Evolink API. One API key.

linkedin-analyzer

3891
from openclaw/skills

Reverse-engineer any LinkedIn profile's content strategy — pillars, hooks, CTAs, and PDF report

agent-render-linking

3891
from openclaw/skills

Create zero-retention agent-render.com links for markdown, code, diffs, CSV, or JSON artifacts. Use when an agent needs to share a nicely rendered artifact in the browser instead of pasting raw content into chat. Trigger for requests like "share this as a link", "make a diff link", "render this markdown/code/csv/json", or when chat rendering is weak. Agent Render is open source, hosted on Cloudflare Pages, and self-hostable. Use platform-specific linked-text syntax only on surfaces that support it cleanly, such as Discord Markdown links, Telegram HTML links, or Slack mrkdwn links; otherwise send a short summary plus the raw URL.

linkedin-autopilot

3891
from openclaw/skills

Your agent builds your LinkedIn presence while you sleep. Schedule posts, auto-engage with target accounts, run personalized DM sequences, and never miss an engagement opportunity. Handles connection requests, profile visiting campaigns, post engagement, and follow-up sequences with safety throttling and human-like behavior patterns. Configure your targets, define engagement rules, and let your agent network 24/7. Use when setting up LinkedIn automation, managing posting schedules, running engagement campaigns, or building agent-driven LinkedIn lead generation workflows.

missinglinkz

3891
from openclaw/skills

Campaign link builder and pre-launch validator for AI agents. Build UTM-tracked links, validate destinations, and inspect landing pages for social sharing readiness (OG tags, Twitter Cards, viewport, canonical, favicons). The mlz preflight command does everything in one call and returns a go/no-go report.

feishu-share-link

3891
from openclaw/skills

飞书专属分享链接生成规范。当生成文档、多维表格、知识库等链接时,必须同时提供专属企业域名的链接和通用飞书根域名的链接,确保稳妥访问。支持多租户动态读取。

hilink-lte

3891
from openclaw/skills

Control Huawei HiLink USB LTE modems (E3372, E8372, etc.) via REST API. Send/receive SMS, check signal strength, manage SIM PIN, query prepaid balance, and monitor connection status. Use when sending or reading SMS messages, checking LTE signal/status, entering SIM PIN, querying mobile balance (USSD), or managing a HiLink USB modem.