Architecture: Tools, Resources, and Interface
On this page
Lesson rewritten on November 3, 2026 based on the MCP server, Plugin architecture, and Skills pages in the OpenAI Plugins documentation. The legacy “actions, widgets, commerce” architecture described an SDK that no longer exists. Sources: MCP server · Plugin architecture · Skills.
Overview
A plugin consists of independent layers. Skills provide the playbook, the MCP server provides the capabilities, and the interface provides a visual way to interact when needed.
Plugin
├── Skills
└── MCP Server (optional)
├── Tools and structured results
└── Interface resources (optional)
Each layer has a distinct role. The documentation summarizes the boundary this way: the MCP server provides data, authentication, authorization, and actions; the skill provides reusable instructions, examples, and document templates.
What an MCP Server Exposes
An MCP server can expose four types of entities:
- Tools: Functions that the model calls with structured inputs.
- Resources: Data or content that the client can read.
- Prompts: Reusable prompt templates.
- Instructions: Directives that apply to the entire server.
Plugins rely primarily on tools. Each tool has a name, a description, an input schema, and optionally an output schema. These fields enable the model to decide when to call the tool and how to use its result.
The Request Flow
When a user makes a request that matches a tool, four steps occur in sequence:
- The client discovers the tools exposed by the MCP server.
- The model selects a tool and provides arguments that conform to its input schema.
- The server validates the request, performs the operation, and returns a result.
- The model uses that result to continue the conversation.
A tool result can contain three parts. structuredContent carries concise data that the model can inspect and reuse in subsequent calls. content carries text or other MCP content that helps the model formulate a response. _meta carries data intended for the client and hidden from the model—hidden, but not protected. This field does not replace authorization or secure storage.
Transport and Authorization
In production, deploy an MCP server at a stable HTTPS address using the protocol’s streamable HTTP transport, typically on an /mcp path. If tools read private data or act on behalf of a user, protect the server with the authorization flow defined by the MCP specification—OAuth, which Lesson 8 details.
The Interface: An Optional Layer
A tool must work without an interface: concise text and a structured result are often enough for the model to respond. An interface makes sense when the user needs to inspect, compare, modify, confirm, or browse structured information—a product comparison, an editable schedule, or a map. A simple status check generally does not need one.
When present, the interface is a resource that the server declares. ChatGPT displays it in an iframe when the associated tool returns it. ChatGPT implements the open MCP Apps standard: the interface communicates with the host via JSON-RPC using postMessage. ChatGPT-specific extensions, accessible via window.openai, supplement the standard when it doesn’t cover a specific need. Lesson 6 covers this.
Skills: The Workflow Layer
A skill is a folder containing a SKILL.md file—a name, a description that tells the model when to consider it, instructions—and, if needed, references, scripts, or templates. The model initially sees only the name and description; it loads the full instructions when the request matches the skill or when the user invokes it directly. Hence OpenAI’s advice: write the description around the user’s goal and trigger conditions, and keep the step-by-step details in the body.
What About Commerce?
Selling through a plugin isn’t a separate layer. It’s a journey that the optional interface can support, leveraging the Checkout API documented by OpenAI. Lesson 7 explains how it works and its limitations.
Key Takeaways
- An MCP server exposes tools, resources, prompts, and instructions; plugins rely primarily on tools
- A tool result combines
structuredContent,content, and_meta(hidden from the model, but not secure) - Production: stable HTTPS, streamable HTTP transport, authorization per the MCP specification
- The interface is an optional resource displayed by ChatGPT per the MCP Apps standard
- Skills handle the workflow; the server handles data, authorization, and actions