Contribute a Config
Teach AI agents how to interact with any website by submitting a WebMCP configuration.
Before you start
Write operations require an API key. Sign in with GitHub, then create a key in Settings. Keys start with whub_. All read endpoints are public โ no key needed to browse or look up configs.
Direct HTTP requests
Use curl, fetch, or any HTTP client to submit configs programmatically.
Create a config
curl -X POST https://webmcp-hub.com/api/configs \
-H "Content-Type: application/json" \
-H "Authorization: Bearer whub_your_api_key" \
-d '{
"domain": "example.com",
"urlPattern": "example.com/tasks",
"title": "Example Task Manager",
"description": "Create, list, and delete tasks",
"contributor": "your-github-username",
"tags": ["productivity", "tasks"],
"tools": [{
"name": "add-task",
"description": "Add a new task to the list",
"inputSchema": {
"type": "object",
"properties": {
"title": { "type": "string", "description": "Task title" }
},
"required": ["title"]
}
}]
}'Endpoints
GEThttps://webmcp-hub.com/api/configsListPOSThttps://webmcp-hub.com/api/configsCreateGEThttps://webmcp-hub.com/api/configs/lookupLookup by domainGEThttps://webmcp-hub.com/api/configs/:idGet by IDPATCHhttps://webmcp-hub.com/api/configs/:idUpdatePOSThttps://webmcp-hub.com/api/configs/:id/voteVote on toolDELETEhttps://webmcp-hub.com/api/configs/:id/tools/:toolNameDelete tool (owner only)Via any MCP client
Connect the MCP server to your AI agent and use upload_config and update_config to submit configs conversationally.
Remote (no local setup)
{
"mcpServers": {
"web-mcp-hub": {
"command": "npx",
"args": [
"mcp-remote",
"https://webmcp-hub-mcp.flowagentlyhub.workers.dev/mcp"
]
}
}
}Local server (for development)
{
"mcpServers": {
"web-mcp-hub": {
"command": "node",
"args": ["path/to/packages/mcp-server/dist/index.js", "--stdio"],
"env": {
"HUB_URL": "http://localhost:3000"
}
}
}
}Your AI agent will use upload_config, update_config, delete_tool, and vote_on_tool automatically when you ask it to contribute, modify, delete, or rate configs.
Config reference
Required fields
- domain
- Normalized domain, e.g. github.com
- urlPattern
- URL scope for matching (see below)
- title
- Human-readable name
- description
- What agents can do with this config
- contributor
- Your name or GitHub username
- tools
- Array of tool descriptors (min 1)
URL patterns
- example.com
- All pages (fallback)
- example.com/dashboard
- Exact path only
- example.com/users/:id
- Dynamic segment
- example.com/admin/**
- Wildcard prefix
Tool rules
nameโ kebab-case verb:search-products,add-to-cart,delete-iteminputSchemaโ JSON Schema object. Each property needs at least{"type":"string"}executionโ optional CSS selector metadata for Chrome extension auto-executionannotationsโ optional:readOnlyHint,destructiveHint,idempotentHint
Full example with execution metadata
{
"domain": "example.com",
"urlPattern": "example.com/tasks",
"title": "Task Manager",
"description": "Create, list, and delete tasks",
"contributor": "your-username",
"tags": ["productivity", "tasks"],
"tools": [
{
"name": "add-task",
"description": "Add a new task",
"inputSchema": {
"type": "object",
"properties": {
"title": { "type": "string", "description": "Task title" }
},
"required": ["title"]
},
"execution": {
"selector": "#taskForm",
"autosubmit": true,
"fields": [{
"type": "text",
"selector": "#titleInput",
"name": "title",
"description": "Task title field"
}]
}
},
{
"name": "list-tasks",
"description": "List all current tasks",
"inputSchema": { "type": "object", "properties": {} },
"execution": {
"selector": "#taskList",
"autosubmit": false,
"resultSelector": "#taskList li",
"resultExtract": "list"
}
}
]
}Want to contribute to the project?
Beyond submitting configs, you can help improve the hub itself โ fix bugs, add features, improve docs, or extend the Chrome extension and MCP server.