Extcord

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

使うべきか

品質と安全性

A
説明の品質
97%
スキーマの完全性
88%
命名の品質
97%
ポイズニングのリスク
60%
権限の一致
100%
プロトコルへの準拠
100%

検出事項(3)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains URL to non-standard domaininvoke 内
  • MEDIUMTool description contains URL to non-standard domainrun_pipeline 内

ツール定義とプロトコルへの準拠に関する自動分析に基づいています。

コンテキストコスト

~1,953トークン数(ツール定義)
~2.7 KB一般的なレスポンスサイズ
注意への影響は中程度(128k コンテキストの 1.53%)

これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。

インストール

ワンクリックインストール

これを `claude_desktop_config.json` ファイルに追加してください:

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

リモートエンドポイント

https://extcord.io/mcpstreamable-http

できること

ツール一覧

ツール(6)

🟢 読み取り専用🟡 書き込み🔴 削除⚪ 不明
🟢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.

入力スキーマ

{
  "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"
}

出力スキーマ

{
  "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>").

入力スキーマ

{
  "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"
}

出力スキーマ

{
  "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.

入力スキーマ

{
  "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"
}

出力スキーマ

{
  "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).

入力スキーマ

{
  "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"
}

出力スキーマ

{
  "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).

入力スキーマ

{
  "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"
}

出力スキーマ

{
  "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.

入力スキーマ

{
  "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"
}

出力スキーマ

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

コミュニティ

このサーバーを評価する

エビデンス

最近の観測

検証済みバージョンは記録されていませんツール 6 件