{
  "$schema": "https://saferico.com/agent.json",
  "name": "SaferICO",
  "description": "On-chain security: contract audits, adversarial simulation, wallet risk, live contract monitoring and AI-agent security, across 25 EVM networks.",
  "website": "https://saferico.com",
  "documentation": "https://saferico.com/docs",
  "generated": "by scripts/agent.mjs from src/tools/registry.js — do not edit by hand",
  "interfaces": {
    "mcp": {
      "url": "https://saferico.com/mcp",
      "transport": "streamable-http",
      "protocolVersions": [
        "2026-07-28",
        "2025-11-25",
        "2025-06-18",
        "2025-03-26"
      ],
      "authentication": {
        "type": "bearer",
        "header": "Authorization",
        "prefix": "sfi_live_",
        "plan": {
          "key": "business",
          "label": "Business",
          "usd": 29.9
        }
      },
      "card": "https://saferico.com/mcp.json"
    },
    "http": {
      "baseUrl": "https://saferico.com/api/v1",
      "openapi": "https://saferico.com/openapi.json",
      "authentication": {
        "type": "bearer",
        "header": "Authorization",
        "prefix": "sfi_live_",
        "plan": {
          "key": "business",
          "label": "Business",
          "usd": 29.9
        }
      }
    },
    "cli": {
      "install": "npx saferico scan ./contracts",
      "package": "saferico",
      "localMcp": "npx saferico mcp",
      "note": "The 201-detector audit runs on your machine. Source code is never uploaded.",
      "engine": {
        "latest": "2026.09.01",
        "versions": [
          "2026.09.01"
        ],
        "manifest": "https://saferico.com/engine/manifest.json"
      }
    }
  },
  "capabilities": {
    "remote": [
      "market_info",
      "token_info",
      "check_honeypot",
      "portfolio_scan",
      "contract_source",
      "bytecode_scan",
      "explain_transaction",
      "scan_agent_config"
    ],
    "local": [
      "scan_path",
      "scan_source",
      "engine_info"
    ],
    "categories": [
      {
        "name": "contract-inspection",
        "tools": [
          "contract_source",
          "bytecode_scan",
          "token_info"
        ]
      },
      {
        "name": "trade-safety",
        "tools": [
          "check_honeypot"
        ]
      },
      {
        "name": "wallet",
        "tools": [
          "portfolio_scan"
        ]
      },
      {
        "name": "market",
        "tools": [
          "market_info"
        ]
      },
      {
        "name": "deep-audit",
        "tools": [
          "scan_path",
          "scan_source"
        ],
        "where": "local only"
      }
    ]
  },
  "tools": [
    {
      "name": "market_info",
      "description": "Live native-coin prices and gas across the supported chains, and which chain is cheapest to deploy on right now.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "required": [],
        "additionalProperties": false
      },
      "outputSchema": {
        "type": "object",
        "required": [
          "ok"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "description": "true when the tool answered; false when it refused."
          },
          "error": {
            "type": "string",
            "description": "Stable machine-readable reason, present only when ok is false."
          },
          "detail": {
            "type": "string",
            "description": "Human-readable explanation, present only when ok is false."
          }
        },
        "additionalProperties": true,
        "description": "Live native-coin prices and gas across the supported chains, and which chain is cheapest to deploy on right now."
      },
      "surfaces": [
        "mcp",
        "api"
      ],
      "plan": {
        "key": "business",
        "label": "Business",
        "usd": 29.9
      },
      "credits": 2
    },
    {
      "name": "token_info",
      "description": "Read a token's on-chain facts: name, symbol, decimals, total supply and owner.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "description": "Token contract address",
            "maxLength": 4096
          },
          "network": {
            "type": "string",
            "description": "Chain name or id",
            "maxLength": 4096
          }
        },
        "required": [
          "token"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "type": "object",
        "required": [
          "ok"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "description": "true when the tool answered; false when it refused."
          },
          "error": {
            "type": "string",
            "description": "Stable machine-readable reason, present only when ok is false."
          },
          "detail": {
            "type": "string",
            "description": "Human-readable explanation, present only when ok is false."
          }
        },
        "additionalProperties": true,
        "description": "Read a token's on-chain facts: name, symbol, decimals, total supply and owner."
      },
      "surfaces": [
        "mcp",
        "api"
      ],
      "plan": {
        "key": "business",
        "label": "Business",
        "usd": 29.9
      },
      "credits": 2
    },
    {
      "name": "check_honeypot",
      "description": "Simulate a buy and a sell against a token to detect honeypots and hidden transfer taxes.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "description": "Token address",
            "maxLength": 4096
          },
          "network": {
            "type": "string",
            "description": "Chain name or id",
            "maxLength": 4096
          }
        },
        "required": [
          "token"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "type": "object",
        "required": [
          "ok"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "description": "true when the tool answered; false when it refused."
          },
          "error": {
            "type": "string",
            "description": "Stable machine-readable reason, present only when ok is false."
          },
          "detail": {
            "type": "string",
            "description": "Human-readable explanation, present only when ok is false."
          }
        },
        "additionalProperties": true,
        "description": "Simulate a buy and a sell against a token to detect honeypots and hidden transfer taxes."
      },
      "surfaces": [
        "mcp",
        "api"
      ],
      "plan": {
        "key": "business",
        "label": "Business",
        "usd": 29.9
      },
      "credits": 2
    },
    {
      "name": "portfolio_scan",
      "description": "Read the wallet's native-coin balance and its USD value across the supported chains.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "description": "Wallet address (defaults to the connected wallet)",
            "maxLength": 4096
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "outputSchema": {
        "type": "object",
        "required": [
          "ok"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "description": "true when the tool answered; false when it refused."
          },
          "error": {
            "type": "string",
            "description": "Stable machine-readable reason, present only when ok is false."
          },
          "detail": {
            "type": "string",
            "description": "Human-readable explanation, present only when ok is false."
          }
        },
        "additionalProperties": true,
        "description": "Read the wallet's native-coin balance and its USD value across the supported chains."
      },
      "surfaces": [
        "mcp",
        "api"
      ],
      "plan": {
        "key": "business",
        "label": "Business",
        "usd": 29.9
      },
      "credits": 2
    },
    {
      "name": "contract_source",
      "description": "Fetch a contract's verification status, compiler, proxy status and source metadata from the explorer.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "description": "Contract address",
            "maxLength": 4096
          },
          "network": {
            "type": "string",
            "description": "Chain name or id",
            "maxLength": 4096
          }
        },
        "required": [
          "address"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "type": "object",
        "required": [
          "ok"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "description": "true when the tool answered; false when it refused."
          },
          "error": {
            "type": "string",
            "description": "Stable machine-readable reason, present only when ok is false."
          },
          "detail": {
            "type": "string",
            "description": "Human-readable explanation, present only when ok is false."
          }
        },
        "additionalProperties": true,
        "description": "Fetch a contract's verification status, compiler, proxy status and source metadata from the explorer."
      },
      "surfaces": [
        "mcp",
        "api"
      ],
      "plan": {
        "key": "business",
        "label": "Business",
        "usd": 29.9
      },
      "credits": 2
    },
    {
      "name": "bytecode_scan",
      "description": "Analyse an UNVERIFIED contract straight from its deployed bytecode: which functions it exposes (mint, blacklist, pause, fee and withdrawal entry points), which opcodes it contains (SELFDESTRUCT, DELEGATECALL, tx.origin), whether it is an upgradeable proxy, and which compiler built it. Use this whenever contract_source reports the source is not verified.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "description": "Contract address",
            "maxLength": 4096
          },
          "network": {
            "type": "string",
            "description": "Chain name or id",
            "maxLength": 4096
          }
        },
        "required": [
          "address"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "type": "object",
        "required": [
          "ok"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "description": "true when the tool answered; false when it refused."
          },
          "error": {
            "type": "string",
            "description": "Stable machine-readable reason, present only when ok is false."
          },
          "detail": {
            "type": "string",
            "description": "Human-readable explanation, present only when ok is false."
          }
        },
        "additionalProperties": true,
        "description": "Analyse an UNVERIFIED contract straight from its deployed bytecode: which functions it exposes (mint, blacklist, pause, fee and withdrawal entry points), which opcodes it contains (SELFDESTRUCT, DELEGATECALL, tx.origin), whether it is an upgradeable proxy, and which compiler built it. Use this whenever contract_source reports the source is not verified."
      },
      "surfaces": [
        "mcp",
        "api"
      ],
      "plan": {
        "key": "elite",
        "label": "AI Agents",
        "usd": 59.9
      },
      "credits": 2
    },
    {
      "name": "explain_transaction",
      "description": "Explain what one transaction actually did: status, decoded function call, ERC-20 and NFT movements, approvals granted (flagging unlimited ones), every contract touched, and security-relevant signals such as proxy upgrades, ownership transfers and role grants. Reads the receipt and its logs — it does NOT trace internal calls, because public RPC endpoints do not expose tracing.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "hash": {
            "type": "string",
            "description": "Transaction hash (0x + 64 hex)",
            "maxLength": 4096
          },
          "network": {
            "type": "string",
            "description": "Chain name or id",
            "maxLength": 4096
          }
        },
        "required": [
          "hash"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "type": "object",
        "required": [
          "ok"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "description": "true when the tool answered; false when it refused."
          },
          "error": {
            "type": "string",
            "description": "Stable machine-readable reason, present only when ok is false."
          },
          "detail": {
            "type": "string",
            "description": "Human-readable explanation, present only when ok is false."
          }
        },
        "additionalProperties": true,
        "description": "Explain what one transaction actually did: status, decoded function call, ERC-20 and NFT movements, approvals granted (flagging unlimited ones), every contract touched, and security-relevant signals such as proxy upgrades, ownership transfers and role grants. Reads the receipt and its logs — it does NOT trace internal calls, because public RPC endpoints do not expose tracing."
      },
      "surfaces": [
        "mcp",
        "api"
      ],
      "plan": {
        "key": "business",
        "label": "Business",
        "usd": 29.9
      },
      "credits": 2
    },
    {
      "name": "scan_agent_config",
      "description": "Security-review the text of an AI agent skill, instruction file or MCP server configuration for patterns that are dangerous by construction: shell commands in server definitions, disabled sandboxes, wildcard command permissions, hardcoded credentials and private keys, instructions to read credential stores, outbound calls to data-collection endpoints, prompt-injection and instruction-override text, hidden HTML-comment instructions, invisible or bidirectional-override characters, and unpinned packages. This is pattern matching over text, NOT smart-contract analysis, and a clean result means no known pattern matched — not that the file is safe to run. Reads up to 4 KB here; use `npx saferico skill <path>` for a whole directory, locally, with nothing uploaded.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "content": {
            "type": "string",
            "description": "The file's text",
            "maxLength": 4096
          },
          "filename": {
            "type": "string",
            "description": "Its name, e.g. mcp.json or SKILL.md — decides which rules apply",
            "maxLength": 4096
          }
        },
        "required": [
          "content"
        ],
        "additionalProperties": false
      },
      "outputSchema": {
        "type": "object",
        "required": [
          "ok"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "description": "true when the tool answered; false when it refused."
          },
          "error": {
            "type": "string",
            "description": "Stable machine-readable reason, present only when ok is false."
          },
          "detail": {
            "type": "string",
            "description": "Human-readable explanation, present only when ok is false."
          }
        },
        "additionalProperties": true,
        "description": "Security-review the text of an AI agent skill, instruction file or MCP server configuration for patterns that are dangerous by construction: shell commands in server definitions, disabled sandboxes, wildcard command permissions, hardcoded credentials and private keys, instructions to read credential stores, outbound calls to data-collection endpoints, prompt-injection and instruction-override text, hidden HTML-comment instructions, invisible or bidirectional-override characters, and unpinned packages. This is pattern matching over text, NOT smart-contract analysis, and a clean result means no known pattern matched — not that the file is safe to run. Reads up to 4 KB here; use `npx saferico skill <path>` for a whole directory, locally, with nothing uploaded."
      },
      "surfaces": [
        "mcp",
        "api"
      ],
      "plan": {
        "key": "business",
        "label": "Business",
        "usd": 29.9
      },
      "credits": 1
    }
  ],
  "notExposedRemotely": [
    {
      "name": "build_token",
      "reason": "Produces an unsigned transaction plan. A wallet must sign it, so it lives on the website, not behind a bearer key."
    },
    {
      "name": "create_nft",
      "reason": "Produces an unsigned transaction plan. A wallet must sign it, so it lives on the website, not behind a bearer key."
    },
    {
      "name": "create_staking",
      "reason": "Produces an unsigned transaction plan. A wallet must sign it, so it lives on the website, not behind a bearer key."
    },
    {
      "name": "create_airdrop",
      "reason": "Produces an unsigned transaction plan. A wallet must sign it, so it lives on the website, not behind a bearer key."
    },
    {
      "name": "lock_tokens",
      "reason": "Produces an unsigned transaction plan. A wallet must sign it, so it lives on the website, not behind a bearer key."
    },
    {
      "name": "manage_token",
      "reason": "Produces an unsigned transaction plan. A wallet must sign it, so it lives on the website, not behind a bearer key."
    },
    {
      "name": "swap_tokens",
      "reason": "Produces an unsigned transaction plan. A wallet must sign it, so it lives on the website, not behind a bearer key."
    },
    {
      "name": "audit_contract",
      "reason": "Runs where the CPU is: the browser, your CI runner, or `npx saferico scan`. Too heavy for an edge request."
    },
    {
      "name": "explain_report",
      "reason": "Runs where the CPU is: the browser, your CI runner, or `npx saferico scan`. Too heavy for an edge request."
    },
    {
      "name": "simulate_attack",
      "reason": "Runs where the CPU is: the browser, your CI runner, or `npx saferico scan`. Too heavy for an edge request."
    },
    {
      "name": "revoke_approvals",
      "reason": "Runs where the CPU is: the browser, your CI runner, or `npx saferico scan`. Too heavy for an edge request."
    },
    {
      "name": "create_automation",
      "reason": "Produces an unsigned transaction plan. A wallet must sign it, so it lives on the website, not behind a bearer key."
    },
    {
      "name": "launch_project",
      "reason": "Produces an unsigned transaction plan. A wallet must sign it, so it lives on the website, not behind a bearer key."
    }
  ],
  "networks": {
    "scan": [
      {
        "chainId": 1,
        "name": "Ethereum"
      },
      {
        "chainId": 10,
        "name": "Optimism"
      },
      {
        "chainId": 56,
        "name": "BNB Chain"
      },
      {
        "chainId": 100,
        "name": "Gnosis"
      },
      {
        "chainId": 130,
        "name": "Unichain"
      },
      {
        "chainId": 137,
        "name": "Polygon"
      },
      {
        "chainId": 143,
        "name": "Monad"
      },
      {
        "chainId": 146,
        "name": "Sonic"
      },
      {
        "chainId": 204,
        "name": "opBNB"
      },
      {
        "chainId": 252,
        "name": "Fraxtal"
      },
      {
        "chainId": 480,
        "name": "World Chain"
      },
      {
        "chainId": 999,
        "name": "HyperEVM"
      },
      {
        "chainId": 1329,
        "name": "Sei"
      },
      {
        "chainId": 2741,
        "name": "Abstract"
      },
      {
        "chainId": 5000,
        "name": "Mantle"
      },
      {
        "chainId": 8453,
        "name": "Base"
      },
      {
        "chainId": 33139,
        "name": "ApeChain"
      },
      {
        "chainId": 42161,
        "name": "Arbitrum"
      },
      {
        "chainId": 42220,
        "name": "Celo"
      },
      {
        "chainId": 43114,
        "name": "Avalanche"
      },
      {
        "chainId": 59144,
        "name": "Linea"
      },
      {
        "chainId": 80094,
        "name": "Berachain"
      },
      {
        "chainId": 81457,
        "name": "Blast"
      },
      {
        "chainId": 167000,
        "name": "Taiko"
      },
      {
        "chainId": 747474,
        "name": "Katana"
      }
    ],
    "count": 25
  },
  "pricing": {
    "plans": [
      {
        "key": "starter",
        "label": "Free",
        "usd": 0,
        "monthlyCredits": 0
      },
      {
        "key": "pro",
        "label": "Pro",
        "usd": 9.99,
        "monthlyCredits": 1500
      },
      {
        "key": "business",
        "label": "Business",
        "usd": 29.9,
        "monthlyCredits": 4000
      },
      {
        "key": "elite",
        "label": "AI Agents",
        "usd": 59.9,
        "monthlyCredits": 12000
      },
      {
        "key": "protocol",
        "label": "Protocol",
        "usd": 199,
        "monthlyCredits": 40000
      }
    ],
    "creditCosts": {
      "chat": 1,
      "tool_read": 2,
      "tool_write": 3,
      "scan": 5,
      "api": 2,
      "attack": 5,
      "agentsec_analyze": 5,
      "agentsec_probe": 10,
      "agentsec_session": 10,
      "scan_config": 1
    },
    "freeScans": {
      "anon": {
        "perDay": 3,
        "label": "3 scans a day"
      },
      "free": {
        "perMonth": 10,
        "label": "10 scans a month"
      }
    },
    "apiRequires": {
      "key": "business",
      "label": "Business",
      "usd": 29.9
    },
    "note": "The local CLI scan needs no key and no plan. Keys are for the hosted tools and for recording results to an account."
  },
  "limitations": [
    "The 201-detector Solidity audit is never executed server-side; the remote surfaces carry the lightweight reads only.",
    "No tool signs, sends or holds anything. Transaction-producing tools exist only on the website, where a wallet signs.",
    "Reads depend on public explorers and RPC endpoints, so a chain whose explorer is down answers with an error rather than a guess.",
    "An unverified contract has no source to read; use bytecode_scan, which analyses the deployed bytecode instead.",
    "Results describe risk, not outcome. Nothing here says a contract or a wallet is safe.",
    "The public surfaces are bounded: 240 requests a minute per address and 10000 a day per key, answered with 429 and Retry-After. Listing tools is free of credits but not free of this ceiling."
  ],
  "security": {
    "keyCustody": "none — no private key is ever accepted, stored or requested",
    "sourceCode": "never uploaded by the CLI or the CI runner; only counts and rule ids are posted back",
    "ssrf": "every outbound host is checked against a refusal list; private, link-local and metadata addresses are rejected",
    "contact": "https://saferico.com/docs"
  }
}
