# Download Agent Source: https://docs.agentpowers.ai/api-reference/agents/download-agent /openapi.json get /v1/agents/{slug}/download Download an agent package. Free agents are public. Paid require purchase. # Get Agent Source: https://docs.agentpowers.ai/api-reference/agents/get-agent /openapi.json get /v1/agents/{slug} Get agent details by slug. Test-user authored agents are hidden from public callers but visible to their own author when authenticated. # List Agents Source: https://docs.agentpowers.ai/api-reference/agents/list-agents /openapi.json get /v1/agents List published agents with optional filtering and sorting. # Publish Agent Source: https://docs.agentpowers.ai/api-reference/agents/publish-agent /openapi.json post /v1/agents Publish a new agent. # Republish Agent Source: https://docs.agentpowers.ai/api-reference/agents/republish-agent /openapi.json post /v1/agents/{slug}/republish Republish a previously archived agent. Owner-only. # Unpublish Agent Source: https://docs.agentpowers.ai/api-reference/agents/unpublish-agent /openapi.json post /v1/agents/{slug}/unpublish Unpublish (archive) an agent. Owner-only. Reversible via republish. # Update Agent Source: https://docs.agentpowers.ai/api-reference/agents/update-agent /openapi.json patch /v1/agents/{slug} Update an existing agent — creates a new version. # Upload Agent Package Source: https://docs.agentpowers.ai/api-reference/agents/upload-agent-package /openapi.json post /v1/agents/{slug}/upload Upload an agent package file to R2 storage. Only the agent author can upload packages. Max 10 MB. # Create Api Token Endpoint Source: https://docs.agentpowers.ai/api-reference/auth/create-api-token-endpoint /openapi.json post /v1/auth/api-tokens Create a new API token. The full token is returned only once. # Get Me Source: https://docs.agentpowers.ai/api-reference/auth/get-me /openapi.json get /v1/auth/me Get current user profile. # List Api Tokens Endpoint Source: https://docs.agentpowers.ai/api-reference/auth/list-api-tokens-endpoint /openapi.json get /v1/auth/api-tokens List all active API tokens for the current user (masked). # Revoke Api Token Endpoint Source: https://docs.agentpowers.ai/api-reference/auth/revoke-api-token-endpoint /openapi.json delete /v1/auth/api-tokens/{token_id} Revoke an API token by ID. # Verify Token Source: https://docs.agentpowers.ai/api-reference/auth/verify-token /openapi.json post /v1/auth/verify Verify Clerk JWT and return user info. # Create Portal Session Source: https://docs.agentpowers.ai/api-reference/billing/create-portal-session /openapi.json post /v1/billing/portal # Create Checkout Source: https://docs.agentpowers.ai/api-reference/checkout/create-checkout /openapi.json post /v1/checkout Initiate a purchase (creates Stripe Checkout session). # Get Claim Status Source: https://docs.agentpowers.ai/api-reference/claims/get-claim-status /openapi.json get /v1/claims/{claim_id} Check claim status. Users can only view their own claims. # Get Detail Source: https://docs.agentpowers.ai/api-reference/detail/get-detail /openapi.json get /v1/detail/{slug} Get full detail for a skill by slug. Tries native DB first, then external sources. Test-user authored skills are hidden from public callers but visible to their own author. # Download External Skill Source: https://docs.agentpowers.ai/api-reference/external/download-external-skill /openapi.json get /v1/external/{source}/{slug}/download Fetch, security-scan and store an external skill; return a signed URL. The archive comes from the source's download API (never its web page). Only bytes that received a PASS or WARN verdict are stored and signed; a BLOCK verdict is refused with 403, and an incomplete scan with 503. # Record Installation Source: https://docs.agentpowers.ai/api-reference/installations/record-installation /openapi.json post /v1/installations Record a skill installation for abuse tracking. - Authenticated + agentpowers: full record with skill_id + purchase_id - Authenticated + external: record with skill_id = NULL - Unauthenticated + external: silent no-op (200, not tracked) - Unauthenticated + agentpowers: record anonymously (no user_id) # Authorize Source: https://docs.agentpowers.ai/api-reference/oauth/authorize /openapi.json get /v1/oauth/authorize Start OAuth authorization — validate params, redirect to Clerk login. # Oauth Callback Source: https://docs.agentpowers.ai/api-reference/oauth/oauth-callback /openapi.json get /v1/oauth/callback Handle return from Clerk login — generate auth code and redirect. # Register Client Source: https://docs.agentpowers.ai/api-reference/oauth/register-client /openapi.json post /v1/oauth/register Register a new OAuth client dynamically (rate-limited). # Token Exchange Source: https://docs.agentpowers.ai/api-reference/oauth/token-exchange /openapi.json post /v1/oauth/token Exchange authorization code or refresh token for access tokens. # Well Known Oauth Source: https://docs.agentpowers.ai/api-reference/oauth/well-known-oauth /openapi.json get /.well-known/oauth-authorization-server RFC 8414 OAuth Authorization Server Metadata. # Confirm Purchase By Session Source: https://docs.agentpowers.ai/api-reference/purchases/confirm-purchase-by-session /openapi.json get /v1/purchases/confirm Look up purchase status by Stripe session ID (post-redirect). No auth required — Stripe session IDs are unguessable (64+ char random strings) and act as bearer tokens for the specific checkout. This allows the Astro SSR success page to confirm purchases without a Clerk JWT. # Download Purchased Skill Source: https://docs.agentpowers.ai/api-reference/purchases/download-purchased-skill /openapi.json get /v1/purchases/download Return a download URL for a completed purchase by Stripe session ID. No auth required — session_id is an unguessable bearer token. Returns 403 if the webhook has not yet fired (status != 'completed'). # Get Purchase Status Source: https://docs.agentpowers.ai/api-reference/purchases/get-purchase-status /openapi.json get /v1/purchases/{purchase_id}/status Poll purchase status. # List My Purchases Source: https://docs.agentpowers.ai/api-reference/purchases/list-my-purchases /openapi.json get /v1/purchases List current user's purchases. # Redeem License Source: https://docs.agentpowers.ai/api-reference/purchases/redeem-license /openapi.json post /v1/purchases/redeem Redeem a license code to link purchase to account. # Regenerate License Code Source: https://docs.agentpowers.ai/api-reference/purchases/regenerate-license-code /openapi.json post /v1/purchases/{slug}/regenerate-code Regenerate license code for a purchased skill. # Create Review Source: https://docs.agentpowers.ai/api-reference/reviews/create-review /openapi.json post /v1/skills/{slug}/reviews Submit a review for a skill. One review per user per skill. # List Reviews Source: https://docs.agentpowers.ai/api-reference/reviews/list-reviews /openapi.json get /v1/skills/{slug}/reviews List reviews for a skill. Public, but test-user skills 404 to non-owners (prevents using this endpoint as an existence oracle for qa-sandbox-* slugs). # Get Categories Source: https://docs.agentpowers.ai/api-reference/search/get-categories /openapi.json get /v1/categories Get all canonical categories with live skill counts. Served from a stale-while-revalidate cache (see ``_get_categories_cached``) so a flood of /v1/categories cannot pin the anyio threadpool on the 3-4s aggregation and starve the liveness /health check (issue #203). # Get Category Detail Source: https://docs.agentpowers.ai/api-reference/search/get-category-detail /openapi.json get /v1/categories/{slug} Get single category with full metadata and skills. # Search Marketplace Source: https://docs.agentpowers.ai/api-reference/search/search-marketplace /openapi.json get /v1/search Full-text search across skills and agents. Returns sectioned results. Sheds load past a process-wide concurrency cap so a request flood cannot starve the event loop and wedge /health into the liveness-watchdog crash loop seen in the 2026-06-16 outage (issue #197). Per-IP rate limiting still applies first via the @limiter decorator; this is the last-resort backstop. Deliberately does NOT depend on the shared request connection: all of search's DB work runs off the event loop on dedicated worker connections (issue #203, see _run_search_db), so the loop stays free to answer /health under load. # Get Scan Job Source: https://docs.agentpowers.ai/api-reference/security/get-scan-job /openapi.json get /v1/security/jobs/{job_id} Get the status of a scan job (authenticated). # Get Scan Results Source: https://docs.agentpowers.ai/api-reference/security/get-scan-results /openapi.json get /v1/security/results/{slug} Get stored security scan results for a skill. # List Scan Jobs Source: https://docs.agentpowers.ai/api-reference/security/list-scan-jobs /openapi.json get /v1/security/jobs List scan jobs for a slug, most recent first (authenticated). # Get Earnings Source: https://docs.agentpowers.ai/api-reference/sellers/get-earnings /openapi.json get /v1/sellers/earnings Get earnings summary for the current seller. # Get Next Payout Source: https://docs.agentpowers.ai/api-reference/sellers/get-next-payout /openapi.json get /v1/sellers/next-payout Next scheduled Stripe payout for the seller (G2 -- issue #140). Synthesized from Account.settings.payouts.schedule (interval + anchor + delay_days) + current Balance.available. Returns 404 when there's no Connect account, the schedule is manual or unknown, or Stripe is unreachable -- the frontend treats 404 as "hide the row." Returns 200 with expected_date=null when the balance is zero so the row hides gracefully without a 404 round-trip. # Get Revenue Breakdown Source: https://docs.agentpowers.ai/api-reference/sellers/get-revenue-breakdown /openapi.json get /v1/sellers/revenue/breakdown Revenue breakdown per skill for the current seller. # Get Seller Activity Source: https://docs.agentpowers.ai/api-reference/sellers/get-seller-activity /openapi.json get /v1/sellers/activity Activity feed combining installs and purchases for seller's skills. # Get Seller Profile Source: https://docs.agentpowers.ai/api-reference/sellers/get-seller-profile /openapi.json get /v1/sellers/{slug} Get public seller profile by display_name_slug. # Get Seller Public Skills Source: https://docs.agentpowers.ai/api-reference/sellers/get-seller-public-skills /openapi.json get /v1/sellers/{slug}/skills Get a seller's public skills list. # Get Seller Revenue Source: https://docs.agentpowers.ai/api-reference/sellers/get-seller-revenue /openapi.json get /v1/sellers/revenue Daily revenue timeseries for the past N days. # Get Seller Status Source: https://docs.agentpowers.ai/api-reference/sellers/get-seller-status /openapi.json get /v1/sellers/status Check if current user is an onboarded seller (read-only, no side effects). # Initiate Connect Onboarding Source: https://docs.agentpowers.ai/api-reference/sellers/initiate-connect-onboarding /openapi.json post /v1/sellers/connect Create Stripe Connect account and return onboarding URL. # List My Sales Source: https://docs.agentpowers.ai/api-reference/sellers/list-my-sales /openapi.json get /v1/sellers/sales List recent sales for the current seller's skills. # List My Skills Source: https://docs.agentpowers.ai/api-reference/sellers/list-my-skills /openapi.json get /v1/sellers/skills List current seller's published skills with revenue data. # List Payouts Source: https://docs.agentpowers.ai/api-reference/sellers/list-payouts /openapi.json get /v1/sellers/payouts List payout history for the current seller via Stripe Connect. # List Sellers Source: https://docs.agentpowers.ai/api-reference/sellers/list-sellers /openapi.json get /v1/sellers List all sellers with published skills. # Claim Skill Source: https://docs.agentpowers.ai/api-reference/skills/claim-skill /openapi.json post /v1/skills/{slug}/claim Submit an ownership claim for a ClawHub skill. # Create Skill Version Source: https://docs.agentpowers.ai/api-reference/skills/create-skill-version /openapi.json post /v1/skills/{slug}/versions Create a new pending version of an existing skill. Used by the NPX CLI update flow (metadata PATCH, then this, then upload). Same rules as a version-carrying PATCH: author only, one pending version per skill (409 SKILL_VERSION_PENDING), an explicit version must be valid semver greater than the current one (422). Defaults to a patch bump. Upload the package next with ``POST /v1/skills/{slug}/upload``. # Dismiss Failed Version Notice Source: https://docs.agentpowers.ai/api-reference/skills/dismiss-failed-version-notice /openapi.json post /v1/skills/{slug}/failed-versions/{version_id}/dismiss Dismiss the notice for one failed version of your skill. Author only. Per version and stored server-side. If that version fails again later, the notice shows again. # Download Skill Source: https://docs.agentpowers.ai/api-reference/skills/download-skill /openapi.json get /v1/skills/{slug}/download Download a skill package. Free skills are public. Paid require purchase. # Download Skill Zip Source: https://docs.agentpowers.ai/api-reference/skills/download-skill-zip /openapi.json get /v1/skills/{slug}/download/zip Download a skill as ZIP for claude.ai web users. # Get Failed Version Notices Source: https://docs.agentpowers.ai/api-reference/skills/get-failed-version-notices /openapi.json get /v1/skills/{slug}/failed-versions Failed (never scanned) versions of your skill, newest first. Author only (admins may read). A version fails when its package was never uploaded or its scan could not complete; it is not a security verdict. # Get Skill Source: https://docs.agentpowers.ai/api-reference/skills/get-skill /openapi.json get /v1/skills/{slug} Get skill details by slug. Test-user authored skills are hidden from public callers but visible to their own author when authenticated. # Get Skills Source: https://docs.agentpowers.ai/api-reference/skills/get-skills /openapi.json get /v1/skills List published skills with optional filtering and sorting. # Publish Skill Source: https://docs.agentpowers.ai/api-reference/skills/publish-skill /openapi.json post /v1/skills Publish a new skill. # Republish Skill Source: https://docs.agentpowers.ai/api-reference/skills/republish-skill /openapi.json post /v1/skills/{slug}/republish Republish a previously archived skill. Owner-only. # Track View Source: https://docs.agentpowers.ai/api-reference/skills/track-view /openapi.json post /v1/skills/{slug}/view Record a view for a skill. Unauthenticated, rate-limited. # Unpublish Skill Source: https://docs.agentpowers.ai/api-reference/skills/unpublish-skill /openapi.json post /v1/skills/{slug}/unpublish Unpublish (archive) a skill. Owner-only. Reversible via republish. # Update Skill Source: https://docs.agentpowers.ai/api-reference/skills/update-skill /openapi.json patch /v1/skills/{slug} Update an existing skill — creates a new version. # Upload Skill Package Source: https://docs.agentpowers.ai/api-reference/skills/upload-skill-package /openapi.json post /v1/skills/{slug}/upload Upload a skill package file to R2 storage. Only the skill author can upload packages. Max 10 MB. When version is specified, uploads to the version-specific storage key. Send the package in the multipart field `file` (or `package`, not both). # Health Check Source: https://docs.agentpowers.ai/api-reference/system/health-check /openapi.json get /health Liveness/health check for Railway monitoring and the in-container watchdog. Declared ``async`` (not ``def``) so it is served directly on the event loop and never needs an anyio threadpool slot. A flood of slow *synchronous* endpoints (e.g. /v1/categories' 3-4s aggregation) can pin all 40 threadpool threads; a sync /health would queue behind them, miss the watchdog's consecutive liveness checks, and trip the hard-exit crash loop (issue #203). Returning a static payload off the threadpool keeps liveness answerable under that load. # Cancel Account Deletion Source: https://docs.agentpowers.ai/api-reference/users/cancel-account-deletion /openapi.json post /v1/users/me/cancel-deletion Cancel a pending account deletion. # Delete Account Source: https://docs.agentpowers.ai/api-reference/users/delete-account /openapi.json delete /v1/users/me Request account deletion with 30-day grace period. Requires confirmation string "delete my account". Returns 409 if blockers exist, 403 if account is held. # Get Notification Preferences Source: https://docs.agentpowers.ai/api-reference/users/get-notification-preferences /openapi.json get /v1/users/notifications Return current notification preferences. Defaults if no row exists. # Get Profile Source: https://docs.agentpowers.ai/api-reference/users/get-profile /openapi.json get /v1/users/profile Return current user's profile. # Update Notification Preferences Source: https://docs.agentpowers.ai/api-reference/users/update-notification-preferences /openapi.json patch /v1/users/notifications Upsert notification preferences. Only updates provided fields. # Update Profile Source: https://docs.agentpowers.ai/api-reference/users/update-profile /openapi.json patch /v1/users/profile Update current user's profile. When display_name changes, recomputes display_name_slug via update_slug(). # Agent Skills Index Source: https://docs.agentpowers.ai/api-reference/well-known/agent-skills-index /openapi.json get /.well-known/agent-skills/index.json # Api Catalog Source: https://docs.agentpowers.ai/api-reference/well-known/api-catalog /openapi.json get /.well-known/api-catalog # Mcp Server Card Source: https://docs.agentpowers.ai/api-reference/well-known/mcp-server-card /openapi.json get /.well-known/mcp/server-card.json SEP-1649 MCP server card for the AgentPowers marketplace MCP server. # Oauth Protected Resource Source: https://docs.agentpowers.ai/api-reference/well-known/oauth-protected-resource /openapi.json get /.well-known/oauth-protected-resource # Authentication Source: https://docs.agentpowers.ai/authentication How authentication works in AgentPowers ## Overview AgentPowers uses [Clerk](https://clerk.com) for authentication. All authenticated API requests require a Bearer token in the `Authorization` header. ## API Authentication Include a Bearer token in the `Authorization` header: ```bash theme={null} curl -H "Authorization: Bearer YOUR_TOKEN" \ https://api.agentpowers.ai/v1/purchases ``` ## CLI Authentication The CLI handles authentication automatically: ```bash theme={null} ap login ``` This opens your browser for OAuth sign-in via Clerk. After authenticating, the CLI stores a long-lived token locally with restricted file permissions. ```bash theme={null} ap whoami # Check current session ap logout # Clear stored token ``` ### CLI Token Lifecycle | Step | What happens | | - | - | | `ap login` | Browser OAuth via Clerk, long-lived token stored locally | | API calls | CLI sends token automatically on every request | | `ap logout` | Token revoked server-side, local credentials deleted | | Token expiry | After 90 days, re-run `ap login` to get a new token | | New login | Creating a new token automatically revokes the previous one | ## Plugin Authentication The MCP plugin shares the same auth token stored by the CLI. Log in once with the CLI and the plugin picks it up automatically. ## Public vs Authenticated Endpoints | Endpoint | Auth Required | | - | :-: | | `GET /v1/skills` | No | | `GET /v1/skills/{slug}` | No | | `GET /v1/search` | No | | `GET /v1/categories` | No | | `GET /v1/detail/{slug}` | No | | `GET /v1/skills/{slug}/download` (free) | No | | `GET /v1/skills/{slug}/download` (paid) | Yes | | `POST /v1/skills` | Yes | | `POST /v1/checkout` | Yes | | `GET /v1/purchases` | Yes | | `GET /v1/purchases/confirm` | Yes | | `POST /v1/installations` | Optional (anonymous external installs are silently ignored) | | `POST /v1/skills/{slug}/reviews` | Yes | | `GET /v1/skills/{slug}/reviews` | No | | `GET /v1/users/profile` | Yes | | `PATCH /v1/users/profile` | Yes | | `GET /v1/sellers/status` | Yes | | `POST /v1/sellers/connect` | Yes | | `GET /v1/sellers/earnings` | Yes | | `GET /v1/sellers/skills` | Yes | | `GET /v1/sellers/sales` | Yes | | `GET /v1/sellers/revenue` | Yes | | `GET /v1/sellers/revenue/breakdown` | Yes | | `GET /v1/sellers/activity` | Yes | | `GET /v1/sellers/{slug}` | No | | `GET /v1/sellers/{slug}/skills` | No | ## Rate Limits | Tier | Limit | | - | - | | Public reads | 60 requests/minute | | Authenticated reads | 10 requests/minute | | Write operations | 20 requests/minute | Rate limits are per IP address for all requests. Exceeding the limit returns `429 Too Many Requests`. ## Need Help? Reach us at **[support@agentpowers.ai](mailto:support@agentpowers.ai)** for account issues, billing questions, or technical help. Join the **AgentPowers Discord** to get help from the team and other creators in real time. # Account Deletion Source: https://docs.agentpowers.ai/guides/account-deletion How to delete your AgentPowers account and what happens to your data ## Overview Account deletion is a **30-day soft-delete**. When you request deletion, your account is scheduled to be permanently deleted 30 days later. You can cancel at any time during this window. ## Requesting Deletion ### Via the Dashboard 1. Go to **Dashboard → Settings → Account** 2. Scroll to the **Danger Zone** section 3. Click **Delete Account** 4. Type `delete my account` to confirm 5. Click **Schedule Deletion** Your account is now scheduled. You will receive a confirmation email. ### Via the API ```bash theme={null} curl -X DELETE "https://api.agentpowers.ai/v1/users/me" \ -H "Authorization: Bearer TOKEN" \ -H "Content-Type: application/json" \ -d '{"confirmation": "delete my account"}' ``` Returns: ```json theme={null} { "message": "Account deletion scheduled.", "scheduled_at": "2026-04-11T00:00:00Z" } ``` ## Cancelling Deletion Sign in to your account at any point before the deletion date to automatically cancel the request, or cancel explicitly: ### Cancel via the Dashboard Return to **Settings → Account** and click **Cancel Deletion**. ### Cancel via the API ```bash theme={null} curl -X POST "https://api.agentpowers.ai/v1/users/me/cancel-deletion" \ -H "Authorization: Bearer TOKEN" ``` Signing in before the deletion date automatically cancels the request — you don't need to do anything extra. ## What Happens to Your Data ### During the 30-day grace period * Your account is hidden from the marketplace (profile, skills not listed) * Existing buyers retain access to skills they purchased * You cannot publish new skills or submit reviews ### At deletion (day 30) | Data | Outcome | | - | - | | Profile (name, bio, avatar) | Anonymized | | Email address | Removed | | Published skills | Archived (buyers retain access) | | Purchase records | Retained for 7 years (IRS compliance) | | Stripe seller account | Not deleted — managed via Stripe Connect | | Pending payouts | Processed before purge | Financial records (purchases, payouts, Stripe IDs) are retained for 7 years to meet legal and tax requirements. All personal identifiers are removed from these records. ## Blockers Deletion may be delayed if: * You have **pending payouts** that haven't cleared yet — wait for the payout to process * You have **in-progress purchases** — wait for checkout to complete The API returns a `409 Conflict` with a detail message describing the blocker. Resolve the blocker and retry. ## Email Reminders You will receive: 1. **Confirmation email** immediately after scheduling 2. **Reminder email** 3 days before the deletion date If you don't receive these emails, check your spam folder or contact support. ## Frequently Asked Questions **Can I recover my account after 30 days?** No. Once the grace period passes and your account is purged, recovery is not possible. **What happens to skills I published?** Your skills are archived and hidden from the marketplace. Buyers who already purchased them retain download access, but the skills cannot be discovered or purchased by new users. **What happens to my Stripe Connect account?** Your Stripe Connect account is not automatically deleted. Log in to Stripe to manage it directly. Pending payouts are processed before your account data is purged. **Can I create a new account with the same email after deletion?** Yes, once your account is fully purged you can sign up again with the same email address. ## Need Help? Reach us at **[support@agentpowers.ai](mailto:support@agentpowers.ai)** for account issues, billing questions, or technical help. Join the **AgentPowers Discord** to get help from the team and other creators in real time. # Agents vs Skills Source: https://docs.agentpowers.ai/guides/agents-vs-skills Understanding the difference between skills and agents on AgentPowers ## What Are Skills? Skills are directories placed in `~/.claude/skills/` containing a `SKILL.md` file with YAML frontmatter. They extend Claude's capabilities with specialized instructions, templates, and workflows. ```text theme={null} my-skill/ SKILL.md # Required: frontmatter with name, description helpers.py # Optional supporting files ``` ## What Are Agents? Agents are individual `.md` files placed in `~/.claude/agents/` with YAML frontmatter that declares metadata and tool access. They act as autonomous personas that can use specific tools and follow defined instructions. ```markdown theme={null} --- name: code-reviewer description: Reviews code for quality, security, and best practices tools: Read, Grep, Glob model: claude-sonnet-4-6 --- Review the provided code for... ``` ### Key Differences | Aspect | Skill | Agent | | - | - | - | | **Format** | Directory with `SKILL.md` | Single `.md` file with YAML frontmatter | | **Install location** | `~/.claude/skills/` | `~/.claude/agents/` | | **Tool access** | Inherits from session | Declares specific tools in frontmatter | | **Security surface** | Lower -- instructions only | Higher -- tool access declarations | | **claude.ai support** | Yes (ZIP upload) | No (CLI/Cowork only) | ## API Endpoints AgentPowers provides two ways to interact with agents via the API: ### Unified Endpoints (Both Types) The `/v1/skills` endpoints work for **both** skills and agents. Use the optional `?type=` filter to narrow results: ```bash theme={null} # List all items (skills + agents) curl "https://api.agentpowers.ai/v1/skills" # List only agents curl "https://api.agentpowers.ai/v1/skills?type=agent" # List only skills curl "https://api.agentpowers.ai/v1/skills?type=skill" # Search with type filter curl "https://api.agentpowers.ai/v1/search?q=code+review&type=agent" ``` ### Agent-Specific Endpoints The `/v1/agents` namespace enforces `type=agent` -- it will return 404 for items that are skills: ```bash theme={null} # List agents only curl "https://api.agentpowers.ai/v1/agents" # Get agent details (404 if it's a skill) curl "https://api.agentpowers.ai/v1/agents/code-reviewer" # Publish an agent (type is forced to "agent") curl -X POST "https://api.agentpowers.ai/v1/agents" \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{"slug": "code-reviewer", "title": "Code Reviewer", ...}' ``` ## CLI Usage The CLI handles both types transparently: ```bash theme={null} # Search for agents ap search "code review" --type agent # Install an agent (auto-detects type from API) ap install code-reviewer # View details (type shown in output) ap detail code-reviewer ``` ## Security Pipeline Agents receive **additional security scrutiny** beyond what skills get: 1. **Layers 1-8** (shared): File type validation, pattern scanning, ClamAV, Snyk, GuardDog, Socket.dev, VirusTotal, AI review 2. **Layer 9** (agent-only): Tool access audit, instruction analysis for social engineering or prompt injection, trust level scoring The trust level (`low`, `medium`, `high`) indicates the assessed risk based on which tools the agent requests access to. ## Categories Agents and skills share the same 7 canonical categories: | Category | Description | | - | - | | `marketing` | Content marketing, social media, SEO | | `development` | Code review, testing, refactoring, and generation | | `productivity` | Workflow orchestration, task management, automation | | `design` | UI/UX, visual design, prototyping | | `sales` | Outreach, CRM, lead generation | | `data` | Analytics, data science, ML | | `security` | Auditing, scanning, compliance | Categories are assigned automatically based on the skill's description and content. ## Publishing Agents Publishing an agent works the same as publishing a skill: ```bash theme={null} # Publish via unified endpoint (auto-detects type from AGENT.md frontmatter) ap publish ./my-agent # Or use the agent-specific API endpoint curl -X POST "https://api.agentpowers.ai/v1/agents" \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{"slug": "my-agent", "title": "My Agent", "description": "...", "type": "agent"}' ``` The CLI auto-detects whether a package is a skill or agent by checking for `SKILL.md` vs `.md` files with agent frontmatter. ## Need Help? Reach us at **[support@agentpowers.ai](mailto:support@agentpowers.ai)** for account issues, billing questions, or technical help. Join the **AgentPowers Discord** to get help from the team and other creators in real time. # Buying Skills Source: https://docs.agentpowers.ai/guides/buying-skills How to discover, purchase, and install skills from the marketplace ## Browsing the Marketplace ### Search Find skills by keyword: ```bash theme={null} ap search "python testing" ``` Or via the API: ```bash theme={null} curl "https://api.agentpowers.ai/v1/search?q=python+testing" ``` The search endpoint returns **sectioned results** -- AgentPowers native skills first, then external sources (like ClawHub): ```json theme={null} { "agentpowers": { "items": [ { "slug": "py-test-pro", "title": "Python Test Pro", "price_cents": 500, "security_status": "pass", "download_count": 120 } ], "total": 1, "limit": 20, "offset": 0 }, "clawhub": { "items": [ { "slug": "pytest-helper", "title": "Pytest Helper", "source": "clawhub", "source_url": "https://clawhub.ai/skills/pytest-helper", "source_installs": 89, "ap_security_status": "pass" } ], "total": 1 } } ``` ### Skill Detail Get full details for any skill (native or external) via the unified detail endpoint: ```bash theme={null} curl "https://api.agentpowers.ai/v1/detail/my-skill" ``` Add `?source=clawhub` to target a specific source: ```bash theme={null} curl "https://api.agentpowers.ai/v1/detail/my-skill?source=clawhub" ``` ### Filter and Sort The `GET /v1/skills` endpoint supports filtering and sorting: | Parameter | Values | Description | | - | - | - | | `category` | Any category slug | Filter by category | | `type` | `skill`, `agent` | Filter by type | | `sort` | `newest`, `price_asc`, `price_desc`, `downloads` | Sort order | | `price_filter` | `free`, `paid` | Filter by price | | `security_status` | `pass`, `warn` | Filter by security status | ```bash theme={null} curl "https://api.agentpowers.ai/v1/search?q=&sort=downloads&price_filter=free&type=skill" ``` ### Categories There are 7 canonical categories. All always appear in the response even when empty: | Slug | Name | Icon | | - | - | - | | `marketing` | Marketing | megaphone | | `development` | Development | code | | `productivity` | Productivity | zap | | `design` | Design | palette | | `sales` | Sales | trending-up | | `data` | Data | bar-chart | | `security` | Security | shield | ```bash theme={null} # List all categories with live skill counts curl "https://api.agentpowers.ai/v1/categories" # Get a specific category with its skills curl "https://api.agentpowers.ai/v1/categories/development" ``` Each category object includes `name`, `description`, `icon`, `sample_keywords`, and `count`. ## Installing Free Skills Free skills require no authentication: ```bash theme={null} ap install skill-slug ``` The CLI downloads and extracts the package to `~/.claude/skills/skill-slug/`. ## Purchasing Paid Skills 1. Run `ap install paid-skill-slug` 2. The CLI opens Stripe Checkout in your browser 3. Complete payment 4. The skill installs automatically ### Post-Checkout Confirmation After Stripe redirects back, the purchase is confirmed via: ```text theme={null} GET /v1/purchases/confirm?session_id=cs_live_... ``` This endpoint verifies the Stripe session and returns the purchase record with license code. ### Direct Download After checkout is confirmed, the success page shows a **Download files** button. You can also fetch the package directly: ```text theme={null} GET /v1/purchases/download?session_id=cs_live_... ``` Returns `{ url, slug, license_code }` where `url` is an R2 presigned download link (valid for 1 hour) and `license_code` is the purchase license code. No auth header required — the Stripe session ID acts as the bearer token. Returns `403` if the session is not yet paid (e.g., payment is processing or the checkout expired). ### License Codes Each purchase generates a license code (`XXXXXXXX-XXXXXXXX-XXXXXXXX` format, 26 characters). Use it to install on another machine: ```bash theme={null} ap install paid-skill --code A1B2C3D4-E5F6A7B8-C9D0E1F2 ``` Or redeem via the API: ```bash theme={null} curl -X POST "https://api.agentpowers.ai/v1/purchases/redeem" \ -H "Authorization: Bearer TOKEN" \ -H "Content-Type: application/json" \ -d '{"license_code": "A1B2C3D4-E5F6A7B8-C9D0E1F2"}' ``` ## Checking Purchases View your purchase history: ```bash theme={null} curl -H "Authorization: Bearer TOKEN" \ "https://api.agentpowers.ai/v1/purchases" ``` ## Updating Installed Skills When new versions are available, update your installed skills: ```bash theme={null} ap update my-skill # Update a single skill ap update # Check all installed skills for updates ap update --force # Skip the confirmation prompt ``` The update command works for **both native AgentPowers skills and external skills** (e.g., ClawHub): 1. Compares your installed version against the latest version on the API 2. Downloads and installs the new version if one is available 3. Updates the version pin For external skills, updates go through the same sandboxed security pipeline as the initial install -- the new version is downloaded to a sandbox, scanned, and only installed if it passes. **Locally edited skills are protected.** If you've modified an installed skill's files, `ap update` detects the change via content hash and prompts before overwriting: ```text theme={null} # When a newer version is available: my-skill has been locally edited. Update my-skill anyway? Local changes will be overwritten [y/N]: # When already at the latest version: my-skill has been locally edited. Restore my-skill to original? Local changes will be overwritten [y/N]: ``` The default is **No** -- pressing Enter skips the update. Use `--force` to bypass the prompt entirely. This applies to both native and external skills. When running `ap update` (all), each edited skill with an available update is prompted individually during the download phase, giving you per-skill control over which edits to keep. **Paid skills update for free.** If you purchased a skill, all future versions are included -- no additional payment required. ### Checking Edit Status The `ap search` command shows whether installed skills have been locally modified: * **Yes** (green) -- installed, unmodified * **Edited** (yellow) -- installed, locally modified (hash mismatch) ## Reviews ### Viewing Reviews See what other users think before you buy or install: ```bash theme={null} curl "https://api.agentpowers.ai/v1/skills/my-skill/reviews" ``` Returns a list of reviews with individual ratings and an overall average: ```json theme={null} { "items": [ { "id": "review-1", "rating": 5, "text": "Excellent skill, saved me hours of work.", "user_id": "user_abc", "created_at": "2026-03-01T12:00:00Z" } ], "total": 1, "skill_slug": "my-skill", "average_rating": 5.0 } ``` The `GET /v1/detail/{slug}` endpoint also includes `rating_average` and `rating_count` fields, so you can see the overall rating without fetching individual reviews. The CLI shows star ratings in `ap detail`: ```bash theme={null} ap detail my-skill # Rating: ★★★★★ (4.8 avg, 23 reviews) ``` ### Leaving a Review After installing or purchasing a skill, leave a review (requires authentication): ```bash theme={null} curl -X POST "https://api.agentpowers.ai/v1/skills/my-skill/reviews" \ -H "Authorization: Bearer TOKEN" \ -H "Content-Type: application/json" \ -d '{"rating": 5, "text": "Great skill!"}' ``` * **Rating** is required (1-5 stars) * **Text** is optional but encouraged * You cannot review your own skills (returns 400) * One review per user per skill (duplicate returns 409) * Archived skills cannot be reviewed (returns 404) ## Managing Billing After your first purchase, you can manage payment methods, view invoices, and update billing details through the Stripe Customer Portal. ### Via the Dashboard Navigate to **Dashboard > Settings > Billing** and click **Manage in Stripe**. This opens the Stripe Customer Portal where you can: * Update or remove payment methods * View and download invoices * Update billing information ### Via the API Create a portal session programmatically: ```bash theme={null} curl -X POST "https://api.agentpowers.ai/v1/billing/portal" \ -H "Authorization: Bearer TOKEN" ``` Returns a redirect URL: ```json theme={null} { "url": "https://billing.stripe.com/p/session/..." } ``` The billing portal is only available after your first purchase. If you haven't purchased anything yet, the endpoint returns a 404. ## ZIP Downloads (claude.ai Web) For claude.ai web users who cannot use the CLI, skills are available as ZIP downloads: ```text theme={null} GET /v1/skills/{slug}/download/zip ``` This returns the package as a ZIP file with `Content-Disposition: attachment`. ## Need Help? Reach us at **[support@agentpowers.ai](mailto:support@agentpowers.ai)** for account issues, billing questions, or technical help. Join the **AgentPowers Discord** to get help from the team and other creators in real time. # Claude Desktop Extension Source: https://docs.agentpowers.ai/guides/claude-extension Browse, purchase, and install skills directly in Claude Desktop ## Overview The AgentPowers Claude Desktop extension brings the full marketplace experience into Claude Desktop. Browse skills, read reviews, purchase with Stripe, and install to any supported platform — all without leaving your conversation. ## Installation The recommended way to set up the AgentPowers extension is via the CLI setup command, which auto-configures MCP for all detected AI tools (including Claude Desktop): ```bash theme={null} npx @agentpowers/cli setup ``` The `.mcpb` bundle install method is deprecated in favor of `npx @agentpowers/cli setup`. 1. Download `claude-extension.mcpb` from the [latest release](https://github.com/AgentPowers-AI/claude-extension/releases) 2. Drag the file into Claude Desktop, or double-click it 3. Click **Install** when prompted No terminal or manual configuration required with the setup command. ## Usage After installation, use natural language to interact with the marketplace: * "Search AgentPowers for productivity skills" * "Show me details and reviews for the code-review skill" * "Buy the premium debugging skill" * "Install my purchased skill for Kiro" * "What skills do I have installed?" ## Available tools The extension provides a comprehensive set of tools: ### Discovery | Tool | Description | | - | - | | `search_marketplace` | Search by keyword, category, or type | | `search_skills` | Alias for `search_marketplace` | | `get_skill_details` | Full details including description and pricing | | `get_categories` | Browse available skill categories | | `get_seller_profile` | View a seller's profile and published skills | | `get_skill_reviews` | Read reviews and ratings | | `get_security_results` | View security scan results | | `get_platforms` | List supported installation platforms | | `get_marketplace_snapshot` | API and account health snapshot | ### Account | Tool | Description | | - | - | | `login_account` | Authenticate with AgentPowers | | `logout_account` | Sign out | | `whoami_account` | Check current login status | | `get_account_profile` | View your profile | ### Purchasing | Tool | Description | | - | - | | `list_purchases` | View your purchase history | | `start_checkout` | Begin a Stripe checkout for a paid skill | | `check_purchase_status` | Check payment status and get license code | | `confirm_purchase_session` | Confirm purchase by Stripe session ID | | `download_purchased_skill` | Download a purchased skill package | ### Install and Manage | Tool | Description | | - | - | | `install_skill` | Install a free or purchased skill | | `install_purchased_skill` | Install using a license code | | `check_installed` | List installed skills with versions | | `uninstall_skill` | Remove an installed skill | | `check_for_updates` | Check for newer versions | ### Extension | Tool | Description | | - | - | | `check_extension_version` | Check if a newer version of this extension is available on npm | | `get_openapi_summary` | Summarize the AgentPowers OpenAPI spec | The extension also exposes MCP resources Claude can read proactively: * `agentpowers://marketplace/snapshot` — Live API health, skill count, and account status * `agentpowers://account/purchases` — Your current purchase list (requires auth) * `agentpowers://docs/openapi-summary` — Summary of the AgentPowers OpenAPI spec * `agentpowers://extension/version` — Current extension version and update availability ## Supported platforms The extension can install skills to any supported AI tool: * Claude Code, Claude Desktop * Codex * Gemini CLI * Kiro * And more via the `~/.{tool}/skills/` convention ## Source [AgentPowers-AI/claude-extension](https://github.com/AgentPowers-AI/claude-extension) on GitHub. ## Need Help? Reach us at **[support@agentpowers.ai](mailto:support@agentpowers.ai)** for account issues, billing questions, or technical help. Join the **AgentPowers Discord** to get help from the team and other creators in real time. # CLI Usage Source: https://docs.agentpowers.ai/guides/cli-usage Complete reference for the `ap` command-line tool ## Installation ```bash theme={null} npx @agentpowers/cli setup ``` Auto-configures MCP for all detected AI tools. Also provides `search`, `install`, `login`, and `update` commands. Requires Node.js 18+. ```bash theme={null} claude mcp add agentpowers -- npx -y @agentpowers/mcp-server ``` Adds AgentPowers as an MCP server in Claude Code. ```bash theme={null} pip install agentpowers ``` Installs the `ap` CLI command globally. Still supported but npx is preferred. Verify the installation: ```bash theme={null} ap --version ``` ## Authentication ```bash theme={null} ap login # Opens browser for OAuth sign-in ap whoami # Check current session ap logout # Clear stored token ``` The CLI uses long-lived tokens stored locally with restricted permissions, so you rarely need to re-login. ## Profile Management Before you can publish a skill, you need a display name. Set it with `ap profile --set`: ```bash theme={null} ap profile # View your current profile ap profile --set # Interactively set your display name and bio ``` **View** shows your display name, email, bio, and join date. If no display name is set, a hint is shown. **Set** prompts for display name and bio. Press `Ctrl-C` to cancel. `ap publish` will automatically prompt you to set a display name inline if you haven't done so yet — no need to run `ap profile --set` separately. ## Searching ```bash theme={null} ap search "code review" ``` Returns a unified table with columns: Slug, Title, Source, Type, Price, Security, Installed. Results are sectioned by source -- AgentPowers native skills appear first, followed by external sources like ClawHub. Install counts and star ratings are shown inline in the Title column when available. The Installed column shows **Yes** (green), **Edited** (yellow for locally modified skills), or **No**. Options: ```bash theme={null} ap search "testing" --limit 10 ap search "devops" --category development ap search "agent" --type agent ``` ## Skill Detail View full details for any skill: ```bash theme={null} ap detail my-skill ``` The detail view includes star ratings when available (e.g., `Rating: ★★★★☆ (4.2 avg, 15 reviews)`). Options: | Flag | Description | | - | - | | `--source`, `-s` | Target a specific source (e.g., `clawhub`) | | `--scan` | Download and run the full security pipeline, then display per-finding results | ```bash theme={null} ap detail ontology --source clawhub ap detail ontology --scan # Deep security scan ``` ## Installing Skills ### Free Skills ```bash theme={null} ap install my-awesome-skill --scope user ``` Downloads and extracts to `~/.claude/skills/my-awesome-skill/`. Pass `--scope project` instead to land it under the current project's `.claude/skills/`. ### Paid Skills ```bash theme={null} ap install premium-agent ``` Opens Stripe Checkout in your browser. After payment, the skill installs automatically. ### License Redemption Use a license code to install on another machine: ```bash theme={null} ap install premium-agent --code XXXXXXXX-XXXXXXXX-XXXXXXXX ``` ### External Skills Install skills from external sources like ClawHub: ```bash theme={null} ap install ontology --source clawhub ``` External skills are downloaded to a sandbox, hashed, scanned through the full security pipeline, and only installed if they pass. See the [External Skills guide](/guides/external-skills) for details. ### Install Scope Every `ap install` requires an explicit install scope — there is no default. ```bash theme={null} ap install my-skill --scope user # → ~/.claude/skills/my-skill/ (available everywhere) ap install my-skill --scope project # → ./.claude/skills/my-skill/ (only this project) ``` * **`--scope user`** — installs to `~/.claude/skills/`. The skill is available in every project you launch Claude Code from. Use this for general-purpose tools. * **`--scope project`** — installs to `/.claude/skills/`. The skill is only available when Claude Code is launched inside this project (or any subdirectory). Commit `.claude/skills//` with your repo to share with your team. If you omit `--scope` in an interactive terminal, the CLI prompts: ```text theme={null} Install scope? [u] user — ~/.claude/skills (available everywhere) [p] project — ./.claude/skills (only this project) > ``` In non-interactive contexts (scripts, CI), omitting `--scope` exits 1 with an actionable error. The legacy `--global` flag still works as an alias for `--scope user`. ### Multi-Tool Install Combine `--scope` with `--for` to install for a different AI tool: ```bash theme={null} ap install my-skill --scope user --for codex # ~/.codex/skills/my-skill/ ap install my-skill --scope project --for claude-code # ./.claude/skills/my-skill/ ap install my-skill --scope user --for agents # ~/.agents/skills/my-skill/ (cross-client) ``` ## Publishing ### 1. Create Your Skill ```text theme={null} my-skill/ SKILL.md # Required: frontmatter with title, description, price ... # Your skill files ``` ### 2. Publish ```bash theme={null} ap login ap publish ./my-skill # Free skill (default) ap publish ./my-skill --price 5.00 # Paid skill at $5.00 ``` The CLI packages your directory as a ZIP, creates the skill record, and uploads the package. Your skill enters the security review pipeline automatically. ### 3. Publish Updates Push new versions of an existing skill: ```bash theme={null} ap publish ./my-skill --bump patch # Default: patch bump ap publish ./my-skill --bump minor # Minor version bump ap publish ./my-skill --bump major # Major version bump ap publish ./my-skill --version 2.0.0 # Explicit version ap publish ./my-skill --changelog "Bug fixes and performance improvements" ap publish ./my-skill --bump patch --price 9.99 # Update version + change price ``` The `--bump` and `--version` flags are mutually exclusive. The previous version stays live while the new version undergoes security review. **Price behavior on updates:** Omitting `--price` preserves the current price. Only pass `--price` when you want to change it. Use `--price 0` to switch a paid skill to free. ## Updating Installed Skills Keep installed skills up to date -- works for both native and external (e.g., ClawHub) skills: ```bash theme={null} ap update # Check all installed skills (native + external) ap update my-skill # Update a single skill ap update --force # Skip confirmation prompt ``` For external skills, updates go through the full sandboxed security pipeline (download → hash → scan → install), the same as the initial install. Locally edited skills prompt before overwriting (default **No**): ```text theme={null} # When a newer version is available: my-skill has been locally edited. Update my-skill anyway? Local changes will be overwritten [y/N]: # When already at the latest version: my-skill has been locally edited. Restore my-skill to original? Local changes will be overwritten [y/N]: ``` Press Enter to skip, or `y` to overwrite. Use `--force` to bypass the prompt entirely. When updating all skills, each edited skill is prompted individually. The `Installed` column in `ap search` shows **Edited** (yellow) for modified skills. ## Scanning External Skills Preview a skill's security status without installing it: ```bash theme={null} ap scan ontology --source clawhub ``` This downloads the skill to a temporary sandbox, uploads it for a full security scan, displays the results, and cleans up. Nothing is installed. If the source is omitted, the CLI auto-detects it: ```bash theme={null} ap scan ontology ``` ## Uninstalling Skills ```bash theme={null} ap uninstall my-skill ``` Removes the skill from `~/.claude/skills/` (or `~/.claude/agents/` for agents). ## Unpublishing and Republishing Archive a skill to hide it from marketplace search and listings: ```bash theme={null} ap unpublish my-skill ``` Existing purchasers retain download access. To restore an archived skill: ```bash theme={null} ap republish my-skill ``` Both commands require confirmation and can only be run by the skill author. ## ClawHub Claims If you authored a skill on ClawHub, claim ownership: ```bash theme={null} ap claim my-clawhub-skill ``` Claims are verified automatically. ## Verifying Installed Skills External skills (from ClawHub and other sources) are pinned by content to protect against supply chain attacks. To verify that all installed skills match their recorded pins: ```bash theme={null} ap verify ``` This checks each installed skill's current content hash against the recorded pin and alerts you to any mismatches. ## Command Reference | Command | Description | | - | - | | `ap login` | Authenticate via browser OAuth | | `ap logout` | Clear stored credentials | | `ap whoami` | Show current user | | `ap profile` | View your seller profile (display name, bio) | | `ap profile --set` | Interactively update display name and bio | | `ap search ` | Search the marketplace (unified, sectioned results) | | `ap detail ` | View skill or agent details (`--source`, `--scan` flags) | | `ap install ` | Install a skill (`--scope` required; `--code`, `--source`, `--for`, `--global` flags) | | `ap publish ` | Publish or update a skill (`--price`, `--bump`, `--version`, `--changelog` flags) | | `ap update [slug]` | Update installed skills to latest versions (`--force` flag) | | `ap scan ` | Scan an external skill without installing | | `ap uninstall ` | Remove an installed skill | | `ap unpublish ` | Archive a published skill (hide from marketplace) | | `ap republish ` | Restore an archived skill to the marketplace | | `ap claim ` | Claim a ClawHub skill | | `ap status` | Show installed skills and agents with their status | | `ap verify` | Verify installed skills against content hash pins | ## Need Help? Reach us at **[support@agentpowers.ai](mailto:support@agentpowers.ai)** for account issues, billing questions, or technical help. Join the **AgentPowers Discord** to get help from the team and other creators in real time. # Codex Plugin Source: https://docs.agentpowers.ai/guides/codex-plugin Install and use the AgentPowers marketplace plugin for OpenAI Codex ## Overview The AgentPowers Codex plugin is an MCP server that integrates the AgentPowers marketplace directly into Codex and compatible editors (Claude Code, Cursor, Windsurf, Gemini CLI, and others). ## Installation ### UI method 1. Open Codex 2. Go to **Plugins** and click **+** 3. Add the plugin repo: `https://github.com/AgentPowers-AI/codex-plugin` 4. Say "Log me into AgentPowers" to authenticate ### CLI method Clone the repo and register the MCP server: ```bash theme={null} git clone https://github.com/AgentPowers-AI/codex-plugin.git cd codex-plugin codex mcp add agentpowers-marketplace -- bash -lc \ 'ROOT=$(git rev-parse --show-toplevel 2>/dev/null || pwd); node "$ROOT/scripts/agentpowers-mcp-server.mjs"' ``` ## Usage Once installed, interact with the marketplace using plain English prompts: * "Find the best skill for writing documentation" * "Search AgentPowers for code review skills" * "Install my purchased skill for Claude Desktop" * "Check if any of my installed skills have updates" ## Available tools The plugin provides the same MCP tools as the Claude Code plugin: | Tool | Description | | - | - | | `search_marketplace` | Search skills by keyword, category, or type | | `get_skill_details` | View full details for a skill or agent | | `install_skill` | Download and install a skill to any supported platform | | `check_installed` | List all installed skills with version and status | | `uninstall_skill` | Remove an installed skill | | `check_for_updates` | Check for newer versions of installed skills | | `check_purchase_status` | Check the status of a purchase | ## Supported platforms The plugin can install skills to any of these AI tools via the `target_tool` parameter: * Claude Code (`claude-code`) * Claude Desktop (`claude-desktop`) * Codex (`codex`) * Gemini CLI (`gemini`) * Kiro (`kiro`) * Any other tool via `~/.{tool}/skills/` convention ## Source [AgentPowers-AI/codex-plugin](https://github.com/AgentPowers-AI/codex-plugin) on GitHub. ## Need Help? Reach us at **[support@agentpowers.ai](mailto:support@agentpowers.ai)** for account issues, billing questions, or technical help. Join the **AgentPowers Discord** to get help from the team and other creators in real time. # Error Codes Source: https://docs.agentpowers.ai/guides/error-codes Reference for all structured error codes returned by the AgentPowers API. ## Error Response Format When an API request fails, the response includes a structured error with a machine-readable `code` and human-readable `detail`: ```json theme={null} { "detail": { "detail": "You are not the author of 'my-skill'", "code": "SKILL_NOT_OWNER" } } ``` The HTTP status code indicates the error category. The `code` field enables precise error handling in your application. ## Authentication Errors | Code | HTTP Status | Description | | - | - | - | | `AUTH_MISSING` | 401 | No `Authorization` header provided. Include a Bearer token. | | `AUTH_INVALID` | 401 | The provided token is invalid or malformed. | | `AUTH_EXPIRED` | 401 | The token has expired. Sign in again to get a fresh token. | ## Skill Errors | Code | HTTP Status | Description | | - | - | - | | `SKILL_NOT_FOUND` | 404 | The requested skill slug does not exist. | | `SKILL_BLOCKED` | 403 | The skill was blocked by the security review pipeline. | | *(no code)* | 403 | The skill or agent package has not passed its security scan yet (the scan is still pending or running). Downloads, installs and purchased-package downloads are refused until the scan completes; retry afterwards. While an update to a published listing is being scanned, the live version stays downloadable. | | `SKILL_SLUG_TAKEN` | 409 | The slug is already in use. Choose a different name. | | `SKILL_NOT_OWNER` | 403 | You attempted to modify a skill you do not own. | | `SKILL_ARCHIVED` | 400 | The skill has been unpublished. Use `POST /v1/skills/{slug}/republish` to restore it. | | `SKILL_VERSION_PENDING` | 409 | A new version is already pending security review. Wait for it to complete. | | `DISPLAY_NAME_REQUIRED` | 400 | You must set a display name before publishing. Update your profile first via `PATCH /v1/users/profile`. | | `LISTING_TEXT_REJECTED` | 422 | The listing's title, description or long description failed the security scan (for example prompt-injection text, a dangerous command, a hardcoded secret, or an unsafe link such as `javascript:`, credentials in a URL, or a raw IP host). Nothing was changed. The response's `detail.findings` lists each flagged `field`, `category` and `match`. Remove the flagged text and retry. Applies to `POST` and `PATCH` on `/v1/skills` and `/v1/agents`. | ## Purchase Errors | Code | HTTP Status | Description | | - | - | - | | `PURCHASE_NOT_FOUND` | 404 | No purchase found for the given ID or session. | | `PURCHASE_REQUIRED` | 403 | You need to purchase this paid skill before downloading. | | `PURCHASE_DUPLICATE` | 409 | You already own this skill. | | `PURCHASE_FREE_SKILL` | 400 | This skill is free and does not require a checkout. | | *(no code)* | 503 | Seller has not completed payment onboarding (no Stripe Connect account). | | *(no code)* | 503 | Seller payment account is not active (Stripe charges disabled). | ## Claim Errors | Code | HTTP Status | Description | | - | - | - | | `CLAIM_NOT_FOUND` | 404 | The claim ID does not exist or does not belong to you. | | `CLAIM_NOT_CLAWHUB` | 400 | Only external (ClawHub) skills can be claimed. | | `CLAIM_ALREADY_CLAIMED` | 409 | This skill has already been claimed by another user. | | `CLAIM_NOT_SANDBOX` | 400 | The claim is not in sandbox status and cannot be approved. | ## License Errors | Code | HTTP Status | Description | | - | - | - | | `LICENSE_INVALID` | 400 | The license code does not match any purchase. | | `LICENSE_REDEEMED` | 409 | This license code has already been redeemed. | ## User Profile Errors | Code | HTTP Status | Description | | - | - | - | | `DISPLAY_NAME_REQUIRED` | 400 | A display name is required to publish, review, or claim. Set one via `PATCH /v1/users/profile`. | | `VALIDATION_ERROR` | 422 | Input validation failed. Check the error detail for specifics. | ## General Errors | Code | HTTP Status | Description | | - | - | - | | `NOT_FOUND` | 404 | The requested resource was not found. | | `FORBIDDEN` | 403 | You do not have permission to perform this action. | | `FILE_TOO_LARGE` | 413 | The uploaded file exceeds the size limit. | | `STORAGE_ERROR` | 502 | File storage operation failed. Retry the request. | | `RATE_LIMITED` | 429 | Too many requests. See [Rate Limits](/guides/rate-limits) for details. | ## Handling Errors ### Python ```python theme={null} import httpx response = httpx.post(f"{API_URL}/v1/checkout", json={"skill_slug": "my-skill"}, headers=headers) if response.status_code != 200: error = response.json() code = error.get("detail", {}).get("code") message = error.get("detail", {}).get("detail") if code == "PURCHASE_DUPLICATE": print("You already own this skill!") else: print(f"Error: {message}") ``` ### JavaScript ```javascript theme={null} const res = await fetch(`${API_URL}/v1/checkout`, { method: "POST", headers: { "Content-Type": "application/json", Authorization: `Bearer ${token}` }, body: JSON.stringify({ skill_slug: "my-skill" }), }); if (!res.ok) { const error = await res.json(); const code = error.detail?.code; if (code === "PURCHASE_DUPLICATE") { console.log("You already own this skill!"); } else { console.log(`Error: ${error.detail?.detail}`); } } ``` ## Need Help? Reach us at **[support@agentpowers.ai](mailto:support@agentpowers.ai)** for account issues, billing questions, or technical help. Join the **AgentPowers Discord** to get help from the team and other creators in real time. # External Skills (ClawHub and More) Source: https://docs.agentpowers.ai/guides/external-skills How AgentPowers integrates external skill registries with full security scanning ## Overview AgentPowers aggregates skills from external registries alongside its own native catalog. When you search, you see two sections: **AgentPowers** skills first, then skills from each external source (starting with **ClawHub**). External skills are free, open-source skills hosted on their original registry. AgentPowers proxies the search, handles installation, and runs its full security pipeline before any external skill reaches your machine. ## How It Works ### Searching When you search for a skill, AgentPowers queries its own database and all registered external sources in parallel. Results come back in clearly labeled, sectioned format: ```bash theme={null} ap search "postgres backup" ``` The API returns a sectioned response: ```json theme={null} { "agentpowers": { "items": [...], "total": 1, "limit": 20, "offset": 0 }, "clawhub": { "items": [ { "slug": "postgres-backup", "title": "Postgres Backup", "source": "clawhub", "source_url": "https://clawhub.ai/owner/postgres-backup", "source_installs": 234, "source_downloads": 234, "source_stars": 47, "source_comments": 3, "ap_security_status": "pass", "version": "1.2.0" } ], "total": 1 } } ``` The CLI renders this as a unified table with Source, Type, Price, and Security columns. Install counts and star ratings are shown inline in the title. * **pass/warn** -- AgentPowers has scanned this skill version before * **unscanned** -- No one has installed this version through AgentPowers yet; it will be scanned on first install ### Installing External skills go through a sandboxed install + security scan flow: 1. The CLI downloads the skill into a temporary sandbox directory 2. AgentPowers checks if this exact version has been scanned before 3. **Cache hit** -- the cached security result is returned instantly 4. **Cache miss** -- the full security pipeline runs (static validation, malware detection, AI review, agent checks), then caches the result 5. **Pass or warn** -- files move to `~/.claude/skills/` and a version pin is recorded 6. **Block** -- findings are displayed and the skill is not installed ### Version Pinning Every installed skill is pinned by its content. This protects against supply chain attacks: * If an author re-uploads a skill (files change), the pin detects the mismatch * On update, AgentPowers re-scans before applying the new version * Run `ap verify` to check all installed skills against their recorded pins ### Updating External skills support the same update flow as native skills: ```bash theme={null} ap update ontology # Update a single external skill ap update # Check all installed skills (native + external) ``` When a newer version is available, the update command: 1. Fetches the latest version from the external source 2. Compares the installed version against the latest 3. Re-runs the full sandboxed install flow (download, scan, install) 4. Updates the pin with the new version **Edit detection works the same way.** If you've modified the installed files, `ap update` detects the change and prompts before overwriting. Use `--force` to bypass the prompt. **Missing version info.** Some external skills are pinned without version information (e.g., when the original install didn't report a version). In this case, `ap update` treats the skill as up-to-date if it hasn't been locally edited, avoiding unnecessary re-downloads. ## Security External skills receive the same security treatment as native AgentPowers skills: | Check | Description | | - | - | | Static validation | File type checks, dangerous pattern scanning | | Malware detection | ClamAV signatures and VirusTotal multi-engine scan | | Dependency scan | Snyk CVE detection for known vulnerabilities | | Supply chain analysis | GuardDog (Python) and Socket.dev (npm) | | AI security review | Semantic analysis for injection, auth flaws, data exposure | | Agent-specific checks | Tool audit, instruction analysis, trust scoring | The only difference: native skills are scanned at publish time. External skills are scanned at install time (and cached for subsequent users). ## Supported Sources | Source | Status | Skills | | - | - | - | | **ClawHub** | Active | Community skills for Claude Code | | More coming | Planned | Additional registries in the future | ## For Developers ### API **Search Results** ```bash theme={null} GET /v1/search?q=postgres&type=skill ``` Returns a sectioned response with `agentpowers` and `clawhub` keys. External items include: * `source` -- "clawhub", etc. * `source_url` -- Link to the original registry entry * `source_installs` -- Download count from the original source * `source_downloads` -- Same as `source_installs` (full detail) * `source_stars` -- Star/rating count * `source_comments` -- Comment count * `ap_security_status` -- AgentPowers scan result ("pass", "warn", or null if unscanned) **Unified Detail** Get full details for any skill regardless of source: ```bash theme={null} GET /v1/detail/{slug}?source=clawhub ``` Returns author info, version, stats, description, and AgentPowers security status. **Security Results** View the security scan results for any skill: ```bash theme={null} GET /v1/security/results/{slug} ``` Returns the scan outcome (pass/warn/block) with findings. ### CLI The `ap install` command automatically detects external skills by their `source` field and routes through the sandbox + scan flow. Use `--source` to specify explicitly: ```bash theme={null} ap install ontology --source clawhub ``` **Preview before installing** -- Use `ap detail --scan` to run the full security pipeline without installing: ```bash theme={null} ap detail ontology --scan --source clawhub ``` This downloads to a temporary sandbox, scans, displays per-finding result cards, and cleans up. Nothing is installed. **Verify integrity** -- The `ap verify` command checks all installed skills against their recorded pins: ```bash theme={null} ap verify ``` ## Need Help? Reach us at **[support@agentpowers.ai](mailto:support@agentpowers.ai)** for account issues, billing questions, or technical help. Join the **AgentPowers Discord** to get help from the team and other creators in real time. # Remote MCP Server Source: https://docs.agentpowers.ai/guides/mcp-server Use AgentPowers directly in claude.ai via the remote MCP server ## Overview The AgentPowers remote MCP server lets you browse, search, and interact with the marketplace directly from [claude.ai](https://claude.ai). No CLI installation required -- just add the server URL to your claude.ai settings and start discovering skills in conversation. With OAuth authentication enabled, you can also view your account profile and purchase history directly in claude.ai. ## Setup ### Add to claude.ai 1. Open [claude.ai](https://claude.ai) and go to **Settings** 2. Navigate to **Integrations** (or **MCP Servers**) 3. Click **Add Custom Integration** 4. Enter the server URL: ``` https://api.agentpowers.ai/mcp ``` 5. Save and start a new conversation ### Authenticate (optional) To use authenticated tools (profile, purchase history), click **Configure** on the AgentPowers integration. This opens the AgentPowers login page where you can sign in with your existing account. Once authenticated, claude.ai will include your credentials in all requests automatically. ### Verify it works In a new conversation, try: > "Search AgentPowers for productivity skills" Claude should use the `search_marketplace` tool and return results from the marketplace. ## Available tools The remote MCP server exposes 9 tools: ### Public tools (no authentication required) | Tool | Description | | - | - | | `search_marketplace` | Search by keyword, category, or type with configurable limits | | `get_skill_details` | Full details for a skill or agent by slug, including pricing and security status | | `get_categories` | List all skill categories with live skill counts | | `get_seller_profile` | View a seller's profile, bio, and published skills | | `get_skill_reviews` | Read reviews and ratings for a skill | | `get_platforms` | List supported AI platforms for skill installation | ### Authenticated tools (requires OAuth) | Tool | Description | | - | - | | `start_checkout` | Start purchasing a paid skill | | `get_account_profile` | View your AgentPowers account profile | | `list_purchases` | List your purchased skills with license codes | If you call an authenticated tool without being signed in, you'll get a helpful message asking you to configure the integration first. ### Example prompts * "What categories of skills are available on AgentPowers?" * "Show me the details for the code-review skill" * "Find security-related skills" * "Who is the seller behind this skill?" * "Show me my AgentPowers purchases" * "What's my AgentPowers profile?" ## Authentication The remote server uses OAuth 2.0 with PKCE (Proof Key for Code Exchange) for secure authentication. When you click **Configure** on the integration: 1. claude.ai discovers the OAuth endpoints via `/.well-known/oauth-authorization-server` 2. It registers as an OAuth client (one-time, automatic) 3. You're redirected to the AgentPowers login page 4. After signing in, an authorization code is exchanged for access tokens 5. Tokens are refreshed automatically -- you stay signed in Your access tokens expire after 1 hour and are automatically refreshed. ## Limitations The following features require the [CLI](/guides/cli-usage) or [Claude Desktop extension](/guides/claude-extension): * **Installation** -- downloading and installing skills to your local machine * **Publishing** -- uploading and managing your own skills ## Technical details * **Protocol:** MCP over Streamable HTTP (primary) + SSE (legacy) * **Primary endpoint:** `https://api.agentpowers.ai/mcp` * **Legacy SSE endpoint:** `https://api.agentpowers.ai/mcp/sse` * **OAuth discovery:** `https://api.agentpowers.ai/.well-known/oauth-authorization-server` * **Token endpoint:** `https://api.agentpowers.ai/v1/oauth/token` * **Agent skills index (RFC v0.2.0):** `https://api.agentpowers.ai/.well-known/agent-skills/index.json` — returns `{"$schema": "...", "skills": [...]}` * **API catalog:** `https://api.agentpowers.ai/.well-known/api-catalog` * **OAuth protected resource:** `https://api.agentpowers.ai/.well-known/oauth-protected-resource` * **MCP server card:** `https://api.agentpowers.ai/.well-known/mcp/server-card.json` ## Source The remote MCP server is part of the [AgentPowers API](https://github.com/AgentPowers-AI/agentpowers-app) codebase. ## Need Help? Reach us at **[support@agentpowers.ai](mailto:support@agentpowers.ai)** for account issues, billing questions, or technical help. Join the **AgentPowers Discord** to get help from the team and other creators in real time. # Plugin Usage Source: https://docs.agentpowers.ai/guides/plugin-usage Browse and install skills directly inside Claude Code conversations ## Installation Add the AgentPowers MCP server to your Claude Code config: ```bash theme={null} claude mcp add agentpowers -- npx -y @agentpowers/mcp-server ``` Or add it manually to your `.mcp.json`: ```json theme={null} { "mcpServers": { "agentpowers": { "command": "npx", "args": ["@agentpowers/mcp-server"] } } } ``` The full Claude Code plugin is also available. Install it with: ```bash theme={null} claude plugin marketplace add AgentPowers-AI/agentpowers-plugin claude plugin install agentpowers@agentpowers-plugin ``` The plugin bundles the MCP server below plus session hooks, post-install reminders, and the `/ap` guided flow. The MCP server gives Claude access to marketplace tools during your conversation. ## Authentication The plugin shares the same auth token stored by the CLI. Log in once with the CLI: ```bash theme={null} ap login ``` The plugin picks up the token automatically. ## Guided Flow (`/ap`) Type `/ap` in any conversation to launch the guided marketplace experience: 1. **Search** -- Find skills by keyword 2. **Browse categories** -- Explore available categories 3. **Check updates** -- See if your installed skills have newer versions 4. **Manage installed** -- List and uninstall skills The `/ap` command uses the same MCP tools listed below but wraps them in a conversational flow. ## Available Tools Once enabled, Claude has access to these tools during conversation: ### search\_marketplace Search the marketplace by keyword, category, or type: ``` "Find me a Python testing skill" "Search for agents in the dev category" ``` Claude calls `search_marketplace` with your query and presents matching results from both AgentPowers and external sources (e.g., ClawHub). ### get\_skill\_details View details about a specific skill or agent: ``` "Show me details for the code-review-pro skill" "Get details for weather from ClawHub" ``` Returns the full description, price, security status, version, author, download count, and star rating (average and review count when available). Supports an optional `source` parameter to look up skills from specific sources. ### install\_skill Install a skill or agent directly from conversation: ``` "Install the code-review-pro skill" ``` Claude will ask **where** to install before proceeding: * **user** scope — `~/.claude/skills/` (available in every project) * **project** scope — `./.claude/skills/` (only in this project; commit with the repo to share) `install_skill` requires the `scope` argument explicitly — there is no default. The `/ap` skill guides Claude to ask the question before invoking the tool. For free skills, installation happens immediately after you pick a scope. For paid skills, Claude opens Stripe Checkout in your browser; the scope question comes after payment completes. The plugin checks security status before installing and saves a version pin for update tracking. ### check\_purchase\_status Check whether a purchase has completed: ``` "Check the status of my purchase abc-123" ``` Returns payment status and license code if completed. Requires authentication. ### check\_installed List all installed skills and agents: ``` "What skills do I have installed?" ``` Output is grouped by **scope** so you can see exactly where each skill lives: * **User** — `~/.claude/skills/` (and `~/.claude/agents/`) * **Project** — `./.claude/skills/` of the directory Claude Code was launched in (or any ancestor) * **Plugin (read-only)** — `~/.claude/plugins//skills/`, surfaced so you know what your environment is loading from plugins Each row shows the skill's version, source (`agentpowers`, `clawhub`, `plugin:`, or `unknown` for unmanaged installs), security status, and whether it has been locally edited. ### uninstall\_skill Remove an installed skill or agent: ``` "Uninstall the code-review-pro skill" ``` Removes the skill directory and its version pin. ### check\_for\_updates Check if any installed skills have newer versions available: ``` "Are any of my skills out of date?" ``` Reports which skills are up to date, which have updates, and which have been locally edited. Use `ap update` in your terminal to install updates. ## Platforms The plugin works across: | Platform | Support | | - | - | | Claude Code (CLI) | Full support | | Claude Cowork (desktop) | Full support | | claude.ai (web) | ZIP download fallback | ## Troubleshooting ### MCP server not loading Verify the MCP server is configured: ```bash theme={null} claude mcp list ``` ### Authentication errors Re-authenticate via the CLI: ```bash theme={null} ap logout ap login ``` ### Skill not installing Check that the target directory exists and is writable: ```bash theme={null} ls -la ~/.claude/skills/ ``` ## Choosing Your Install Method | Feature | MCP Server | Skill | CLI | | - | - | - | - | | Install friction | Low | Lowest | Medium | | Search marketplace | Yes | Yes | Yes | | Install skills | Yes | Yes | Yes | | Proactive suggestions | No | No | No | | Guided `/ap` flow | No | No | No | | Session hooks | No | No | No | | Works outside Claude Code | Yes | No | Yes | | Dependencies | Node.js | None | Python | ## Need Help? Reach us at **[support@agentpowers.ai](mailto:support@agentpowers.ai)** for account issues, billing questions, or technical help. Join the **AgentPowers Discord** to get help from the team and other creators in real time. # Rate Limits Source: https://docs.agentpowers.ai/guides/rate-limits API rate limit tiers, response headers, and handling 429 errors. ## Rate Limit Tiers The AgentPowers API uses per-IP rate limiting to ensure fair usage and protect against abuse. | Tier | Limit | Applies To | | - | - | - | | **Public read** | 60 requests/minute | Unauthenticated GET endpoints (search, skills list, categories, detail) | | **Authenticated read** | 10 requests/minute | Authenticated GET endpoints (earnings, purchases, profile) | | **Write** | 20 requests/minute | All POST, PATCH, DELETE endpoints (publish, checkout, reviews) | ## Handling 429 Responses When you exceed the rate limit, the API returns a `429 Too Many Requests` response: ```json theme={null} { "detail": { "detail": "Rate limit exceeded", "code": "RATE_LIMITED" } } ``` ### Recommended Strategy 1. **Respect `Retry-After`** -- wait the specified number of seconds before retrying 2. **Exponential backoff** -- if `Retry-After` is not present, use exponential backoff starting at 1 second 3. **Cache responses** -- cache search results and skill details to reduce request volume 4. **Batch operations** -- for bulk installs or updates, add a small delay (200-500ms) between requests ### Example: Python with Retry ```python theme={null} import time import httpx def api_request(url, headers, max_retries=3): for attempt in range(max_retries): response = httpx.get(url, headers=headers) if response.status_code == 429: retry_after = int(response.headers.get("Retry-After", 2 ** attempt)) time.sleep(retry_after) continue return response raise Exception("Rate limit exceeded after retries") ``` ## Notes * Rate limits are per IP address, not per user * The CLI (`ap` command) includes built-in retry logic for rate-limited requests * The MCP server plugin handles rate limits transparently * If you need higher limits for integration purposes, contact us ## Need Help? Reach us at **[support@agentpowers.ai](mailto:support@agentpowers.ai)** for account issues, billing questions, or technical help. Join the **AgentPowers Discord** to get help from the team and other creators in real time. # Roadmap Source: https://docs.agentpowers.ai/guides/roadmap Planned features and upcoming API capabilities. ## Current Status AgentPowers is live with the core marketplace functionality: publishing, purchasing, installing, and security scanning for Claude Code skills. The CLI, MCP plugin, and web directory are all functional. ## Shipped These features have been completed and are live in production. ### Agent Marketplace Full support for publishing, discovering, and installing Claude Code agents. Agents go through the same security pipeline as skills with additional checks for tool access patterns and instruction safety. * `POST /v1/agents` -- publish an agent * `GET /v1/agents` -- list/search agents * `GET /v1/agents/{slug}` -- agent detail * `PATCH /v1/agents/{slug}` -- update agent * `GET /v1/agents/{slug}/download` -- download agent ### Category Detail Pages Browse skills by category with live skill counts: * `GET /v1/categories` -- list all categories * `GET /v1/categories/{slug}` -- category detail with skills ### 9-Layer Security Pipeline All security scanners are live: * **ClamAV** -- malware signature detection * **Snyk** -- dependency vulnerability scanning * **GuardDog** -- Python supply chain analysis * **Socket.dev** -- npm supply chain analysis * **VirusTotal** -- multi-engine malware scanning * **AI review** -- semantic analysis for injection, auth flaws, data exposure * Plus static validation, pattern scanning, and agent-specific checks ### Fraud Protection Automated detection and prevention for marketplace abuse: * Seller tiers with price caps (Tier 0: $25, Tier 1: $100, Tier 2: \$1,000) * Payout hold periods (14/7/2 days by tier) * Self-purchase blocking * Repeat purchase detection * Price anomaly flagging * IP/email match detection in checkout ## Coming Soon These features are in development or planned for the near term. ### License Code Regeneration Allow buyers to regenerate their license code if lost or compromised. The original code is invalidated and a new one is issued. ## Feedback Have a feature request? Open an issue on [GitHub](https://github.com/AgentPowers-AI) or reach out via our website. ## Need Help? Reach us at **[support@agentpowers.ai](mailto:support@agentpowers.ai)** for account issues, billing questions, or technical help. Join the **AgentPowers Discord** to get help from the team and other creators in real time. # Security Pipeline Source: https://docs.agentpowers.ai/guides/security-pipeline How AgentPowers vets every skill and agent submission ## Overview Every skill and agent submission passes through a multi-layer security pipeline before listing. No manual review is required for most submissions -- the pipeline runs automatically. ## Pipeline Stages The pipeline runs 9 layers in sequence. Layers that don't apply (e.g., dependency scanning on a pure-markdown skill) are skipped gracefully. ### 1. File Type Validation Only allowed file types pass through. Disallowed extensions (executables, compiled binaries) are rejected immediately. ### 2. Pattern Scanning Checks for dangerous patterns: shell commands, environment variable harvesting, obfuscation techniques, and known attack signatures. ### 3. ClamAV Signature Scan A local ClamAV malware signature scan catches known malware before spending external API quota. Runs in \~200ms. ### 4. Dependency Vulnerability Scan (Snyk) Scans dependency manifests (requirements.txt, package.json, pyproject.toml) for known CVEs using Snyk. Skipped if no manifests are present. ### 5. Supply Chain Analysis -- Python (GuardDog) GuardDog detects Python supply chain attacks that vulnerability scanners miss: typosquatting, dependency confusion, and install-time code execution. ### 6. Supply Chain Analysis -- npm (Socket.dev) Socket.dev analyzes npm dependencies for supply chain risks including install scripts, network access, and obfuscated code. ### 7. VirusTotal Malware Scan The full package is uploaded to VirusTotal for scanning by 70+ antivirus engines. Results are polled with linear backoff. ### 8. AI Security Review An AI-powered semantic analysis checks for: * **Prompt injection** -- Attempts to override Claude's instructions * **Authentication flaws** -- Improper credential handling * **Data exposure** -- Leaking user data or API keys * **Privilege escalation** -- Requesting unnecessary permissions ### 9. Agent-Specific Checks Submissions of type `agent` receive additional scrutiny: * **Tool access audit** -- Which tools does the agent request? * **Instruction analysis** -- Are instructions appropriate for the declared purpose? * **Trust level scoring** -- Overall risk assessment based on capabilities requested ## Outcomes | Result | Effect | | - | - | | **Pass** | Listed immediately in the marketplace | | **Warn** | Listed with a warning badge visible to buyers | | **Block** | Rejected -- the creator receives detailed findings | ## Timing Most submissions complete the full pipeline within minutes. Complex packages or high-traffic periods may take longer. ## For Creators ### Avoiding Rejections * Do not include shell commands that modify system files * Do not access environment variables beyond what your skill needs * Do not attempt to override Claude's safety instructions * Keep file types to text, markdown, JSON, and standard code files ### Appealing a Block If your submission is blocked and you believe the finding is a false positive, update your package to address the findings and resubmit. Each resubmission goes through the full pipeline again. ## External Skills (ClawHub and More) External skills from registries like ClawHub go through the same full security pipeline. The difference is timing: * **Native skills** -- scanned at publish time, before they appear in the marketplace * **External skills** -- scanned at install time, with results cached so subsequent users get instant results If an author updates a skill (changing its files), the cache is invalidated and a fresh scan runs automatically on the next install. ## For Buyers ### Reading Security Status Every skill in the marketplace displays its security status: * **Pass** -- No issues detected * **Warn** -- Minor concerns flagged; review the badge details before installing Skills with a **Block** status are never listed. ### Reporting Concerns If you discover a security issue with an installed skill, contact support at [support@agentpowers.ai](mailto:support@agentpowers.ai) with the skill slug and a description of the concern. ## Need Help? Reach us at **[support@agentpowers.ai](mailto:support@agentpowers.ai)** for account issues, billing questions, or technical help. Join the **AgentPowers Discord** to get help from the team and other creators in real time. # Selling Skills Source: https://docs.agentpowers.ai/guides/selling-skills How to publish skills, set prices, and receive payouts ## Becoming a Seller ### Prerequisites Before publishing, you need: 1. **A display name** on your profile. Set it at [agentpowers.ai/dashboard/settings/profile](https://agentpowers.ai/dashboard/settings/profile) or via the API. 2. **Stripe Connect** (for paid skills only). Complete onboarding at [agentpowers.ai/dashboard/become-seller](https://agentpowers.ai/dashboard/become-seller). Free skills can be published without Stripe. ### Payout Onboarding Before receiving payouts, complete the onboarding process via the dashboard or API: Go to [agentpowers.ai/dashboard/become-seller](https://agentpowers.ai/dashboard/become-seller) and click "Connect Stripe" to start the onboarding flow. ```bash theme={null} curl -X POST "https://api.agentpowers.ai/v1/sellers/connect" \ -H "Authorization: Bearer TOKEN" ``` This returns an onboarding URL. Complete the form to enable payouts. ### Check Seller Status To check whether the current user has completed seller onboarding: ```bash theme={null} curl -H "Authorization: Bearer TOKEN" \ "https://api.agentpowers.ai/v1/sellers/status" ``` Returns `is_seller` (true if onboarding is complete), `charges_enabled`, and `payouts_enabled`. This is a read-only endpoint with no side effects. ### Check Earnings View your earnings in the [Seller Dashboard](https://agentpowers.ai/dashboard/earnings) or via the API: ```bash theme={null} curl -H "Authorization: Bearer TOKEN" \ "https://api.agentpowers.ai/v1/sellers/earnings" ``` Returns total earnings and sale count. ## Setting Up Your Profile ### Display Name Requirement Before publishing, you must set a display name on your profile. Go to [Dashboard > Settings > Profile](https://agentpowers.ai/dashboard/settings/profile) to set it, or use the API: ```bash theme={null} curl -X PATCH "https://api.agentpowers.ai/v1/users/profile" \ -H "Authorization: Bearer TOKEN" \ -H "Content-Type: application/json" \ -d '{"display_name": "My Name"}' ``` Your display name is automatically slugified into a URL-safe profile path (e.g. `"John Doe"` -> `/sellers/john-doe`). If your chosen display name conflicts with an existing slug, a number suffix is appended automatically (`john-doe-2`). You can also update your bio and social links from the profile settings page. ## Publishing a Skill ### 1. Prepare Your Skill Create a `.skill`, `.md`, or `.agent` file with YAML frontmatter: ```yaml theme={null} --- title: My Awesome Skill description: A skill that does amazing things category: development --- # My Awesome Skill Instructions for Claude when using this skill... ``` For agents, include `tools` and/or `model` in the frontmatter: ```yaml theme={null} --- name: Code Reviewer description: An autonomous code review agent tools: Read, Glob, Grep, Bash model: sonnet --- ``` You can also prepare a directory with multiple files and ZIP it for upload. Maximum upload size is **10 MB**. Most skills are well under 500 KB. ### 2. Publish 1. Go to [agentpowers.ai/dashboard/publish](https://agentpowers.ai/dashboard/publish) 2. Drop your `.skill`, `.agent`, `.md`, or `.zip` file 3. The form auto-fills from your frontmatter (title, description, category, type) 4. Review the details, set a price if desired, and click **Publish** The file type determines whether it's published as a skill or agent: * `.skill` files are published as skills * `.agent` files are published as agents * `.md` files with `tools` or `model` in frontmatter are published as agents, otherwise as skills * `.zip` files require you to select the type manually ```bash theme={null} ap login ap publish ./my-skill --price 5.00 ``` The CLI: 1. Packages your directory as a ZIP 2. Creates the skill record via `POST /v1/skills` 3. Uploads the package via `POST /v1/skills/{slug}/upload` Your skill starts at **v1.0.0**. Omit `--price` for free skills (defaults to \$0). ### 3. Publishing Updates Already published? `ap publish` detects the existing skill and creates a new version: ```bash theme={null} ap publish ./my-skill --bump patch # v1.0.0 → v1.0.1 (default) ap publish ./my-skill --bump minor # v1.0.0 → v1.1.0 ap publish ./my-skill --bump major # v1.0.0 → v2.0.0 ``` Or set an explicit version: ```bash theme={null} ap publish ./my-skill --version 2.0.0 ``` Add a changelog message: ```bash theme={null} ap publish ./my-skill --bump minor --changelog "Added dark mode support" ``` Change the price during an update: ```bash theme={null} ap publish ./my-skill --bump patch --price 9.99 ``` **Omitting `--price` on updates preserves the existing price.** Only pass `--price` when you want to change it. To switch a paid skill to free, explicitly pass `--price 0`. **How it works:** 1. The CLI detects the existing skill (POST returns 409) 2. Sends a `PATCH /v1/skills/{slug}` to create a new version 3. Uploads the updated package 4. The new version enters the security pipeline while the **previous version stays live** **One pending version at a time.** If a version is still awaiting security review, you cannot publish another until it completes. You can also update metadata (title, description, category) during re-publish -- just change the frontmatter and run `ap publish` again. ### 4. Unpublishing Temporarily remove a skill from the marketplace: ```bash theme={null} ap unpublish my-skill ``` Archived skills are hidden from search and cannot be purchased, but existing buyers retain download access. To re-list: ```bash theme={null} ap republish my-skill ``` ### 5. Security Review Every submission passes through the security pipeline automatically: 1. **Static validation** -- File type checks, dangerous pattern scanning 2. **Malware detection** -- Scanned for known malware 3. **AI security review** -- Semantic analysis for injection, auth flaws, data exposure 4. **Agent-specific checks** (for agents) -- Tool access audit, instruction analysis Outcomes: * **Pass** -- Listed immediately * **Warn** -- Listed with a warning badge * **Block** -- Rejected with detailed findings ## Pricing Before listing a paid skill or agent, you must complete Stripe Connect onboarding from your [Seller Dashboard](https://agentpowers.ai/dashboard/become-seller). Free skills and agents can be published at any time without Stripe setup. * Skills are free by default (omit `--price` or use `--price 0`) * Set a price with `ap publish ./my-skill --price 5.00` (in dollars) * **Minimum price for paid skills is \$5.00** * AgentPowers takes a **15% platform fee**; you receive 85% via payouts ### Seller Tiers and Price Caps New sellers start at Tier 0 with a **\$25 maximum price** per skill. As you build a verified sales history, your tier upgrades automatically: | Tier | Requirements | Max Price | Payout Delay | | - | - | - | - | | Tier 0 (New) | Default | \$25 | 14 days | | Tier 1 (Established) | 5+ sales AND 30+ days | \$100 | 7 days | | Tier 2 (Trusted) | 20+ sales AND 90+ days | \$1,000 | 2 days | Your current tier, payout delay, and price limit are returned in the `GET /v1/sellers/earnings` response. Payout delays protect both buyers and sellers. As your account builds trust, delays decrease automatically. ## Seller Dashboard Track your sales performance with dedicated seller endpoints (all require authentication). ### Your Skills View all your published skills with revenue data: ```bash theme={null} curl -H "Authorization: Bearer TOKEN" \ "https://api.agentpowers.ai/v1/sellers/skills" ``` ### Recent Sales See your most recent sales with buyer information: ```bash theme={null} curl -H "Authorization: Bearer TOKEN" \ "https://api.agentpowers.ai/v1/sellers/sales?limit=20" ``` ### Revenue Analytics Get daily revenue timeseries (default 30 days, range 1-365): ```bash theme={null} curl -H "Authorization: Bearer TOKEN" \ "https://api.agentpowers.ai/v1/sellers/revenue?days=30" ``` Per-skill revenue breakdown: ```bash theme={null} curl -H "Authorization: Bearer TOKEN" \ "https://api.agentpowers.ai/v1/sellers/revenue/breakdown" ``` ### Activity Feed Combined feed of purchases and installs: ```bash theme={null} curl -H "Authorization: Bearer TOKEN" \ "https://api.agentpowers.ai/v1/sellers/activity?limit=20" ``` ### Public Seller Profile Your public profile is available at: ```bash theme={null} curl "https://api.agentpowers.ai/v1/sellers/my-name" curl "https://api.agentpowers.ai/v1/sellers/my-name/skills" ``` These are public endpoints -- no authentication required for viewers. ## Reviews on Your Skills Buyers can leave 1-5 star reviews on your skills. Review ratings are displayed in skill detail views (`rating_average` and `rating_count` fields on `GET /v1/detail/{slug}`). You can view reviews on any of your skills: ```bash theme={null} curl "https://api.agentpowers.ai/v1/skills/my-skill/reviews" ``` Self-reviews are prevented -- you cannot review your own skills. ## ClawHub Claims If you authored a skill on ClawHub (the free marketplace), you can claim ownership: ```bash theme={null} ap claim my-clawhub-skill ``` Claims are verified against your GitHub account. Most claims are processed automatically. ## Admin API Reference All endpoints in this section require admin privileges. Requests from non-admin accounts return `403 Forbidden`. These features are API-only. There is no frontend dashboard for them; use `curl` or a REST client. ### API-Only Admin Features The following capabilities are available exclusively through the API: * **Claims management** — Review and resolve ClawHub ownership claims * **Abuse flags** — Inspect and action flagged accounts or skills * **Category CRUD** — Create, update, and delete marketplace categories * **Refund processing** — Initiate refunds on completed purchases * **Pending deletion management** — Review accounts scheduled for deletion and cancel if needed * **Marketing email** — Send bulk opt-in email to users ### Marketing Email Send a marketing email to all opted-in users: ```bash theme={null} curl -X POST "https://api.agentpowers.ai/v1/admin/marketing-email" \ -H "Authorization: Bearer ADMIN_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "subject": "New skills available this week", "body": "Check out the latest additions to the marketplace..." }' ``` **Response:** ```json theme={null} { "sent": 1042, "skipped": 87 } ``` `sent` is the count of emails dispatched. `skipped` is the count of users who have opted out of marketing email. ### Refund Processing Initiate a refund on a completed purchase by its ID: ```bash theme={null} curl -X POST "https://api.agentpowers.ai/v1/admin/refunds/{purchase_id}" \ -H "Authorization: Bearer ADMIN_TOKEN" ``` **Response:** ```json theme={null} { "refund_id": "re_1abc...", "status": "succeeded", "amount_cents": 500 } ``` The Stripe `charge.refunded` webhook fires automatically and handles the DB update, license revocation, and buyer notification email. The admin endpoint only initiates the refund. ### Pending Deletions List accounts that have requested deletion and are awaiting the retention window: ```bash theme={null} curl -H "Authorization: Bearer ADMIN_TOKEN" \ "https://api.agentpowers.ai/v1/admin/pending-deletions" ``` Cancel a scheduled deletion (e.g., after a fraud review or user appeal): ```bash theme={null} curl -X POST "https://api.agentpowers.ai/v1/admin/cancel-deletion/{user_id}" \ -H "Authorization: Bearer ADMIN_TOKEN" ``` ### Category Management Create a new category: ```bash theme={null} curl -X POST "https://api.agentpowers.ai/v1/admin/categories" \ -H "Authorization: Bearer ADMIN_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "Finance", "description": "Skills for financial analysis and reporting", "icon": "chart-line" }' ``` Update an existing category (partial update — only supply fields to change): ```bash theme={null} curl -X PUT "https://api.agentpowers.ai/v1/admin/categories/{slug}" \ -H "Authorization: Bearer ADMIN_TOKEN" \ -H "Content-Type: application/json" \ -d '{"description": "Updated description"}' ``` Delete a category (blocked if any non-archived skills reference it): ```bash theme={null} curl -X DELETE "https://api.agentpowers.ai/v1/admin/categories/{slug}" \ -H "Authorization: Bearer ADMIN_TOKEN" ``` Category slugs are immutable after creation. The `id` field is auto-generated as `cat-{slug}` (e.g., `cat-finance`). ## Need Help? Reach us at **[support@agentpowers.ai](mailto:support@agentpowers.ai)** for account issues, billing questions, or technical help. Join the **AgentPowers Discord** to get help from the team and other creators in real time. # Skill Usage Source: https://docs.agentpowers.ai/guides/skill-usage Use the standalone AgentPowers skill with zero dependencies ## Installation Clone the skill into your Claude Code skills directory: ```bash theme={null} git clone https://github.com/AgentPowers-AI/agentpowers-skill ~/.claude/skills/agentpowers ``` No Node.js, Python, or other dependencies required. The skill uses only `curl` and `bash`. Direct skill installation via `claude skill add` is coming soon. For now, clone the repo into `~/.claude/skills/`. ## What It Does The skill teaches Claude how to interact with the AgentPowers marketplace directly. Once installed, Claude can: * **Search** the marketplace for skills and agents * **View details** for any skill including price, security status, and description * **Install free skills** by downloading and extracting packages * **Purchase paid skills** by opening Stripe Checkout (requires authentication) ## Using the Skill After installing, try asking Claude: ``` Find me a code review skill ``` ``` Search the AgentPowers marketplace for security tools ``` ``` Install the skill called my-awesome-skill ``` Claude will use `curl` to call the AgentPowers API and present results in a clean format. ## Authentication The skill works without authentication for: * Searching the marketplace * Viewing skill details * Installing free skills For paid skills, you need to authenticate first: ```bash theme={null} npx @agentpowers/cli login ``` Or via the Python CLI: ```bash theme={null} pip install agentpowers ap login ``` The skill automatically detects the auth token at `~/.agentpowers/auth.json`. ## Limitations vs Plugin The standalone skill is lightweight but has fewer features than the [full plugin](/guides/plugin-usage): | Feature | Skill | Plugin | | - | - | - | | Search and browse | Yes | Yes | | Install skills | Yes | Yes | | Proactive suggestions | No | Yes | | Guided `/ap` command | No | Yes | | Session hooks | No | Yes | | Dependencies | None | Node.js | ## Upgrading to the MCP Server If you want the full experience with 26 marketplace tools, add the MCP server: ```bash theme={null} claude mcp add agentpowers -- npx -y @agentpowers/mcp-server ``` The MCP server includes everything the skill does plus categories, reviews, security scans, seller profiles, account management, purchase workflows, and multi-platform install support. ## Need Help? Reach us at **[support@agentpowers.ai](mailto:support@agentpowers.ai)** for account issues, billing questions, or technical help. Join the **AgentPowers Discord** to get help from the team and other creators in real time. # Introduction Source: https://docs.agentpowers.ai/introduction A paid marketplace for Claude Code skills and agents # AgentPowers AgentPowers is a marketplace for Claude Code skills and agents. It adds a payment layer to the Claude plugin ecosystem, enabling creators to monetize their work and buyers to discover security-vetted premium content. ## What AgentPowers Does * **For buyers**: Discover, purchase, and install skills and agents across Claude Code (CLI), Claude Cowork (desktop), and claude.ai (web) * **For creators**: Publish skills/agents, set prices, receive payouts via Stripe Connect * **For everyone**: Every submission passes a multi-layer security pipeline before listing * **Unified catalog**: Search AgentPowers native skills alongside community skills from external registries like [ClawHub](https://clawhub.ai) — all security-scanned through our pipeline ## How It Works Find skills by category, keyword, or type. AgentPowers skills and external sources (like ClawHub) appear in one unified search, all security-vetted. Free skills install instantly. Paid skills use Stripe Checkout with license codes for offline redemption. External skills are sandboxed and scanned on install. Package your skill, submit for security review, and earn 85% of each sale via Stripe Connect. 9-layer scanning pipeline: static validation, ClamAV malware signatures, dependency vulnerability audit (Snyk), supply chain analysis (GuardDog + Socket.dev), VirusTotal, AI security review, and agent-specific trust scoring. ## Access Methods | Method | Best For | Install | | - | - | - | | **MCP Server** (Recommended) | In-conversation browsing | `npx @agentpowers/mcp-server` | | **CLI** (`ap` command) | Power users, CI/CD | `npx @agentpowers/cli` (or `pip install agentpowers`) | | **Website** | Discovery, browsing | [agentpowers.ai](https://agentpowers.ai) | | **API** | Custom integrations | See the **API Reference** tab above | ## Platform Fee AgentPowers charges a 15% platform fee on paid sales (minimum price \$5). Creators receive 85% of each transaction via Stripe Connect payouts. ## Need Help? Reach us at **[support@agentpowers.ai](mailto:support@agentpowers.ai)** for account issues, billing questions, or technical help. Join the **AgentPowers Discord** to get help from the team and other creators in real time. # Quickstart Source: https://docs.agentpowers.ai/quickstart Get started with AgentPowers in under 5 minutes ## Install Add to your `.mcp.json` (no global install needed): ```json theme={null} { "mcpServers": { "agentpowers": { "command": "npx", "args": ["@agentpowers/mcp-server"] } } } ``` Or add via the CLI: ```bash theme={null} claude mcp add agentpowers -- npx -y @agentpowers/mcp-server ``` See [MCP Server guide](/guides/mcp-server) for full setup. Clone the standalone skill directly. No Node.js or Python required: ```bash theme={null} git clone https://github.com/AgentPowers-AI/agentpowers-skill ~/.claude/skills/agentpowers ``` Then use `/agentpowers` in any Claude Code conversation. See [Skill guide](/guides/skill-usage) for details. Run directly with npx (no global install needed): ```bash theme={null} npx @agentpowers/cli setup ``` Auto-configures MCP for all detected AI tools. Requires Node.js 18+. `pip install agentpowers` is still supported but npx is preferred. ## Search for Skills ```bash theme={null} npx @agentpowers/cli search "code review" ``` This returns a table of matching skills with titles, prices, security status, and download counts. ## Install a Free Skill ```bash theme={null} npx @agentpowers/cli install my-awesome-skill ``` The CLI downloads and extracts the skill to `~/.claude/skills/my-awesome-skill/`. ## Install a Paid Skill ```bash theme={null} npx @agentpowers/cli install premium-agent ``` For paid skills, the CLI opens a Stripe Checkout page. After purchase, you receive a license code. The skill installs automatically after payment, or you can redeem the license code later: ```bash theme={null} npx @agentpowers/cli install premium-agent --code XXXXXXXX-XXXXXXXX-XXXXXXXX ``` ## Use In-Conversation (MCP Server) The MCP server gives Claude access to marketplace tools during your conversation. Add it to your Claude Code settings or `.mcp.json`: ```json theme={null} { "mcpServers": { "agentpowers": { "command": "npx", "args": ["@agentpowers/mcp-server"] } } } ``` See [MCP Server guide](/guides/mcp-server) for full setup details. ## Publish a Skill Write a `.skill` or `.md` file with YAML frontmatter: ```yaml theme={null} --- title: My Awesome Skill description: A skill that does amazing things category: development --- Instructions for Claude when using this skill... ``` Navigate to [agentpowers.ai/dashboard/publish](https://agentpowers.ai/dashboard/publish) and sign in. Drop your `.skill`, `.md`, or `.zip` file. The form auto-fills from your frontmatter. Review the details, set a price (or leave free), and hit Publish. Your skill enters the security review pipeline. Once approved, it appears in the marketplace. ``` my-skill/ ├── SKILL.md # Frontmatter with title, description └── ... # Your skill files ``` ```bash theme={null} npx @agentpowers/cli login npx @agentpowers/cli publish --dir ./my-skill --price 5.00 ``` Your skill enters the security review pipeline. Once approved, it appears in the marketplace. ## Need Help? Reach us at **[support@agentpowers.ai](mailto:support@agentpowers.ai)** for account issues, billing questions, or technical help. Join the **AgentPowers Discord** to get help from the team and other creators in real time.