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.2.tar.gz (19.0 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.2-py3-none-any.whl (24.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: wais_mcp-0.2.2.tar.gz
  • Upload date:
  • Size: 19.0 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.2.tar.gz
Algorithm Hash digest
SHA256 8c19cf9611468674c7323427e2d726a146d01aff474af924880f2fc5ce69d552
MD5 12c0b22b447026907eb2a72407767bbf
BLAKE2b-256 78cbd6e1d11988b84044c1f36526077ba78525e9c372ad599766f219c44fc503

See more details on using hashes here.

File details

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

File metadata

  • Download URL: wais_mcp-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 24.9 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1a6e1e152f6a293fc608655d89007e60c0057ccce53ee43532b37023ddd81016
MD5 b5f743c16d733ba493ec8a9f2ad78ee2
BLAKE2b-256 b1e4ce4a6b2f8d60c5091b7b27d00332eb433229320d3eec56a5af08cdeb306d

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