Topology Index

Reference for multi-agent LLM topologies: patterns, aliases, sources, starters; one gated report.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
93%
Naming quality
97%
Poisoning risk
80%
Permission match
90%
Protocol compliance
100%

Findings (3)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains URL to non-standard domainin fetch
  • LOWTool 'fetch' suggests web access but openWorldHint=falsein fetch

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,318Tokens (tool definitions)
~1.3 KBTypical response size
Moderate attention impact (1.03% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "topology-index": {
      "url": "https://topologyindex.com/mcp"
    }
  }
}

Remote endpoints

https://topologyindex.com/mcpstreamable-http

What it can do

Tool inventory

Tools (6)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢search(query)

Keyword search, with common synonyms, over pattern names, aliases and families, the decision guide, the domains, sources and benchmarks of published findings, research, starters and guides. At most 10 results, each a path for `fetch`; if no page matches every word, pages matching some; if none, the decision guide. Matches text only; never ranks patterns.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Words to look for, such as \"orchestrator worker\", \"verification\" or \"coding\"."
    }
  },
  "required": [
    "query"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "match": {
      "type": "string",
      "enum": [
        "all_words",
        "any_word",
        "none",
        "empty"
      ]
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "snippet": {
            "type": "string"
          }
        },
        "required": [
          "path",
          "url",
          "title",
          "snippet"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "match",
    "results"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢fetch(path_or_url)

Returns the Markdown document of any public page, exactly as HTTP serves it, from a root-relative path (/patterns/supervisor.md) or a https://topologyindex.com URL. Private tenant routes are not reachable here. A pattern, starter or formation read may add a second item, a one-time use ticket for `report_outcome` (limited rollout).

Input Schema

{
  "type": "object",
  "properties": {
    "path_or_url": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2048,
      "description": "A path such as /patterns/index.md, or https://topologyindex.com/patterns/index.md."
    }
  },
  "required": [
    "path_or_url"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢list_patterns(family, domain)

The decision guide: where to start by the shape of the task, the pattern to consider next and when to avoid each, plus the pattern families (the `choosing` rows of /patterns/index.md, without the rest of that page). With a family, /patterns/index.md?family={family}: that family’s patterns and the rows that name them. With a domain, /domains/{domain}.md: the task shapes common in that kind of work, their rows, the sources of the published findings tagged with it (never a ranking; each finding in words at /domains/{domain}/findings.md) and its starters.

Input Schema

{
  "type": "object",
  "properties": {
    "family": {
      "description": "Restrict the list to one pattern family.",
      "type": "string",
      "enum": [
        "baseline",
        "parallelism",
        "hierarchy",
        "shared_state",
        "verification",
        "adaptive",
        "continuity"
      ]
    },
    "domain": {
      "description": "Read the lens of one task domain instead; not together with a family.",
      "type": "string",
      "enum": [
        "coding",
        "research",
        "documents",
        "reasoning",
        "evaluation",
        "operations",
        "security"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_pattern(pattern)

One pattern page (/patterns/{pattern}.md): definition, aliases, when it is hypothesised to fit, failure modes, sources and whether this deployment can execute it. Accepts a pattern identifier or a known alias. May add a second item, a one-time use ticket for `report_outcome` (limited rollout).

Input Schema

{
  "type": "object",
  "properties": {
    "pattern": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "description": "A pattern identifier such as supervisor, or an alias such as orchestrator-worker."
    }
  },
  "required": [
    "pattern"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢list_starters(task_class)

The starter formation index (/starters/index.md): unvalidated, unsigned FORMATION.md documents to copy and register privately. With a task class, only the starters that declare it (/starters/index.md?task_class={task_class}).

Input Schema

{
  "type": "object",
  "properties": {
    "task_class": {
      "description": "A task class such as coding.bugfix.",
      "type": "string",
      "minLength": 1,
      "maxLength": 128
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
⚪report_outcome(ticket, model_id, model_precision, task_class, outcome, ...)

Limited rollout: only for a use ticket from a pattern, starter or formation read. If you have no ticket, do not call it. With one, report once after your task: pass, fail or abandoned, never a prompt, code or log. Fields: /docs/api/contributing.md.

Input Schema

{
  "type": "object",
  "properties": {
    "ticket": {
      "type": "string"
    },
    "model_id": {
      "type": "string"
    },
    "model_precision": {
      "enum": [
        "exact",
        "family"
      ]
    },
    "task_class": {
      "type": "string"
    },
    "outcome": {
      "enum": [
        "pass",
        "fail",
        "abandoned"
      ]
    },
    "tests_ran": {
      "type": "integer"
    },
    "tests_passed": {
      "type": "integer"
    },
    "input_tokens": {
      "type": [
        "integer",
        "null"
      ]
    },
    "output_tokens": {
      "type": [
        "integer",
        "null"
      ]
    },
    "elapsed_milliseconds": {
      "type": [
        "integer",
        "null"
      ]
    }
  },
  "required": [
    "ticket",
    "model_id",
    "task_class",
    "outcome",
    "tests_ran",
    "tests_passed"
  ],
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools
verifiedversion not recorded6 tools