Tools, Resources and Prompts

Three Things a Server Can Offer

PrimitiveWho decides to use itExample
Toolsthe model (like function calling)get_order_status(order_id), create_ticket(...)
Resourcesthe app or user attaches them as contextpolicy://returns, a file, a database row
Promptsthe user picks them (often as slash commands)"/support-reply" template with a customer message argument

What a Tool Listing Looks Like

{
  "tools": [
    {
      "name": "get_order_status",
      "description": "Get the delivery status of a ShopEase order. Use when the customer asks where an order is.",
      "inputSchema": {
        "type": "object",
        "properties": { "order_id": { "type": "string", "description": "Order ID like SE1042" } },
        "required": ["order_id"]
      }
    }
  ]
}

The host converts each MCP tool into a normal tool definition for the model (inputSchema becomes input_schema).

Tip

Tip: Write tool descriptions for the model: say when to call the tool, not only what it does. Good descriptions matter more than clever code.