> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mcp-b.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Choose a runtime

> Decide when to use the native browser API, the tool-only polyfill, or the full @mcp-b/global runtime for your project.

Start with the live WebMCP proposal and current browser support. Add MCP-B packages only for the
compatibility, type inference, or extension behavior your application needs.

## Choose in order

1. **Does the target browser provide the WebMCP behavior you need?** Check [WebMCP resources and
   status](/explanation/design/spec-status-and-limitations). If yes, you may not need a runtime
   package.

2. **Do you only need ambient types for the live proposal?** Use the Community Group's
   [`webmcp-types`](https://github.com/webmachinelearning/webmcp-types) package.

3. **Do you need MCP-B compatibility types or schema inference?** Use
   [`@mcp-b/webmcp-types`](/packages/webmcp-types/overview).

4. **Do you need browser tool registration and discovery where native support is unavailable?** Use
   [`@mcp-b/webmcp-polyfill`](/packages/webmcp-polyfill/overview).

5. **Do you need MCP bridge transport, `listTools`, prompts, resources, or direct MCP server
   access?** Use [`@mcp-b/global`](/packages/global/overview).

6. **Do you only need React tool registration?** Use
   [`usewebmcp`](/packages/usewebmcp/overview).

7. **Do you need React prompt, resource, or MCP client/provider hooks?** Use
   [`@mcp-b/react-webmcp`](/packages/react-webmcp/overview). Prompt and resource hooks require
   `@mcp-b/global`; tool hooks work with native or polyfilled `document.modelContext`, and
   client/provider hooks use their configured MCP connection.

## Package comparison

| Choice                   | Adds a browser runtime | Choose it for                                                |
| ------------------------ | ---------------------- | ------------------------------------------------------------ |
| Native browser support   | No                     | Browser behavior documented by the implementation            |
| `webmcp-types`           | No                     | Ambient declarations that track the live proposal            |
| `@mcp-b/webmcp-types`    | No                     | MCP-B contracts and schema inference                         |
| `@mcp-b/webmcp-polyfill` | Yes                    | Tool registration and discovery compatibility                |
| `@mcp-b/global`          | Yes                    | MCP-B extensions, server access, and browser transports      |
| `usewebmcp`              | No                     | React tool hooks over an initialized `document.modelContext` |
| `@mcp-b/react-webmcp`    | No                     | React tool, prompt, resource, and MCP client/provider hooks  |

The two MCP-B runtime packages expose a descriptor-based `executeTool()` method that accepts
serialized JSON. The live proposal currently uses object input. Feature-detect the method and
follow the selected runtime's reference for its implemented signature.

## Continue with the selected path

* For native behavior and ambient proposal types, use the [WebMCP API
  sources](/reference/webmcp/standard-api).
* For the standalone polyfill, follow the [`@mcp-b/webmcp-polyfill`
  overview](/packages/webmcp-polyfill/overview) and [first tool
  tutorial](/tutorials/first-tool).
* For the full MCP-B runtime, follow the [`@mcp-b/global`
  overview](/packages/global/overview) and [reference](/packages/global/reference).
* For React, compare [`usewebmcp`](/packages/usewebmcp/overview) with
  [`@mcp-b/react-webmcp`](/packages/react-webmcp/overview), then use the [React
  tutorial](/tutorials/first-react-tool).
* For schema inference and MCP-B type contracts, use the
  [`@mcp-b/webmcp-types` reference](/packages/webmcp-types/reference).

## How the layers relate

For the layering rationale, see [Runtime Layering](/explanation/architecture/runtime-layering). [WebMCP and MCP-B extensions](/explanation/strict-core-vs-mcp-b-extensions) describes the package boundary.
