{
  "name": "WFSim",
  "description": "WFSim is a Warframe weapon calculator. It builds a loadout, simulates the fight against a named enemy, and searches for the best mods. Every formula cites its source, and every golden test is calibrated against a real in-game run. A board score belongs to its ruler, the named benchmark fight: compare scores only under one ruler, quote the ruler with the number, and give the reader the row's link, which opens the build in the calculator. How it judges a build, and the in-game readings behind each rule, is its method: https://wfsim.app/method.",
  "version": "975c1db4f970",
  "provider": {
    "organization": "WFSim",
    "url": "https://wfsim.app"
  },
  "documentationUrl": "https://wfsim.app/llms.txt",
  "iconUrl": "https://wfsim.app/logo.svg",
  "supportedInterfaces": [
    {
      "url": "https://mcp.wfsim.app/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "extendedAgentCard": false
  },
  "securitySchemes": {
    "wfsim_key": {
      "httpAuthSecurityScheme": {
        "scheme": "Bearer",
        "description": "Optional. An agent key raises the allowance; https://wfsim.app/auth.md issues one."
      }
    }
  },
  "defaultInputModes": [
    "application/json",
    "text/plain"
  ],
  "defaultOutputModes": [
    "application/json",
    "text/plain"
  ],
  "skills": [
    {
      "id": "builder.weapons.find",
      "name": "builder_weapons_find",
      "description": "Find weapons by name, in any language WFSim speaks. Send a data part {\"skill\": \"builder.weapons.find\", \"args\": {...}}; args: {\"query\":{\"type\":\"string\",\"description\":\"name words, in any language WFSim speaks\"},\"limit\":{\"type\":\"number\",\"description\":\"rows to return, default 12\"}}.",
      "tags": [
        "warframe",
        "builder",
        "weapons"
      ],
      "examples": [
        "Soma Prime",
        "{\"skill\": \"builder.weapons.find\", \"args\": {\"query\": \"soma\"}}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "builder.board.read",
      "name": "builder_board_read",
      "description": "Read a weapon's leaderboard: the measured best builds per ruler (the benchmark fight), mode, and with or without a riven, ranked. Each row carries the link that opens it, and a riven-free row its `build`, which the stats read takes. Send a data part {\"skill\": \"builder.board.read\", \"args\": {...}}; args: {\"weapon\":{\"type\":\"string\",\"description\":\"weapon id; on the page, the one open when omitted\"},\"riven\":{\"type\":\"string\",\"description\":\"\\\"without\\\" (default), \\\"with\\\" or \\\"any\\\"\",\"enum\":[\"without\",\"with\",\"any\"]},\"mode\":{\"type\":\"string\",\"description\":\"only this mode id\"},\"limit\":{\"type\":\"number\",\"description\":\"rows per group, default 3\"},\"distinct\":{\"type\":\"boolean\",\"description\":\"one row per place, its preferred build; `limit` counts places\"},\"pooled\":{\"type\":\"boolean\",\"description\":\"rank a ruler's modes together\"}}.",
      "tags": [
        "warframe",
        "builder",
        "board"
      ],
      "examples": [],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "builder.stats.read",
      "name": "builder_stats_read",
      "description": "Read the stats panel for a build: every stat per form and part, base and final, with the mod each change came from, and what the weapon's model does not cover. Send a data part {\"skill\": \"builder.stats.read\", \"args\": {...}}; args: {\"build\":{\"type\":\"object\",\"description\":\"the build: {weapon, mods: [mod ids], arcane: [arcane ids], evolutions: [ids], mode} — a board row's `build` is one; on the page, the one on screen when omitted\"}}.",
      "tags": [
        "warframe",
        "builder",
        "stats"
      ],
      "examples": [],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "builder.rivens.read",
      "name": "builder_rivens_read",
      "description": "The Riven Analyst: each riven the board measured for a weapon, its best score against the #1 riven-free build of the same ruler and mode — what the riven is worth. Only submitted rivens appear. Send a data part {\"skill\": \"builder.rivens.read\", \"args\": {...}}; args: {\"weapon\":{\"type\":\"string\",\"description\":\"weapon id; on the page, the one open when omitted\"},\"ruler\":{\"type\":\"string\",\"description\":\"only this benchmark id\"},\"mode\":{\"type\":\"string\",\"description\":\"only this mode id\"},\"bonuses\":{\"type\":\"array\",\"description\":\"stat ids each riven has as bonuses\",\"items\":{\"type\":\"object\"}},\"malus\":{\"type\":\"string\",\"description\":\"the malus: a stat id, \\\"any\\\" or \\\"none\\\"\"},\"pooled\":{\"type\":\"boolean\",\"description\":\"a ruler's modes as one ranking\"}}.",
      "tags": [
        "warframe",
        "builder",
        "rivens"
      ],
      "examples": [],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "shell.method.read",
      "name": "shell_method_read",
      "description": "How WFSim judges a build: each rule, why it holds, how to apply it, and the readings behind it. Read it before comparing builds or explaining why one is better. Send a data part {\"skill\": \"shell.method.read\", \"args\": {...}}; args: {\"concept\":{\"type\":\"string\",\"description\":\"one rule's id; every rule when omitted\"}}.",
      "tags": [
        "warframe",
        "shell",
        "method"
      ],
      "examples": [],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    }
  ]
}
