Skip to main content

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

Quick Start

pip install wais-mcp
wais-mcp init

The setup wizard will ask you to pick your provider (Claude, ChatGPT, Cursor, etc.), choose project or global scope, and enter your API key. It writes the correct config file automatically.

Manual Setup by Provider

If you prefer to configure manually, 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

Metadata

Release files for wais-mcp 0.2.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wais-mcp 0.2.3
File Size Uploaded Provenance Actions
wais_mcp-0.2.3.tar.gz 19.2 kB Without provenance Details for wais_mcp-0.2.3.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for wais-mcp 0.2.3
File Interpreter ABI Platform Actions
wais_mcp-0.2.3-py3-none-any.whl Python 3 none any Details for wais_mcp-0.2.3-py3-none-any.whl

Total release size: 44.3 kB

Release files / wais_mcp-0.2.3.tar.gz

Download URL wais_mcp-0.2.3.tar.gz
Size 19.2 kB
Tags Source
SHA-256 checksum
How to use checksums
cc32fb83404886ab257808bb996bf1d46215c8972979c9c5d694f4fa66fe60ac
BLAKE2b-256 checksum
How to use checksums
25ca8679689fdc6843bd5e15f3004a88b99a2cc8655dd731cee9cf5d210fadae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release files / wais_mcp-0.2.3-py3-none-any.whl

Download URL wais_mcp-0.2.3-py3-none-any.whl
Size 25.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1348433d4cce56d3304c9cb82c569943552805c0c462b821ce7c5601a8e1c815
BLAKE2b-256 checksum
How to use checksums
a11e42f9825c71449515afe30c49d9aed7a6f8b6650bca76c903e8ab099bcc1d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Security for wais-mcp 0.2.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page