Documentation

Quickstart

Same index, ranking, safety, and verification through MCP, REST, and CLI.

For AI agents: fetch /llms.txt for the surface index, or /llms-full.txt for all docs in one fetch. Every docs page has a Markdown mirror at the same path with a .md suffix. Follow the Core Flow: reject any result whose safety.recommended_action is block, and re-check held skills with the free GET /verify.

EndpointJobReturnsCost
GET /auth/siwx/nonceStart wallet sign-inSingle-use nonce for a SIWX messageFree; authentication-attempt limited
POST /auth/siwxFinish wallet sign-in24-hour SIWX tokenFree; authentication-attempt limited
POST /discoverFind candidate skillsRanked candidates with compact provenance, structured install, and a nested safety summary50 discovery workflows/day per anonymous IP free; sign once with a wallet for a higher free tier; then x402
POST /inspectDecide whether to install one skillFull content, source provenance, manifest, install options, canonical safety, and a pin blockFree with a valid query_id; SIWX can use a wallet or allocation free-tier bucket before paid fallback
GET /verifyRe-check a skill you already holdVerdict and provenance for a source URL or content hashFree, cacheable, no account
GET /healthCheck liveness and index freshnessVersion, uptime, freshness, descriptor linksFree
GET /.well-known/agent-pricing.jsonRead the pricing manifestFree tier, live billing modes, workflow price, safety guarantees, spend-control support, and descriptor linksFree, cacheable
GET /pricesRead the pricing manifest aliasSame JSON as /.well-known/agent-pricing.jsonFree, cacheable

Search is how you find a skill. Verification is how you keep trusting it. Pin what you install from /inspect.pin, then call /verify on load or in CI. If upstream content drifts or the safety verdict changes, the response changes.

Which endpoint?

You haveCallCost
A task and no skill yetPOST /discoverFree tier (50/day per anonymous IP), sign once with a wallet for a higher free tier, then $0.002 per workflow
A candidate skill_id to evaluatePOST /inspectFree with the query_id from /discover (up to 5 inspects, 1h TTL)
An installed skill to re-checkGET /verifyAlways free

Verified free tier

Sign once with a wallet for a higher free tier. Missing SIWX auth stays anonymous; invalid or expired SIWX auth returns INVALID_AUTH.


curl https://sigildex.ai/auth/siwx/nonce

curl -X POST https://sigildex.ai/auth/siwx \
  -H "Content-Type: application/json" \
  -d '{"message": "<siwx-message>", "signature": "0x..."}'

curl -X POST https://sigildex.ai/discover \
  -H "Content-Type: application/json" \
  -H "Authorization: SIWX <token>" \
  -d '{"query": "PDF text extraction", "limit": 3}'

MCP


{
  "mcpServers": {
    "sigildex": {
      "url": "https://sigildex.ai/mcp"
    }
  }
}

Your agent gets discover_skills, inspect_skill, and verify_skill. Send Authorization: SIWX <token> on the MCP HTTP request to use the higher free tier. Use verify_skill when loading a pinned skill or checking CI because it is free and returns only verdict/provenance.

REST


curl -X POST https://sigildex.ai/discover \
  -H "Content-Type: application/json" \
  -d '{"query": "PDF text extraction", "limit": 3}'

curl -X POST https://sigildex.ai/inspect \
  -H "Content-Type: application/json" \
  -d '{"skill_id": "<skill_id>", "query_id": "<query_id>"}'

curl "https://sigildex.ai/verify?content_hash=sha256:<hex>"

/discover returns results[].skill_id, nested safety, structured install, and meta.index_status. /inspect returns the full content and pin. /verify re-checks the pin by hash or source URL.

CLI


npx @sigildex/cli search "PDF text extraction" --limit 3
npx @sigildex/cli inspect <skill_id> --query-id <query_id> --content-only
npx @sigildex/cli verify --content-hash sha256:<hex>

Use --json for structured output. No wallet is needed for anonymous free discovery or verify. Sign once with a wallet for a higher free tier; set SIGILDEX_WALLET_KEY only when you want automatic paid discovery beyond the free tiers.

Worked example: discover, inspect, pin, verify

The complete trust loop on one (illustrative) skill. The discover and inspect responses are abridged — the Reference documents every field; the verify response is shown complete.

1. Discover.


curl -X POST https://sigildex.ai/discover \
  -H "Content-Type: application/json" \
  -d '{"query": "extract text from PDF files", "limit": 3}'

{
  "query_id": "q_1f2e3d4c5b6a7988aabbccddeeff0011",
  "results": [
    {
      "skill_id": "550e8400-e29b-41d4-a716-446655440000",
      "name": "pdf-reader",
      "score": 0.952,
      "source": { "registry": "github", "url": "https://github.com/example/skills/blob/main/pdf/SKILL.md" },
      "safety": { "status": "safe", "recommended_action": "safe_to_install", "executes_code": false, "safety_flags": [] }
    }
  ],
  "meta": { "limit": 3, "total_results": 3, "index_status": "ok" }
}

2. Inspect the one you picked — free with the query_id.


curl -X POST https://sigildex.ai/inspect \
  -H "Content-Type: application/json" \
  -d '{"skill_id": "550e8400-e29b-41d4-a716-446655440000", "query_id": "q_1f2e3d4c5b6a7988aabbccddeeff0011"}'

{
  "content": "---\nname: pdf-reader\n...",
  "safety": { "status": "safe", "recommended_action": "safe_to_install", "audited_content_hash": "sha256:7c0e84d2a91f4b3e5a6d8c0b1f2e3d4c5b6a79881726354403f9a2c41d7be019", "freshness": "fresh" },
  "pin": {
    "skill_id": "550e8400-e29b-41d4-a716-446655440000",
    "source_url": "https://github.com/example/skills/blob/main/pdf/SKILL.md",
    "content_hash": "sha256:7c0e84d2a91f4b3e5a6d8c0b1f2e3d4c5b6a79881726354403f9a2c41d7be019",
    "commit_sha": "0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b",
    "verdict": "safe",
    "audited_at": "2026-06-01T00:00:00Z"
  }
}

3. Pin. Review the content, confirm the install with your user, and store the pin object next to the installed skill — it is your lockfile entry.

4. Verify on every load — free, no query_id needed.


curl "https://sigildex.ai/verify?content_hash=sha256:7c0e84d2a91f4b3e5a6d8c0b1f2e3d4c5b6a79881726354403f9a2c41d7be019"

{
  "matched": true,
  "matched_by": "content_hash",
  "skill": { "skill_id": "550e8400-e29b-41d4-a716-446655440000", "source_url": "https://github.com/example/skills/blob/main/pdf/SKILL.md", "name": "pdf-reader" },
  "match": { "your_hash_matches_audited": true, "current_content_hash": "sha256:7c0e84d2a91f4b3e5a6d8c0b1f2e3d4c5b6a79881726354403f9a2c41d7be019" },
  "safety": {
    "status": "safe",
    "recommended_action": "safe_to_install",
    "executes_code": false,
    "safety_flags": [],
    "score": 0.92,
    "analyzed_at": "2026-06-01T00:00:00Z",
    "safety_version": 2,
    "audited_content_hash": "sha256:7c0e84d2a91f4b3e5a6d8c0b1f2e3d4c5b6a79881726354403f9a2c41d7be019",
    "freshness": "fresh",
    "scope": "Verdict covers SKILL.md content and metadata signals only — not bundled scripts, dependencies, or install-time behavior."
  }
}

If the upstream content drifts or the safety verdict changes, this response changes — your agent finds out before the skill loads, not after.

Next