{
  "title": "MCP Tools, Resources, and Prompts — Reader FAQ",
  "schemaVersion": "1.0",
  "researchFreeze": "2026-08-26",
  "protocolRevision": "2026-07-28",
  "publicationNote": "All answers are intended for visible reader content; this endpoint does not imply FAQ rich-result eligibility.",
  "count": 50,
  "records": [
    {
      "id": "R6-FAQ01",
      "question": "What are MCP tools, resources, and prompts?",
      "answerMarkdown": "They are three server-side primitives: operations, URI-addressable data, and reusable message templates.",
      "answer": "They are three server-side primitives: operations, URI-addressable data, and reusable message templates.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ02",
      "question": "What is the main difference between an MCP tool and resource?",
      "answerMarkdown": "A tool represents an operation; a resource represents data with a durable URI identity.",
      "answer": "A tool represents an operation; a resource represents data with a durable URI identity.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ03",
      "question": "What is the main difference between a resource and prompt?",
      "answerMarkdown": "A resource is data; a prompt is a message template describing how to begin or structure an interaction.",
      "answer": "A resource is data; a prompt is a message template describing how to begin or structure an interaction.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ04",
      "question": "What is the main difference between a tool and prompt?",
      "answerMarkdown": "A tool executes or delegates work; a prompt returns messages that may lead to later work.",
      "answer": "A tool executes or delegates work; a prompt returns messages that may lead to later work.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ05",
      "question": "Who controls MCP tools?",
      "answerMarkdown": "The intended model is model selection mediated by the host, which controls visibility and permission.",
      "answer": "The intended model is model selection mediated by the host, which controls visibility and permission.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ06",
      "question": "Who controls MCP resources?",
      "answerMarkdown": "The host/application controls listing, reading and insertion into context, although users and models may influence selection.",
      "answer": "The host/application controls listing, reading and insertion into context, although users and models may influence selection.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ07",
      "question": "Who controls MCP prompts?",
      "answerMarkdown": "The server authors them, the host surfaces them, and the user explicitly selects them.",
      "answer": "The server authors them, the host surfaces them, and the user explicitly selects them.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ08",
      "question": "Does every server need all three?",
      "answerMarkdown": "No.",
      "answer": "No.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ09",
      "question": "Can one server expose all three?",
      "answerMarkdown": "Yes.",
      "answer": "Yes.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ10",
      "question": "Can a tool be read-only?",
      "answerMarkdown": "Yes.",
      "answer": "Yes.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ11",
      "question": "Can a resource change?",
      "answerMarkdown": "Yes; current MCP supports requested update streams.",
      "answer": "Yes; current MCP supports requested update streams.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ12",
      "question": "Can prompts include resources?",
      "answerMarkdown": "Yes, through resource links or embedded resources.",
      "answer": "Yes, through resource links or embedded resources.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ13",
      "question": "Can tools return resources?",
      "answerMarkdown": "Yes.",
      "answer": "Yes.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ14",
      "question": "Can resources be binary?",
      "answerMarkdown": "Yes.",
      "answer": "Yes.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ15",
      "question": "Can tool results contain images?",
      "answerMarkdown": "Yes.",
      "answer": "Yes.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ16",
      "question": "Can prompt messages contain audio?",
      "answerMarkdown": "Yes under the current content model.",
      "answer": "Yes under the current content model.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ17",
      "question": "Are resources always files?",
      "answerMarkdown": "No.",
      "answer": "No.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ18",
      "question": "Are resource URIs public URLs?",
      "answerMarkdown": "Not necessarily; custom schemes are common.",
      "answer": "Not necessarily; custom schemes are common.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ19",
      "question": "What is a resource template?",
      "answerMarkdown": "A parameterized URI definition for a family of resources.",
      "answer": "A parameterized URI definition for a family of resources.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ20",
      "question": "Do resource templates use RFC 6570?",
      "answerMarkdown": "MCP uses URI-template concepts aligned with RFC 6570.",
      "answer": "MCP uses URI-template concepts aligned with RFC 6570.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ21",
      "question": "What method lists tools?",
      "answerMarkdown": "tools/list.",
      "answer": "tools/list.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ22",
      "question": "What method invokes tools?",
      "answerMarkdown": "tools/call.",
      "answer": "tools/call.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ23",
      "question": "What method lists resources?",
      "answerMarkdown": "resources/list.",
      "answer": "resources/list.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ24",
      "question": "What method reads resources?",
      "answerMarkdown": "resources/read.",
      "answer": "resources/read.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ25",
      "question": "What method lists resource templates?",
      "answerMarkdown": "resources/templates/list.",
      "answer": "resources/templates/list.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ26",
      "question": "What method lists prompts?",
      "answerMarkdown": "prompts/list.",
      "answer": "prompts/list.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ27",
      "question": "What method retrieves a prompt?",
      "answerMarkdown": "prompts/get.",
      "answer": "prompts/get.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ28",
      "question": "What happened to resources/subscribe?",
      "answerMarkdown": "It is a legacy method; current MCP uses subscriptions/listen with resource filters.",
      "answer": "It is a legacy method; current MCP uses subscriptions/listen with resource filters.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ29",
      "question": "Are tool lists cacheable?",
      "answerMarkdown": "Yes under the 2026-07-28 cache-hint model.",
      "answer": "Yes under the 2026-07-28 cache-hint model.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ30",
      "question": "Are resource reads cacheable?",
      "answerMarkdown": "Yes, subject to TTL and cache scope.",
      "answer": "Yes, subject to TTL and cache scope.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ31",
      "question": "Are prompt lists cacheable?",
      "answerMarkdown": "Yes.",
      "answer": "Yes.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ32",
      "question": "Are tool-call results automatically cacheable?",
      "answerMarkdown": "No universal rule makes every execution result cacheable.",
      "answer": "No universal rule makes every execution result cacheable.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ33",
      "question": "What is structuredContent?",
      "answerMarkdown": "Server-produced JSON-like structured tool output.",
      "answer": "Server-produced JSON-like structured tool output.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ34",
      "question": "What is outputSchema?",
      "answerMarkdown": "An optional schema describing a tool’s structured output.",
      "answer": "An optional schema describing a tool’s structured output.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ35",
      "question": "What are tool annotations?",
      "answerMarkdown": "Untrusted behavior hints such as read-only or destructive.",
      "answer": "Untrusted behavior hints such as read-only or destructive.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ36",
      "question": "Are tool annotations security guarantees?",
      "answerMarkdown": "No.",
      "answer": "No.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ37",
      "question": "What is a resource link?",
      "answerMarkdown": "A content item pointing to a separately addressable resource.",
      "answer": "A content item pointing to a separately addressable resource.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ38",
      "question": "What is an embedded resource?",
      "answerMarkdown": "Resource content carried inline in a tool result or prompt message.",
      "answer": "Resource content carried inline in a tool result or prompt message.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ39",
      "question": "What is the safest way to expose a generated report?",
      "answerMarkdown": "Use a tool to generate it and a resource URI for the durable artifact.",
      "answer": "Use a tool to generate it and a resource URI for the durable artifact.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ40",
      "question": "Should SQL be a tool or resource?",
      "answerMarkdown": "Dynamic SQL execution is usually a tool; schema and saved reports are resources.",
      "answer": "Dynamic SQL execution is usually a tool; schema and saved reports are resources.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ41",
      "question": "Should files be resources or tools?",
      "answerMarkdown": "Files are natural resources; search and mutation remain tools. Tool-only host compatibility may justify fallbacks.",
      "answer": "Files are natural resources; search and mutation remain tools. Tool-only host compatibility may justify fallbacks.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ42",
      "question": "Should code review be a prompt or tool?",
      "answerMarkdown": "The review workflow is a prompt; data and actions may use resources and tools.",
      "answer": "The review workflow is a prompt; data and actions may use resources and tools.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ43",
      "question": "Do all hosts support prompts?",
      "answerMarkdown": "No.",
      "answer": "No.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ44",
      "question": "Do all hosts support resources?",
      "answerMarkdown": "No.",
      "answer": "No.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ45",
      "question": "Which primitive has broadest host support?",
      "answerMarkdown": "Tools, based on the current documented host sample.",
      "answer": "Tools, based on the current documented host sample.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ46",
      "question": "Did prompts and resources exist at launch?",
      "answerMarkdown": "Yes, in the 2024-11-05 specification.",
      "answer": "Yes, in the 2024-11-05 specification.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ47",
      "question": "What changed in MCP 2026?",
      "answerMarkdown": "Stateless requests, caching, result types, MRTR, requested subscription streams and routing metadata.",
      "answer": "Stateless requests, caching, result types, MRTR, requested subscription streams and routing metadata.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ48",
      "question": "Can MCP work without an LLM?",
      "answerMarkdown": "Yes; clients can list, read, get and call programmatically.",
      "answer": "Yes; clients can list, read, get and call programmatically.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ49",
      "question": "Does choosing a prompt approve tool calls?",
      "answerMarkdown": "No.",
      "answer": "No.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    },
    {
      "id": "R6-FAQ50",
      "question": "What is the best design rule?",
      "answerMarkdown": "Use tools for operations, resources for durable data identity, prompts for explicitly selected reusable interactions, and combine them when needed.",
      "answer": "Use tools for operations, resources for durable data identity, prompts for explicitly selected reusable interactions, and combine them when needed.",
      "packageSourceIds": [
        "S001",
        "S002",
        "S003",
        "S004"
      ],
      "sourceIds": [
        "S123",
        "S124",
        "S125",
        "S055"
      ]
    }
  ]
}