Implement the WebMCP provideContext API — bulk tool registration, contextual metadata, page state sharing, and dynamic context updates. Use when providing rich context and multiple tools to agents simultaneously.
Scanned 5/29/2026
Install to Claude Code
npx -y skills add OrcaQubits/agentic-commerce-skills-plugins --skill webmcp-context-provider --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Webmcp Context Provider?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/orcaqubits-webmcp-context-provider)More formats (shields.io, HTML) on the badges page.
---
name: webmcp-context-provider
description: >
Implement the WebMCP provideContext API — bulk tool registration, contextual
metadata, page state sharing, and dynamic context updates. Use when providing
rich context and multiple tools to agents simultaneously.
---
# WebMCP Context Provider
## Before writing code
**Fetch live docs**:
1. Fetch `https://webmachinelearning.github.io/webmcp/` for the `provideContext` method specification
2. Web-search `webmcp provideContext specification` for the API shape and options
3. Web-search `webmcp context metadata agent` for contextual data patterns
4. Web-search `site:developer.chrome.com webmcp context` for Chrome-specific context features
## Conceptual Architecture
### What provideContext Does
`navigator.modelContext.provideContext(options)` is a method for bulk registration of multiple tools and providing additional contextual metadata to agents. While `registerTool` adds one tool at a time, `provideContext` can set up an entire tool surface in a single call.
**Note:** This API is still being specified and may change. Always fetch the latest spec before implementing.
### Why Context Matters
Agents make better decisions when they understand the current page state:
- What page the user is on (product detail, cart, checkout)
- User's authentication state and preferences
- Current cart contents and totals
- Available promotions or special offers
- Site capabilities and limitations
### provideContext vs registerTool
| Aspect | registerTool | provideContext |
|--------|-------------|----------------|
| **Granularity** | One tool at a time | Multiple tools + metadata |
| **Metadata** | Tool-level only | Page-level context included |
| **Use case** | Dynamic, individual tools | Page initialization, bulk setup |
| **Lifecycle** | Register/unregister individually | Set/clear entire context |
### Contextual Metadata Patterns
Provide agents with situational awareness:
**Product page context:**
```js
navigator.modelContext.provideContext({
tools: [viewDetails, addToCart, compareProducts],
metadata: {
pageType: "product-detail",
productId: "sku-12345",
productName: "Wireless Headphones",
price: 79.99,
inStock: true,
userAuthenticated: true
}
});
```
**Cart page context:**
```js
navigator.modelContext.provideContext({
tools: [updateQuantity, removeItem, applyCoupon, checkout],
metadata: {
pageType: "shopping-cart",
itemCount: 3,
subtotal: 247.50,
currency: "USD",
hasShippingAddress: true,
hasSavedPayment: true
}
});
```
### Dynamic Context Updates
Update context as the page state changes:
```js
// Initial page load — browse tools
navigator.modelContext.provideContext({
tools: [searchProducts, viewDetails],
metadata: { pageType: "catalog", authenticated: false }
});
// User logs in — expand tools
navigator.modelContext.clearContext();
navigator.modelContext.provideContext({
tools: [searchProducts, viewDetails, addToCart, getCartContents, checkout],
metadata: { pageType: "catalog", authenticated: true, userName: "Alice" }
});
// Navigate to cart — switch tools
navigator.modelContext.clearContext();
navigator.modelContext.provideContext({
tools: [updateQuantity, removeItem, applyCoupon, checkout],
metadata: { pageType: "cart", itemCount: 3 }
});
```
### SPA Route-Based Context
In single-page applications, update context on route changes:
```js
router.on("routeChange", (route) => {
navigator.modelContext.clearContext();
switch (route.name) {
case "catalog":
provideCatalogContext();
break;
case "product":
provideProductContext(route.params.id);
break;
case "cart":
provideCartContext();
break;
case "checkout":
provideCheckoutContext();
break;
}
});
```
### Best Practices
- Use `provideContext` for initial page setup; use `registerTool` / `unregisterTool` for incremental changes
- Include page type and user state in metadata so agents understand the current context
- Clear context on navigation and re-provide for the new page
- Keep metadata lightweight — summaries, not full data dumps
- Avoid including sensitive user data (email, address) in metadata — agents don't need it
- Update context when significant state changes occur (login, cart update, page navigation)
Fetch the specification for the exact `provideContext` options shape, metadata fields, and any new features before implementing.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!