Agent Wealth HubFree public resources
中文 EN العربية

When to use a Skill or MCP

Skill supplies reusable instructions; MCP exposes server resources or callable tools. Choose based on whether the task needs guidance, read-only facts, or an action.

Reviewed · 2026-10-15 · Content updated · 2026-10-15

Direct answer

Skill supplies reusable instructions; MCP exposes server resources or callable tools. Choose based on whether the task needs guidance, read-only facts, or an action. Contract: inventory_lookup(sku) returns integer quantity and UTC as_of. A-17=8; B-04=0. A count does not justify write access.

Decision

Skill supplies reusable instructions; MCP exposes server resources or callable tools. Choose based on whether the task needs guidance, read-only facts, or an action.

Worked example

Contract: inventory_lookup(sku) returns integer quantity and UTC as_of. A-17=8; B-04=0. A count does not justify write access.

Failure checks

Inspect server identity, authorization scope, schema, and error behavior. Reject unknown parameters and stale results; never translate an error into zero stock.

Offline example and Agent acceptance workflow

Compare the example input with the result and acceptance checks.

Input text

Review the two read-only inventory examples against the fictional contract below. Preserve a quantity of zero and the sample time on each result.

tool: inventory_lookup(sku: string)
returns: {sku: string, quantity: integer, as_of: UTC timestamp}
required_params: ["sku:string"]

sample_results:
  - {sku: "A-17", quantity: 8, as_of: "2026-10-15T09:00:00Z"}
  - {sku: "B-04", quantity: 0, as_of: "2026-10-15T09:00:00Z"}

rejection_rule: reject unknown fields

Prompt for an Agent interface you already use

Review the read-only contract. Return JSON fields tool_name, read_only, required_params, sample_results, and rejection_rule; preserve an as_of timestamp in every sample_results item. Do not call a server or claim live inventory.

Expected result

{
  "tool_name": "inventory_lookup",
  "read_only": true,
  "required_params": [
    "sku:string"
  ],
  "sample_results": [
    {
      "sku": "A-17",
      "quantity": 8,
      "as_of": "2026-10-15T09:00:00Z"
    },
    {
      "sku": "B-04",
      "quantity": 0,
      "as_of": "2026-10-15T09:00:00Z"
    }
  ],
  "rejection_rule": "reject unknown fields"
}

Review checklist

Selected resources

MCP Builder: build MCP services

Why it is included: Guides developers in exposing an external API as discoverable, well-described, and verified MCP tools.

When it does not fit: Do not rebuild a server when this task only calls an existing read-only lookup.

anthropics/skills · skills/mcp-builder/SKILL.md · 2026-10-13

Build a read-only MCP tool server for agent queries

Why it is included: Expose a narrowly scoped query tool so MCP clients can read application data but cannot change it.

When it does not fit: It cannot serve a task that must update stock; this example intentionally has no write operation.

modelcontextprotocol/python-sdk · docs/servers/tools.md · 2026-10-14

Review MCP tools and side effects before agent use

Why it is included: Inspect names, descriptions, schemas, permissions, and side effects before exposing remote MCP tools to an agent.

When it does not fit: Use a server-authoring guide instead when the client does not yet have a server to inspect.

modelcontextprotocol/python-sdk · docs/servers/tools.md · 2026-10-14

Define a stable error contract for MCP tools

Why it is included: Separate retryable failures, input rejections, and internal faults without exposing server secrets.

When it does not fit: A static resource read needs no callable-tool error contract.

modelcontextprotocol/python-sdk · docs/servers/handling-errors.md · 2026-10-14

Expose versioned read-only documents through MCP resource URIs

Why it is included: Expose documents as stable URI resources so clients can discover and read them without write access.

When it does not fit: This SOP covers stable document resources. The example uses a query tool because stock counts change and need a fresh as_of value; that choice is about this task, not a protocol ban on dynamic resources.

modelcontextprotocol/python-sdk · docs/servers/resources.md · 2026-10-14

Define a validated function tool for an agent

Why it is included: Expose a narrowly scoped application function as a tool with an explicit parameter contract.

When it does not fit: If the task only reads a Skill or static resource, no tool schema is needed.

openai/openai-agents-python · docs/tools.md · 2026-10-14

Sources and review dates