Extcord

Agent utilities: read big pages without filling context, exact math, dates, parsing. Free.

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
97%
Vollständigkeit des Schemas
88%
Qualität der Benennung
97%
Risiko der Vergiftung
60%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Befunde (3)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains URL to non-standard domainin invoke
  • MEDIUMTool description contains URL to non-standard domainin run_pipeline

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~1,953Tokens (Tool-Definitionen)
~2.7 KBTypische Antwortgröße
Mittlere Auswirkung auf die Aufmerksamkeit (1.53% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

{
  "mcpServers": {
    "extcord": {
      "url": "https://extcord.io/mcp"
    }
  }
}

Remote-Endpunkte

https://extcord.io/mcpstreamable-http

Was es kann

Tool-Inventar

Tools (6)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢discover(query, op, accepts)

Find out what this server can do. With no arguments: every op by category with a one-line intent, plus saved recipes. With query: the best-matching ops and recipes. With op: that op's full contract and examples.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "query": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Words describing what you want to do, e.g. 'html table to rows' or 'days between dates'.",
      "title": "Query"
    },
    "op": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "An op id to get its full contract: args schema, behavior, worked examples.",
      "title": "Op"
    },
    "accepts": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Only ops that take this input type: text, html, json, list, table, number, boolean.",
      "title": "Accepts"
    }
  },
  "title": "discoverArguments"
}

Ausgabe-Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "discoverDictOutput"
}
🟢invoke(op, input, args, input_type, inline_max_tokens)

Run one operation and get its result as a handle: type, size, estimated tokens, the value itself if small (else a preview), and suggested next ops. Example: invoke(op="fetch", args={"url": "https://example.com"}), then invoke(op="html_to_text", input="<handle from that result>").

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "op": {
      "description": "Op id, e.g. 'fetch', 'html_to_text', 'calc'. See discover().",
      "title": "Op",
      "type": "string"
    },
    "input": {
      "default": null,
      "description": "The data to operate on: a handle id from an earlier result (h_...), or a literal value (text, number, list, object). Omit for ops that take no input, like fetch, calc or now.",
      "title": "Input"
    },
    "args": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The op's arguments, e.g. {\"url\": \"https://example.com\"} for fetch or {\"expr\": \"2 ** 10\"} for calc.",
      "title": "Args"
    },
    "input_type": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Override the inferred type of a literal input, e.g. 'html'.",
      "title": "Input Type"
    },
    "inline_max_tokens": {
      "default": 300,
      "description": "Results up to this many estimated tokens include their value directly; larger ones return a preview. Default 300.",
      "maximum": 20000,
      "minimum": 0,
      "title": "Inline Max Tokens",
      "type": "integer"
    }
  },
  "required": [
    "op"
  ],
  "title": "invokeArguments"
}

Ausgabe-Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "invokeDictOutput"
}
🟢run_pipeline(steps, result_from, dry_run, inline_max_tokens)

Chain operations in one call; only the final result comes back, intermediate data stays on the server. Example steps: [{"op": "fetch", "args": {"url": "https://example.com/pricing"}, "as": "page"}, {"op": "extract_tables", "input": "$page", "args": {"index": 0}}, {"op": "to_markdown", "input": "$1"}]. Use dry_run=true first when unsure.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "steps": {
      "description": "Ordered steps: {\"op\": id, \"input\"?: ref|handle|value, \"args\"?: {...}, \"as\"?: name}. Refer to earlier steps as \"$0\", \"$1\", \"$name\", or paths like \"$1[0]\"; refs work inside args too.",
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Steps",
      "type": "array"
    },
    "result_from": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Which step to return, as a ref like \"$2\" or \"$prices[0]\". Default: the last step.",
      "title": "Result From"
    },
    "dry_run": {
      "default": false,
      "description": "Check refs, args, types, cost and side effects without running anything.",
      "title": "Dry Run",
      "type": "boolean"
    },
    "inline_max_tokens": {
      "default": 300,
      "description": "Results up to this many estimated tokens include their value directly; larger ones return a preview. Default 300.",
      "maximum": 20000,
      "minimum": 0,
      "title": "Inline Max Tokens",
      "type": "integer"
    }
  },
  "required": [
    "steps"
  ],
  "title": "run_pipelineArguments"
}

Ausgabe-Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "run_pipelineDictOutput"
}
🟢inspect(handle, view, offset, limit)

Look at a handle: its summary, its value one page at a time, or its provenance. Check est_tokens in the summary before reading a big value; it's usually cheaper to narrow it with an op first (find, select, filter, fit).

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "handle": {
      "description": "A handle id like h_3f9a1c2b7e.",
      "title": "Handle",
      "type": "string"
    },
    "view": {
      "default": "summary",
      "description": "summary: size, preview, next ops. value: the data itself, paged. provenance: the chain of ops, args and sources that produced it.",
      "enum": [
        "summary",
        "value",
        "provenance"
      ],
      "title": "View",
      "type": "string"
    },
    "offset": {
      "default": 0,
      "description": "For view=value: start position (chars for text, items for lists).",
      "minimum": 0,
      "title": "Offset",
      "type": "integer"
    },
    "limit": {
      "anyOf": [
        {
          "maximum": 100000,
          "minimum": 1,
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "For view=value: page size (default 4000 chars or 50 items).",
      "title": "Limit"
    }
  },
  "required": [
    "handle"
  ],
  "title": "inspectArguments"
}

Ausgabe-Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "inspectDictOutput"
}
🟢run_recipe(name, params, dry_run, inline_max_tokens)

Run a saved pipeline in one call. Built-ins: page_to_markdown (url, max_tokens), page_outline (url), page_links (url, contains), page_tables (url, index), find_on_page (url, pattern).

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "name": {
      "description": "Recipe name, e.g. 'page_to_markdown'. discover() lists them.",
      "title": "Name",
      "type": "string"
    },
    "params": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Values for the recipe's params, e.g. {\"url\": \"https://example.com\"}.",
      "title": "Params"
    },
    "dry_run": {
      "default": false,
      "title": "Dry Run",
      "type": "boolean"
    },
    "inline_max_tokens": {
      "default": 300,
      "description": "Results up to this many estimated tokens include their value directly; larger ones return a preview. Default 300.",
      "maximum": 20000,
      "minimum": 0,
      "title": "Inline Max Tokens",
      "type": "integer"
    }
  },
  "required": [
    "name"
  ],
  "title": "run_recipeArguments"
}

Ausgabe-Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "run_recipeDictOutput"
}
🟡save_recipe(name, description, steps, params, result_from)

Save a working pipeline under a name so any agent can run it later with run_recipe. Saved recipes are shared and can't be overwritten.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "name": {
      "description": "3-64 lowercase letters, digits or underscores, e.g. acme_pro_price.",
      "title": "Name",
      "type": "string"
    },
    "description": {
      "description": "One sentence: what it returns, for other agents searching later.",
      "title": "Description",
      "type": "string"
    },
    "steps": {
      "description": "Pipeline steps, with values to vary written as {{param}}, e.g. {\"op\": \"fetch\", \"args\": {\"url\": \"{{url}}\"}}.",
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Steps",
      "type": "array"
    },
    "params": {
      "anyOf": [
        {
          "additionalProperties": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Each {{param}}: {\"type\": \"string\", \"description\": \"...\", \"default\"?: ...}.",
      "title": "Params"
    },
    "result_from": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Ref of the step to return; default the last.",
      "title": "Result From"
    }
  },
  "required": [
    "name",
    "description",
    "steps"
  ],
  "title": "save_recipeArguments"
}

Ausgabe-Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "save_recipeDictOutput"
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet6 Tools