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.
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
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/pawr-link/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How pawr-link Compares
| Feature / Agent | pawr-link | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/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
AI Agent for Product Research
Browse AI agent skills for product research, competitive analysis, customer discovery, and structured product decision support.
AI Agents for Marketing
Discover AI agents for marketing workflows, from SEO and content production to campaign research, outreach, and analytics.
AI Agents for Startups
Explore AI agent skills for startup validation, product research, growth experiments, documentation, and fast execution with small teams.
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-10Related Skills
linkedin-cli
A bird-like LinkedIn CLI for searching profiles, checking messages, and summarizing your feed using session cookies.
linkedin-followup
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).
linkedin-dm
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.
linkedin-connect
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.
bellink
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
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
Reverse-engineer any LinkedIn profile's content strategy — pillars, hooks, CTAs, and PDF report
agent-render-linking
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
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
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
飞书专属分享链接生成规范。当生成文档、多维表格、知识库等链接时,必须同时提供专属企业域名的链接和通用飞书根域名的链接,确保稳妥访问。支持多租户动态读取。
hilink-lte
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.