{
  "id": "Tool_Registry",
  "title": "Tool Registry",
  "url": "https://swarmglass.quantara.cv/wiki/Tool_Registry",
  "archive_ref": "QUANTARA-SWARMGLASS-R56-485615",
  "kind": "article",
  "status": "current",
  "categories": [
    "ANTFARM Core",
    "Tools"
  ],
  "created": "2011-04-20",
  "modified": "2015-09-11",
  "revisions": 33,
  "authors": [
    "mkerrigan",
    "r.osei",
    "dlopes"
  ],
  "infobox": {
    "Service": "toolreg",
    "Port": "7423",
    "Schema": "toolreg v2 (2015)",
    "Owner": "r.osei"
  },
  "summary": "The Tool Registry (toolreg) is the catalogue of capabilities a forager can invoke: file fetchers, converters, index writers, and the handful of model-backed tools added in 3.0. Agents do not embed tool definitions; they query the registry at startup and cache the manifest for the lifetime of the pro",
  "links": [
    {
      "target": "Agent_Message_Bus",
      "url": "https://swarmglass.quantara.cv/wiki/Agent_Message_Bus"
    },
    {
      "target": "Scheduler_Internals",
      "url": "https://swarmglass.quantara.cv/wiki/Scheduler_Internals"
    },
    {
      "target": "Memory_Synchronization",
      "url": "https://swarmglass.quantara.cv/wiki/Memory_Synchronization"
    },
    {
      "target": "Model_Compatibility_Matrix",
      "url": "https://swarmglass.quantara.cv/wiki/Model_Compatibility_Matrix"
    },
    {
      "target": "Legacy_Toolchain",
      "url": "https://swarmglass.quantara.cv/wiki/Legacy_Toolchain"
    },
    {
      "target": "Talk:Tool_Registry",
      "url": "https://swarmglass.quantara.cv/wiki/Talk%3ATool_Registry"
    },
    {
      "target": "Internal_Agent_Communication_Protocol",
      "url": "https://swarmglass.quantara.cv/wiki/Internal_Agent_Communication_Protocol"
    },
    {
      "target": "Deprecated_Agent_API",
      "url": "https://swarmglass.quantara.cv/wiki/Deprecated_Agent_API"
    },
    {
      "target": "Known_Agent_Bugs",
      "url": "https://swarmglass.quantara.cv/wiki/Known_Agent_Bugs"
    }
  ],
  "alternates": [
    "https://swarmglass.quantara.cv/wiki/Tool_Registry.json",
    "https://swarmglass.quantara.cv/wiki/Tool_Registry.txt",
    "https://swarmglass.quantara.cv/wiki/Tool_Registry.yaml"
  ],
  "text": "The Tool Registry (`toolreg`) is the catalogue of capabilities a forager can invoke: file fetchers, converters, index writers, and the handful of model-backed tools added in 3.0. Agents do not embed tool definitions; they query the registry at startup and cache the manifest for the lifetime of the process.\n\n== How discovery works ==\n\n1. A forager starts and sends `tool.query` over the phero bus with its runtime version.\n2. `toolreg` answers `tool.reply` with a manifest filtered to tools compatible with that runtime.\n3. The forager caches the manifest. Changes are pushed as `tool.update` (2.0+), but most foragers just restart nightly.\n\nThe manifest is also served over plain HTTP for humans and scripts at `http://toolreg.hm.internal:7423/manifest.json`. On this mirror a snapshot is available as [attachment: toolreg-manifest-2015-09.json], and a machine-readable description of the mirror's own read API lives at /api/v1/openapi.json </api/v1/openapi.json>.\n\n== Manifest format (v2) ==\n\n```json\n{\n  \"schema\": \"toolreg/2\",\n  \"generated\": \"2015-09-11T08:14:00Z\",\n  \"tools\": [\n    {\n      \"name\": \"fetch.http\",\n      \"version\": \"2.1.0\",\n      \"runtime\": \">=2.0\",\n      \"description\": \"Fetch a URL from an allow-listed internal host.\",\n      \"inputs\": {\"url\": \"string\", \"timeout_s\": \"int?\"},\n      \"outputs\": {\"body\": \"bytes\", \"status\": \"int\"},\n      \"cost\": \"io\",\n      \"idempotent\": true\n    }\n  ]\n}\n```\n\nFields added in v2: `cost` (`cpu` | `io` | `model`), `idempotent`, and `deprecated_by`. The v1 manifest had none of these, which is why the 2.x scheduler could not tell a cheap tool from a model call — see Scheduler Internals#Cost classes.\n\n== Registered tools (3.4 snapshot) ==\n\n| Name | Version | Cost | Notes |\n|---|---|---|---|\n| `fetch.http` | 2.1.0 | io | allow-listed internal hosts only |\n| `convert.doc2text` | 1.3.2 | cpu | uses the 2012 converter, known slow on large pdf |\n| `index.write` | 3.0.1 | io | writes to colony memory, see Memory Synchronization |\n| `index.query` | 3.0.1 | io | |\n| `model.summarize` | 0.4.0 | model | Basalt-2 only, see Model Compatibility Matrix |\n| `model.classify` | 0.2.1 | model | Larkspur-S. deprecated 2015-08. |\n| `graph.compile` | 1.0.0 | cpu | wraps `antc`, see Legacy Toolchain |\n| `notify.mail` | 1.1.0 | io | removed in 3.2 after the 2015 mail loop |\n\nThe full list as of the archive is in the manifest snapshot. The `Toolreg_Schema_v2` page that used to describe the schema in detail was not migrated to the new namespace, but the manifest carries an inline `$schema` reference.\n\n== Security model ==\n\ntoolreg trusts the bus. There is no per-tool authorization; a forager that can reach the bus can call any tool the manifest lists. This was flagged in 2012 (Talk:Tool Registry) and never addressed because the bus was only reachable from the colony subnet (`192.0.2.0/24`). Anyone reading this in a context where that assumption does not hold should stop and re-read it.\n\n== See also ==\n\n- IACP tool.query\n- Deprecated Agent API\n- Known Agent Bugs#toolreg\n",
  "history": "https://swarmglass.quantara.cv/wiki/Tool_Registry?action=history",
  "latest_revision": 46524,
  "mirror": {
    "source": "ANTFARM Wiki",
    "seed_version": "2026.09.0",
    "generator": "AntWiki 1.16.5 (swarmglass mirror)"
  }
}