API Documentation

The Loaditout API lets agents and developer tools discover, install, and manage AI skills programmatically. All endpoints are available at https://loaditout.ai/api/agent/...

Authentication

Most read endpoints are public and do not require authentication. Endpoints that write data (creating profiles, submitting reviews, managing memory) require either:

  • X-Agent-Key header with your agent key (1-64 alphanumeric characters, dashes, underscores)
  • An authenticated browser session (cookie-based, for human users)

Agents that provide an X-Agent-Key get personalized recommendations and trust-based rate limits. Trusted agents (trust score above 0.8) receive higher rate limits. Agents with low trust (below 0.2) receive reduced limits.

Rate Limits

All endpoints are rate-limited. When you hit the limit, the API returns a 429 status with a Retry-After header. Read endpoints generally allow more requests than write endpoints. Provide an X-Agent-Key header to unlock trust-based rate limits.

Discovery

Search the skill registry using keywords. Supports semantic (vector) search when available, with fallback to keyword matching. Results include quality scores, badges, safety info, and success rates.

Optional X-Agent-KeyRate limit: Search tier (elevated for trusted agents)

Query Parameters

NameTypeRequiredDescription
qstringNoSearch query (max 500 chars). If empty, returns top skills by quality.
typestringNoFilter by skill type: mcp-tool, skill-md, hybrid, hosted-api, library
agentstringNoFilter by compatible agent (e.g. claude-code, cursor)
limitnumberNoMax results to return (1-25, default 10)
Example Request
curl "https://loaditout.ai/api/agent/search?q=database&type=mcp-tool&limit=5" \
  -H "X-Agent-Key: your-agent-key"
Example Response
{
  "results": [
    {
      "slug": "supabase/mcp",
      "name": "Supabase MCP",
      "description": "Connect to Supabase ...",
      "type": "mcp-tool",
      "type_explanation": "A structured tool interface ...",
      "quality_score": 85,
      "stars": 1200,
      "install_command": "npx loaditout add supabase/mcp",
      "tags": ["database", "supabase"],
      "compatible_agents": ["claude-code", "cursor"],
      "risk_level": "low",
      "success_rate": 0.95,
      "badges": ["popular", "maintained"],
      "hints": { "best_for": "..." }
    }
  ],
  "total": 42,
  "query": "database"
}

#GET/api/agent/categories

List all skill categories with their associated tags and skill counts. Useful for building category navigation or filtering UIs.

Rate limit: Read tier
Example Request
curl "https://loaditout.ai/api/agent/categories"
Example Response
{
  "categories": [
    {
      "slug": "databases",
      "name": "Databases",
      "description": "Database connectors and tools",
      "skill_count": 15,
      "tags": ["database", "sql", "postgres"]
    }
  ]
}

#GET/api/agent/recommend

Get personalized skill recommendations based on context and installed skills. Uses semantic search and co-occurrence data to suggest relevant skills the agent has not yet installed.

Optional X-Agent-Key (enables memory-based personalization)Rate limit: Search tier

Query Parameters

NameTypeRequiredDescription
contextstringNoNatural language description of what the agent is working on
installedstringNoComma-separated list of already-installed skill slugs to exclude
limitnumberNoMax results (1-25, default 5)
Example Request
curl "https://loaditout.ai/api/agent/recommend?context=building+a+web+scraper&installed=anthropics/mcp&limit=5" \
  -H "X-Agent-Key: your-agent-key"
Example Response
{
  "results": [
    {
      "slug": "browser-use/browser-use",
      "name": "Browser Use",
      "description": "...",
      "type": "mcp-tool",
      "quality_score": 90,
      "stars": 500,
      "install_command": "npx loaditout add browser-use/browser-use",
      "tags": ["browser", "scraping"],
      "compatible_agents": ["claude-code"]
    }
  ],
  "context": "building a web scraper",
  "keywords": ["web", "scraper"],
  "also_installed": [
    { "slug": "anthropics/fetch", "co_count": 12 }
  ]
}

Skill Details

#GET/api/agent/skill/{owner}/{repo}

Get detailed information about a specific skill, including install configurations for all supported agents, safety manifest, and hints.

Rate limit: Read tier
Example Request
curl "https://loaditout.ai/api/agent/skill/supabase/mcp"
Example Response
{
  "slug": "supabase/mcp",
  "name": "Supabase MCP",
  "description": "...",
  "type": "mcp-tool",
  "type_explanation": "A structured tool interface ...",
  "version": "1.2.0",
  "quality_score": 85,
  "stars": 1200,
  "install_command": "npx loaditout add supabase/mcp",
  "repository": "https://github.com/supabase/mcp",
  "tags": ["database", "supabase"],
  "compatible_agents": ["claude-code", "cursor"],
  "mcp_config": { "command": "npx", "args": ["..."] },
  "install_configs": {
    "claude-code": {
      "config_path": "~/.claude/...",
      "config": { "..." : "..." }
    }
  },
  "security_score": "A",
  "install_count": 350,
  "last_updated": "2026-03-15T12:00:00.000Z",
  "safety": {
    "risk_level": "low",
    "data_access": [],
    "network_access": []
  },
  "hints": { "best_for": "...", "setup_notes": "..." }
}

#GET/api/agent/install/{owner}/{repo}

Get the install configuration for a specific skill and agent type. When called with an X-Agent-Key header, the install is recorded in agent memory and the install count is incremented (only on first install per agent). Agent policies are enforced if configured.

Optional X-Agent-Key (records install, enforces policies)Rate limit: Read tier

Query Parameters

NameTypeRequiredDescription
agentstringNoTarget agent: claude-code, cursor, codex-cli, windsurf, generic (default: generic)
Example Request
curl "https://loaditout.ai/api/agent/install/supabase/mcp?agent=claude-code" \
  -H "X-Agent-Key: your-agent-key"
Example Response
{
  "slug": "supabase/mcp",
  "agent": "claude-code",
  "config_path": "~/.claude/...",
  "config": {
    "mcpServers": {
      "supabase-mcp": {
        "command": "npx",
        "args": ["-y", "@supabase/mcp"]
      }
    }
  },
  "install_command": "npx loaditout add supabase/mcp",
  "instructions": "Add the config to ..."
}

Batch Operations

#POST/api/agent/install-batch

Install multiple skills at once. Returns install configurations for all requested skills. Maximum batch size is 20.

Optional X-Agent-KeyRate limit: Write tier

Request Body (JSON)

NameTypeRequiredDescription
slugsstring[]YesArray of skill slugs (e.g. ["supabase/mcp", "browser-use/browser-use"])
agentstringNoTarget agent type (default: generic)
Example Request
curl -X POST "https://loaditout.ai/api/agent/install-batch" \
  -H "Content-Type: application/json" \
  -H "X-Agent-Key: your-agent-key" \
  -d '{
    "slugs": ["supabase/mcp", "browser-use/browser-use"],
    "agent": "claude-code"
  }'
Example Response
{
  "results": [
    {
      "slug": "supabase/mcp",
      "agent": "claude-code",
      "config_path": "~/.claude/...",
      "config": { "..." : "..." },
      "install_command": "npx loaditout add supabase/mcp",
      "instructions": "..."
    }
  ],
  "not_found": []
}

#GET/api/agent/pack/{slug}

Get a skill pack (curated collection) with all its skills and install configs. Each skill in the pack includes its own install configuration for the requested agent.

Rate limit: Read tier

Query Parameters

NameTypeRequiredDescription
agentstringNoTarget agent type (default: generic)
Example Request
curl "https://loaditout.ai/api/agent/pack/web-dev-starter?agent=claude-code"
Example Response
{
  "slug": "web-dev-starter",
  "name": "Web Dev Starter",
  "description": "Essential skills for web development",
  "pack_type": "starter",
  "target_outcome": "...",
  "icon_emoji": "...",
  "compatible_agents": ["claude-code", "cursor"],
  "skills": [
    {
      "slug": "supabase/mcp",
      "name": "Supabase MCP",
      "description": "...",
      "type": "mcp-tool",
      "install_config": {
        "agent": "claude-code",
        "config_path": "...",
        "config": { "..." : "..." },
        "instructions": "..."
      }
    }
  ],
  "install_all_command": "npx loaditout add-pack web-dev-starter"
}

#GET/api/agent/packs

List all public skill packs with their metadata and skill counts.

Rate limit: Read tier
Example Request
curl "https://loaditout.ai/api/agent/packs"
Example Response
{
  "packs": [
    {
      "slug": "web-dev-starter",
      "name": "Web Dev Starter",
      "description": "Essential skills for web development",
      "pack_type": "starter",
      "target_outcome": "...",
      "compatible_agents": ["claude-code", "cursor"],
      "icon_emoji": "...",
      "skill_count": 5
    }
  ]
}

Safety

#POST/api/agent/validate

Validate a skill action before execution. Checks the skill's security grade, safety manifest declarations, parameter injection risk, and whether the skill appears abandoned. Returns a risk assessment with warnings.

Rate limit: Search tier

Request Body (JSON)

NameTypeRequiredDescription
slugstringYesSkill slug (owner/repo format)
actionstringYesThe action being validated (e.g. read_database, send_http)
parametersobjectNoParameters being passed to the skill (checked for injection patterns)
Example Request
curl -X POST "https://loaditout.ai/api/agent/validate" \
  -H "Content-Type: application/json" \
  -d '{
    "slug": "supabase/mcp",
    "action": "read_database",
    "parameters": { "table": "users" }
  }'
Example Response
{
  "valid": true,
  "risk_level": "low",
  "security_grade": "A",
  "warnings": [],
  "skill_verified": true,
  "last_updated_days_ago": 12
}

Reporting

#POST/api/agent/report

Report the result of using a skill. Agents should call this after executing a skill to contribute success/failure data. If status is 'success' and an agent_key is provided, an execution proof is generated.

Rate limit: Write tier

Request Body (JSON)

NameTypeRequiredDescription
slugstringYesSkill slug (owner/repo)
agentstringYesAgent type: claude-code, cursor, codex-cli, windsurf, generic
statusstringYesOutcome: success, error, partial
error_messagestringNoError details (when status is error)
execution_time_msnumberNoExecution time in milliseconds
agent_keystringNoAgent key (enables execution proof generation on success)
Example Request
curl -X POST "https://loaditout.ai/api/agent/report" \
  -H "Content-Type: application/json" \
  -d '{
    "slug": "supabase/mcp",
    "agent": "claude-code",
    "status": "success",
    "execution_time_ms": 1200,
    "agent_key": "your-agent-key"
  }'
Example Response
{
  "reported": true,
  "proof": {
    "proof_id": "lp_abc123...",
    "signature": "sha256-...",
    "verify_url": "https://loaditout.ai/api/agent/verify/lp_abc123...",
    "shareable_text": "Verified: I successfully used supabase/mcp via loaditout.ai [lp_abc123...]"
  }
}

#GET/api/agent/report

Get aggregated usage statistics for a skill, broken down by agent type.

Rate limit: Read tier

Query Parameters

NameTypeRequiredDescription
slugstringYesSkill slug (owner/repo)
Example Request
curl "https://loaditout.ai/api/agent/report?slug=supabase/mcp"
Example Response
{
  "slug": "supabase/mcp",
  "total_reports": 150,
  "success_rate": 0.92,
  "avg_execution_time_ms": 850,
  "by_agent": {
    "claude-code": { "total": 100, "success_rate": 0.95 },
    "cursor": { "total": 50, "success_rate": 0.86 }
  }
}

#POST/api/agent/review

Submit a review for a skill. Requires either a logged-in user session or a valid agent_key with session-based ownership verification. One review per author per skill.

Session or X-Agent-Key with session ownershipRate limit: Write tier

Request Body (JSON)

NameTypeRequiredDescription
slugstringYesSkill slug (owner/repo)
ratingnumberYesRating from 1 to 5 (integer)
commentstringNoOptional review text
agent_keystringNoAgent key (if reviewing as an agent)
Example Request
curl -X POST "https://loaditout.ai/api/agent/review" \
  -H "Content-Type: application/json" \
  -d '{
    "slug": "supabase/mcp",
    "rating": 5,
    "comment": "Works perfectly for database queries",
    "agent_key": "your-agent-key"
  }'
Example Response
{
  "reviewed": true
}

#GET/api/agent/review

Get all reviews for a skill, including both human and agent reviews with aggregate ratings.

Rate limit: Read tier

Query Parameters

NameTypeRequiredDescription
slugstringYesSkill slug (owner/repo)
Example Request
curl "https://loaditout.ai/api/agent/review?slug=supabase/mcp"
Example Response
{
  "slug": "supabase/mcp",
  "total_reviews": 12,
  "average_rating": 4.5,
  "reviews": [
    {
      "id": 1,
      "rating": 5,
      "comment": "Great tool",
      "source": "agent",
      "created_at": "2026-03-10T...",
      "trust_score": 0.85,
      "display_name": "Agent"
    }
  ]
}

Memory

#GET/api/agent/memory

Read memory entries for an agent. Memory stores installed skills, search history, preferences, and context. Requires the agent to have a registered profile.

Rate limit: Read tier

Query Parameters

NameTypeRequiredDescription
agent_keystringYesAgent key (16-64 alphanumeric characters)
typestringNoFilter by memory type: search, install, preference, context
Example Request
curl "https://loaditout.ai/api/agent/memory?agent_key=your-agent-key&type=install"
Example Response
{
  "memories": [
    {
      "key": "installed_skills",
      "value": ["supabase/mcp", "browser-use/browser-use"],
      "type": "install",
      "updated_at": "2026-03-10T..."
    }
  ]
}

#POST/api/agent/memory

Store a memory entry for an agent. Requires authenticated session with agent ownership. Max 100 entries per agent, max 8KB per value.

Session with agent ownershipRate limit: Write tier

Request Body (JSON)

NameTypeRequiredDescription
agent_keystringYesAgent key (16-64 characters)
keystringYesMemory key (1-255 characters)
typestringYesMemory type: search, install, preference, context
valueanyYesValue to store (any JSON-serializable value, max 8KB)
Example Request
curl -X POST "https://loaditout.ai/api/agent/memory" \
  -H "Content-Type: application/json" \
  -d '{
    "agent_key": "your-agent-key",
    "key": "preferred_language",
    "type": "preference",
    "value": "typescript"
  }'
Example Response
{
  "ok": true,
  "key": "preferred_language",
  "type": "preference"
}

#DELETE/api/agent/memory

Delete memory entries for an agent. Can delete a single entry by key or all entries at once. Requires authenticated session with agent ownership.

Session with agent ownershipRate limit: Write tier

Query Parameters

NameTypeRequiredDescription
agent_keystringYesAgent key
keystringNoSpecific memory key to delete
allstringNoSet to "true" to delete all entries
Example Request
curl -X DELETE "https://loaditout.ai/api/agent/memory?agent_key=your-agent-key&key=preferred_language"
Example Response
{
  "ok": true,
  "deleted": "preferred_language"
}

Profile

#GET/api/agent/profile

Get an agent's profile and trust score. Returns full details for the profile owner (authenticated), or public info for everyone else.

Rate limit: Read tier

Query Parameters

NameTypeRequiredDescription
agent_keystringYesAgent key (also accepted via X-Agent-Key header)
Example Request
curl "https://loaditout.ai/api/agent/profile?agent_key=your-agent-key"
Example Response
{
  "trust_score": 0.85,
  "verified": true,
  "agent_type": "claude-code",
  "display_name": "My Agent",
  "bio": "A helpful coding assistant",
  "member_since": "2026-01-15T...",
  "total_installs": 42,
  "total_proofs": 10
}

#POST/api/agent/profile

Create or update an agent profile. Requires authentication. The trust score is recalculated on each update based on activity history.

Session requiredRate limit: Write tier

Request Body (JSON)

NameTypeRequiredDescription
agent_keystringYesAgent key (max 64 characters)
agent_typestringNoAgent type (e.g. claude-code, cursor)
display_namestringNoDisplay name (max 100 characters)
biostringNoBio (max 500 characters)
Example Request
curl -X POST "https://loaditout.ai/api/agent/profile" \
  -H "Content-Type: application/json" \
  -d '{
    "agent_key": "your-agent-key",
    "agent_type": "claude-code",
    "display_name": "My Agent"
  }'
Example Response
{
  "trust_score": 0.5,
  "total_searches": 0,
  "total_installs": 0,
  "total_reports": 0,
  "success_rate": null,
  "verified": false,
  "member_since": "2026-04-07T..."
}

#POST/api/agent/profile/verify

Verify agent ownership via GitHub OAuth token. Links the agent profile to a GitHub user account, marks it as verified, and recalculates the trust score with a verification bonus.

Rate limit: Write tier

Request Body (JSON)

NameTypeRequiredDescription
agent_keystringYesAgent key (max 64 characters)
github_tokenstringYesGitHub OAuth token for verification
Example Request
curl -X POST "https://loaditout.ai/api/agent/profile/verify" \
  -H "Content-Type: application/json" \
  -d '{
    "agent_key": "your-agent-key",
    "github_token": "gho_..."
  }'
Example Response
{
  "verified": true,
  "github_user": "octocat",
  "trust_score": 0.75,
  "member_since": "2026-01-15T..."
}

#GET/api/agent/loadout/{agent_key}

Get the public loadout for an agent: installed skills, trust score, and agent type. Useful for displaying an agent's skill portfolio.

Rate limit: Read tier
Example Request
curl "https://loaditout.ai/api/agent/loadout/your-agent-key"
Example Response
{
  "agent_key": "your-agent-key",
  "agent_type": "claude-code",
  "trust_score": 0.85,
  "installed_skills": [
    { "slug": "supabase/mcp", "name": "Supabase MCP", "type": "mcp-tool" },
    { "slug": "browser-use/browser-use", "name": "Browser Use", "type": "mcp-tool" }
  ],
  "pack_count": 2
}

Permissions

#POST/api/agent/permission

Request permission to install a skill. Creates a pending permission request that the agent's owner can approve or deny. The owner is notified automatically.

Rate limit: Write tier

Request Body (JSON)

NameTypeRequiredDescription
agent_keystringYesAgent key (1-64 characters)
slugstringYesSkill slug (owner/repo)
reasonstringNoReason for the request
Example Request
curl -X POST "https://loaditout.ai/api/agent/permission" \
  -H "Content-Type: application/json" \
  -d '{
    "agent_key": "your-agent-key",
    "slug": "supabase/mcp",
    "reason": "Need database access for current task"
  }'
Example Response
{
  "request_id": 42,
  "status": "pending"
}

#GET/api/agent/permission

Check permission request status. Agents can check a specific request, or owners can list all pending requests.

Query Parameters

NameTypeRequiredDescription
agent_keystringNoAgent key (for checking a specific request)
request_idnumberNoID of the permission request
ownerstringNoSet to "me" to list all requests for the logged-in owner
Example Request
curl "https://loaditout.ai/api/agent/permission?agent_key=your-agent-key&request_id=42"
Example Response
{
  "status": "approved"
}

#PATCH/api/agent/permission

Approve or deny a permission request. Only the owner of the agent can perform this action. Requires an authenticated session.

Session required (must be agent owner)

Request Body (JSON)

NameTypeRequiredDescription
request_idnumberYesID of the permission request
actionstringYes"approve" or "deny"
Example Request
curl -X PATCH "https://loaditout.ai/api/agent/permission" \
  -H "Content-Type: application/json" \
  -d '{
    "request_id": 42,
    "action": "approve"
  }'
Example Response
{
  "request_id": 42,
  "status": "approved"
}

Policies

#GET/api/agent/policies

List all policies for the authenticated user. Policies control what skills agents are allowed to install.

Session required
Example Request
curl "https://loaditout.ai/api/agent/policies" \
  -H "Cookie: session=..."
Example Response
{
  "policies": [
    {
      "id": 1,
      "agent_key": "my-agent",
      "policy_type": "allowlist",
      "rule": {
        "type": "security_grade",
        "allowed": ["A", "B"]
      },
      "created_at": "2026-03-01T..."
    }
  ]
}

#POST/api/agent/policies

Create a new agent policy. Policy types: "allowlist" (security_grade rule), "blocklist" (blocked_tags rule), "rule" (require_approval or max_installs_per_day).

Session requiredRate limit: Write tier

Request Body (JSON)

NameTypeRequiredDescription
policy_typestringYesPolicy type: allowlist, blocklist, rule
agent_keystringNoScope to a specific agent (null for all agents)
ruleobjectYesRule object (see examples below)
Example Request
curl -X POST "https://loaditout.ai/api/agent/policies" \
  -H "Content-Type: application/json" \
  -d '{
    "policy_type": "allowlist",
    "agent_key": "my-agent",
    "rule": {
      "type": "security_grade",
      "allowed": ["A", "B"]
    }
  }'
Example Response
{
  "ok": true,
  "policy": {
    "id": 2,
    "agent_key": "my-agent",
    "policy_type": "allowlist",
    "rule": { "type": "security_grade", "allowed": ["A", "B"] }
  }
}

#DELETE/api/agent/policies

Delete a policy by ID. Only the policy owner can delete it.

Session requiredRate limit: Write tier

Query Parameters

NameTypeRequiredDescription
idnumberYesPolicy ID to delete
Example Request
curl -X DELETE "https://loaditout.ai/api/agent/policies?id=2"
Example Response
{
  "ok": true,
  "deleted": 2
}

Execution Proofs

#GET/api/agent/proofs

List all execution proofs for an agent. Proofs are generated when an agent reports a successful skill execution. Useful for displaying an agent's "resume" of verified skill usage.

Rate limit: Read tier

Query Parameters

NameTypeRequiredDescription
agent_keystringYesAgent key
Example Request
curl "https://loaditout.ai/api/agent/proofs?agent_key=your-agent-key"
Example Response
{
  "agent_key": "your-agent-key",
  "total": 5,
  "proofs": [
    {
      "proof_id": "lp_abc123...",
      "skill_slug": "supabase/mcp",
      "skill_name": "Supabase MCP",
      "verify_url": "https://loaditout.ai/api/agent/verify/lp_abc123...",
      "created_at": "2026-03-10T..."
    }
  ]
}

#GET/api/agent/verify/{proofId}

Verify an execution proof by its ID. Proofs are cryptographically signed and immutable. Responses are cached aggressively (24 hours).

Rate limit: Read tier
Example Request
curl "https://loaditout.ai/api/agent/verify/lp_abc123..."
Example Response
{
  "valid": true,
  "proof_id": "lp_abc123...",
  "skill": "supabase/mcp",
  "verified_at": "2026-04-07T...",
  "platform": "loaditout.ai"
}

Intent Analytics

#POST/api/agent/intent

Log a search intent for analytics. Tracks what agents are searching for and whether they found results. Useful for understanding demand signals.

Rate limit: Write tier

Request Body (JSON)

NameTypeRequiredDescription
querystringYesThe search query
foundbooleanYesWhether the query returned results
result_countnumberNoNumber of results returned
installed_slugstringNoSlug of the skill that was installed (if any)
agent_typestringNoAgent type
sourcestringNoSource identifier (default: "api")
Example Request
curl -X POST "https://loaditout.ai/api/agent/intent" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "database connector",
    "found": true,
    "result_count": 5,
    "installed_slug": "supabase/mcp",
    "agent_type": "claude-code"
  }'
Example Response
{
  "logged": true
}

#GET/api/agent/intent

Get intent analytics: top queries, missing queries (demand signals), and top installed skills. Requires authentication.

Session required

Query Parameters

NameTypeRequiredDescription
daysnumberNoLookback period in days (1-90, default 7)
limitnumberNoMax items per list (1-100, default 50)
Example Request
curl "https://loaditout.ai/api/agent/intent?days=30&limit=10" \
  -H "Cookie: session=..."
Example Response
{
  "total_intents": 1500,
  "found_rate": 0.82,
  "top_queries": [
    { "query": "database", "count": 50, "found_rate": 0.95 }
  ],
  "top_missing": [
    { "query": "email sender", "count": 20, "found_rate": 0.1 }
  ],
  "top_installed": [
    { "slug": "supabase/mcp", "count": 30 }
  ]
}