Skip to main content

Universal WAIS MCP server — 5 tools for any WAIS-compatible site

Project description

wais-mcp

Universal MCP server for WAIS (Web Agent Interaction Standard) — 5 generic tools that work with any WAIS-compatible site.

Works with Claude, ChatGPT, Gemini, Cursor, Windsurf, VS Code Copilot, and any MCP-compatible client.

Tools

Tool Description
wais_discover Fetch a site's agents.json and show available actions
wais_register Register at a site using SD-JWT selective disclosure
wais_execute Execute any action (search, subscribe, purchase, etc.)
wais_confirm Confirm high-risk actions or complete payments (402 flow)
wais_status Check account status, plan, and credits

Install

pip install wais-mcp

Setup by Provider

All providers use the same wais-mcp command — only the config file location and format differ.

Claude Desktop

File: claude_desktop_config.json

{
  "mcpServers": {
    "wais": {
      "command": "wais-mcp",
      "env": {
        "PLATFORM_URL": "https://pod.deeger.io",
        "WAIS_API_KEY": "<your-api-key>"
      }
    }
  }
}

Claude Code

File: .mcp.json (project root) or ~/.claude/settings.json (global)

{
  "mcpServers": {
    "wais": {
      "command": "wais-mcp",
      "env": {
        "PLATFORM_URL": "https://pod.deeger.io",
        "WAIS_API_KEY": "<your-api-key>"
      }
    }
  }
}

ChatGPT Desktop

Requires Developer Mode: Settings > Advanced Settings > Developer Mode.

File locations:

  • macOS: ~/Library/Application Support/ChatGPT/mcp-server-config.json
  • Windows: %APPDATA%\OpenAI\ChatGPT\mcp-server-config.json
  • Linux: ~/.config/ChatGPT/mcp-server-config.json
{
  "mcpServers": {
    "wais": {
      "command": "wais-mcp",
      "env": {
        "PLATFORM_URL": "https://pod.deeger.io",
        "WAIS_API_KEY": "<your-api-key>"
      }
    }
  }
}

Restart ChatGPT after saving.

Gemini CLI

File: ~/.gemini/settings.json (global) or .gemini/settings.json (project)

{
  "mcpServers": {
    "wais": {
      "command": "wais-mcp",
      "env": {
        "PLATFORM_URL": "https://pod.deeger.io",
        "WAIS_API_KEY": "<your-api-key>"
      }
    }
  }
}

Cursor

File: .cursor/mcp.json (project) or ~/.cursor/mcp.json (global)

{
  "mcpServers": {
    "wais": {
      "command": "wais-mcp",
      "env": {
        "PLATFORM_URL": "https://pod.deeger.io",
        "WAIS_API_KEY": "<your-api-key>"
      }
    }
  }
}

Windsurf

File: ~/.codeium/windsurf/mcp_config.json

Or open from Windsurf: click MCPs icon in Cascade panel > Configure.

{
  "mcpServers": {
    "wais": {
      "command": "wais-mcp",
      "env": {
        "PLATFORM_URL": "https://pod.deeger.io",
        "WAIS_API_KEY": "<your-api-key>"
      }
    }
  }
}

VS Code (GitHub Copilot)

File: .vscode/mcp.json (project) or via Command Palette: MCP: Open User Configuration (global)

{
  "servers": {
    "wais": {
      "type": "stdio",
      "command": "wais-mcp",
      "env": {
        "PLATFORM_URL": "https://pod.deeger.io",
        "WAIS_API_KEY": "<your-api-key>"
      }
    }
  }
}

Note: VS Code uses servers instead of mcpServers, and requires the type field.

Usage without MCP (Python SDK)

For custom agents, scripts, or any Python code — no MCP client needed:

import asyncio
from wais_mcp import WAISClient

async def main():
    client = WAISClient(api_key="your-api-key")

    # 1. Discover what the site offers
    site = await client.discover("https://serphub.deeger.io")
    print(site.name, site.list_action_ids())

    # 2. Register (shares only required claims via SD-JWT)
    await client.register(site)

    # 3. Execute actions
    result = await client.execute(site, "search", {"query": "python"})
    print(result)

    # 4. Confirm high-risk actions (if 402 returned)
    # result = await client.confirm(site, challenge_id)

    # 5. Check account status
    status = await client.status(site)
    print(status)

asyncio.run(main())

Works with OpenAI SDK, LangChain, CrewAI, or any Python agent framework.

How It Works

  1. Discover — Fetches /.well-known/agents.json from a site
  2. Register — Shares only required claims via SD-JWT selective disclosure
  3. Execute — Handles tokens, DPoP, endpoint resolution, and async polling automatically
  4. Confirm — Polls for completion after 402 confirmation challenges
  5. Status — Check credits and plan info

All authentication (PoD tokens, DPoP proofs) is handled transparently.

Configuration

Env Var Default Description
PLATFORM_URL https://pod.deeger.io WAIS Provider URL
WAIS_API_KEY (keychain fallback on macOS) API key from provider dashboard

Development

pip install -e ".[dev]"

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wais_mcp-0.2.1.tar.gz (17.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wais_mcp-0.2.1-py3-none-any.whl (23.0 kB view details)

Uploaded Python 3

File details

Details for the file wais_mcp-0.2.1.tar.gz.

File metadata

  • Download URL: wais_mcp-0.2.1.tar.gz
  • Upload date:
  • Size: 17.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for wais_mcp-0.2.1.tar.gz
Algorithm Hash digest
SHA256 39ab6bb7e5ff5f8257e1a6321c9bc07d54b00876bf9219c0f9ba982dd26b743d
MD5 f055e63885cbf5e5d2464aaf3206c5c9
BLAKE2b-256 f306ba02039e3b369b087ab7fc7b40cdb6713f9d28898b070275b724daf17991

See more details on using hashes here.

File details

Details for the file wais_mcp-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: wais_mcp-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 23.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for wais_mcp-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e5f8ca492a947c3b1c6996c1d8388a081c0998f6bf7bfa881fad314fa45a2182
MD5 333e904f1c5a55b345fff843f82ac9bd
BLAKE2b-256 b933b175efdf21ac604c9c6f0a6fd6804632213ccf268a7a96e516e988017ae8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page