cd /news/ai-agents/show-hn-agent-payments-by-social-han… Β· home β€Ί topics β€Ί ai-agents β€Ί article
[ARTICLE Β· art-124362] src=github.com β†— pub= topic=ai-agents verified=true sentiment=Β· neutral

Show HN: Agent payments by social handles (not Stripe-based, not on bank rails)

Quidli launched Connect, an open payments system that lets AI agents send tokens to people or other agents by resolving social handles from Telegram, Discord, Farcaster, X, GitHub, LinkedIn, email, and phone to wallets, with reputation checks before transactions. The service is available as an MCP server compatible with Cursor, Claude Desktop, and Claude Code, and requires no API key for basic lookups, though a key unlocks higher limits and Smart Send. The public repository is on GitHub at github.com/Quidli/connect-mcp.

read8 min views1 publishedSep 9, 2026
Show HN: Agent payments by social handles (not Stripe-based, not on bank rails)
Image: Michielbdejong (auto-discovered)

Open payments for multiplayer agents, powered by social reputation. Resolve a social handle to a wallet, check reputation, and send tokens β€” from Cursor, Claude Desktop, Claude Code, or any MCP-compatible client.

Multiplayer means parties who don't already know each other β€” an agent paying a person, or another agent, with no prior relationship and no account to fall back on. Connect is how it verifies who it's dealing with before sending anything.

Public repository: github.com/Quidli/connect-mcp

No API key required.

Claude Code:

claude mcp add --transport http quidli https://mcp.connect.quid.li/

Cursor: Add to Cursor (or paste that link into Settings β†’ MCP β†’ Add new MCP server)

Claude Desktop: Settings β†’ Connectors β†’ Add custom connector, URL https://mcp.connect.quid.li

Local (any client) β€” runs on your machine instead of the hosted endpoint:

npx -y @quidli/connect-mcp

See Choose how to connect below for API keys, x402 wallet pay-per-call, and full config snippets.

Then ask your agent:

Resolve the Farcaster handle ahn.eth to a wallet.

{
  "status": "completed",
  "results": [
    {
      "type": "farcaster",
      "value": "ahn.eth",
      "ethWalletAddress": "0x07De92Ce6474D718c80e696516bf0bE53290fF5E",
      "solWalletAddress": "9DD2CqPKZJoo7ZRgCXxJNMjhzfgVihSKtkZpn8qnEWK9"
    }
  ]
}

Resolves across Telegram, Discord, Farcaster, X, GitHub, LinkedIn, email and phone β€” and generates a wallet for people who have never used Quidli.

Lookup, scores, and price run without a key under a shared anonymous quota. Add a Connect API key for higher limits, your own profile (connect_me), and Smart Send.

Hosted (mcp.connect.quid.li ) Local (npx @quidli/connect-mcp )
Setup Add a URL in MCP settings Run a local process via npx
Auth Optional API key. Without a key: lookup/scores under a shared anonymous quota; price/chains are public API key, x402 pay-per-call, or none for lookup/scores
Pros No install; try without a key; always on Quidli infrastructure Wallet private key never leaves your machine; pay per call with USDC instead of an API key
Cons Anonymous traffic shares a global rate limit; no pay-per-call billing Requires Node.js 20+; npx may download the package on first run
Limitations Cannot use x402 / wallet auth β€” do not send a private key to the hosted endpoint x402 mode needs USDC on Base (mainnet 8453 );connect_drop requires an API key

Get a Connect API key at connect.quid.li β†’ Enable API access for higher limits, connect_me, and Smart Send.

Zero local setup. Lookup, scores, agent, and price work without an API key (shared anonymous quota). Add a key for higher limits, your profile (connect_me), and Smart Send.

If you already have other MCP servers: skip the deeplink and add manually β€” the one-click install can overwrite your entire mcp.json in some Cursor versions.

Add to Cursor

Or paste into Cursor Settings β†’ MCP β†’ Add new MCP server:

cursor://anysphere.cursor-deeplink/mcp/install?name=quidli-connect&config=eyJ1cmwiOiJodHRwczovL21jcC5jb25uZWN0LnF1aWQubGkifQ==

Merge this into ~/.cursor/mcp.json (global) or .cursor/mcp.json (project) under mcpServers β€” do not replace your existing entries:

"quidli-connect": {
  "url": "https://mcp.connect.quid.li"
}

Optional β€” higher limits and Smart Send:

"quidli-connect": {
  "url": "https://mcp.connect.quid.li",
  "headers": {
    "x-api-key": "<your-connect-api-key>"
  }
}
  1. Open Claude β†’ Settings β†’ Connectors (orSettings β†’ Developer β†’ Edit Config on older versions).
  2. Add a custom MCP connector with URL https://mcp.connect.quid.li . Optionally set headerx-api-key: <your-connect-api-key> .

Or merge this into your config file and restart Claude:

  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "quidli-connect": {
      "url": "https://mcp.connect.quid.li"
    }
  }
}

If your Claude version does not support remote url connectors, use the local bridge instead (still hosted API, runs a small local helper):

{
  "mcpServers": {
    "quidli-connect": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote@latest",
        "--http",
        "https://mcp.connect.quid.li"
      ]
    }
  }
}

Requires Node.js 20+ for the bridge. Restart Claude Desktop after saving. You should see a hammer icon in the chat input when tools are available.

Without a key, initialize / tools/list always succeed. Anonymous tools/call share a global quota (HTTP 429 when exceeded β€” get a key for higher limits). Placeholder keys still return 401.

  1. Go to grok.com/connectors and selectCustom .
  2. Enter the server URL: https://mcp.connect.quid.li

This gives Grok access to the anonymous-tier tools -- lookup, scores, agent, and price -- under the shared quota.

Current limitation: Grok's custom connector UI does not currently support attaching an API key or custom header. That means connect_me, connect_drop, and connect_drop_balance (all API key only) are not usable through Grok yet -- calls to them will return an unauthorized error. This isn't a connect-mcp limitation; it's Grok's custom-connector setup not exposing an auth field at this time.

If you already use Smithery, it will handle auth and sessions for you. Requires a Smithery account.

npx smithery login
npx smithery mcp add quidli/connect

Best if you want pay-per-call with a wallet, or prefer credentials in a local env file.

Requires Node.js 20+.

Add one of the following to .cursor/mcp.json (project) or your global MCP settings.

Same billing model as hosted; credentials stay on your machine.

{
  "mcpServers": {
    "quidli-connect": {
      "command": "npx",
      "args": ["-y", "@quidli/connect-mcp"],
      "env": {
        "CONNECT_API_KEY": "<your-connect-api-key>",
        "CONNECT_API_BASE_URL": "https://api.connect.quid.li"
      }
    }
  }
}

No API key. Authenticated calls pay automatically when the API returns HTTP 402. Your wallet private key is only read by the local process.

{
  "mcpServers": {
    "quidli-connect": {
      "command": "npx",
      "args": ["-y", "@quidli/connect-mcp"],
      "env": {
        "EVM_PRIVATE_KEY": "0x<wallet-with-usdc-on-base>",
        "CONNECT_API_BASE_URL": "https://api.connect.quid.li",
        "CONNECT_X402_EVM_NETWORK": "8453"
      }
    }
  }
}

Use 84532 for Base Sepolia when pointing at a staging API.

The MCP process starts without CONNECT_API_KEY or EVM_PRIVATE_KEY. connect_lookup, connect_scores_*, connect_get_price, and connect_get_chains call the API without auth. That succeeds when x402 is disabled (price 0, typical for local). On production with x402 enabled, those tools return HTTP 402 until you set a key or wallet.

connect_me, connect_drop, and connect_drop_balance still require CONNECT_API_KEY.

{
  "mcpServers": {
    "quidli-connect": {
      "command": "npx",
      "args": ["-y", "@quidli/connect-mcp"],
      "env": {
        "CONNECT_API_BASE_URL": "http://127.0.0.1:3011"
      }
    }
  }
}
  1. Open Claude β†’ Settings β†’ Developer β†’ Edit Config (enable Developer mode first if you do not see it).
  2. Merge one of the blocks below into mcpServers in:
  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json
  1. Restart Claude Desktop.
{
  "mcpServers": {
    "quidli-connect": {
      "command": "npx",
      "args": ["-y", "@quidli/connect-mcp"],
      "env": {
        "CONNECT_API_KEY": "<your-connect-api-key>",
        "CONNECT_API_BASE_URL": "https://api.connect.quid.li"
      }
    }
  }
}
{
  "mcpServers": {
    "quidli-connect": {
      "command": "npx",
      "args": ["-y", "@quidli/connect-mcp"],
      "env": {
        "EVM_PRIVATE_KEY": "0x<wallet-with-usdc-on-base>",
        "CONNECT_API_BASE_URL": "https://api.connect.quid.li",
        "CONNECT_X402_EVM_NETWORK": "8453"
      }
    }
  }
}

If both CONNECT_API_KEY and EVM_PRIVATE_KEY are set, the API key is used.

Credentials are optional in local mode. Without either variable, lookup/scores still work when the API does not charge x402. connect_me and Smart Send tools require CONNECT_API_KEY.

If you're launching @quidli/connect-mcp via npx from inside a background process manager -- a macOS launchd agent, a systemd unit, a supervisor, or any client config running without a normal interactive shell -- it can hang indefinitely with zero output and no error. This isn't a crash; npx is stuck resolving PATH in an environment that doesn't provide the same shell initialization an interactive terminal gets.

Workaround: if you have Bun installed, use bunx instead of npx. It performs the same job -- running the package without a local install -- but doesn't hit this hang in restricted-PATH environments.

{
  "mcpServers": {
    "quidli-connect": {
      "command": "bunx",
      "args": ["-y", "@quidli/connect-mcp"],
      "env": {
        "CONNECT_API_KEY": "your-api-key"
      }
    }
  }
}

If you're spawning the process yourself (rather than through a client's MCP config) and want to be resilient to bunx not being on PATH either, resolve it by absolute path first:

import { spawn } from "node:child_process";
import { existsSync } from "node:fs";
import { homedir } from "node:os";
import { join } from "node:path";

const BUNX_PATH = (() => {
  const candidate = join(homedir(), ".bun", "bin", "bunx");
  return existsSync(candidate) ? candidate : "bunx";
})();

const proc = spawn(BUNX_PATH, ["-y", "@quidli/connect-mcp"], {
  stdio: ["pipe", "pipe", "pipe"],
});

This isn't a general claim that Bun is better than npm -- it's a targeted fix for one specific, reproducible failure mode when npx is spawned outside an interactive shell.

Double-check you're setting CONNECT_API_KEY, not API_KEY -- the server only reads CONNECT_API_KEY, and a mismatch here fails silently: your calls will run in anonymous/unauthenticated mode instead of erroring, which can look like a working-but-oddly-limited connection rather than a config mistake.

Tool What it does
connect_get_price List reference prices (no auth)
connect_get_chains List supported chains and feature compatibility (no auth)
connect_lookup Resolve social identities to EVM and SOL wallet addresses
connect_lookup_exposed List platforms a recipient has exposed on Connect
connect_scores_batch Batch scores for accounts or usernames
connect_scores_by_account Scores for one linked account
connect_scores_by_username Scores by Connect username
connect_me API key owner profile, scores, and linked accounts β€” API key only
connect_drop Smart Send (EVM batch or Solana SOL/SPL) β€” API key only
connect_drop_balance Smart Send wallet balances on a chain β€” API key only

Ask your client to use these tools when you need Connect data or actions.

── more in #ai-agents 4 stories Β· sorted by recency
── more on @quidli 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain β€” perfect for shipping the agent you just read about.

$git push zahid main
β†’ Live at https://your-agent.zahid.host βœ“
Get free account β†’ Pricing
from €0/mo Β· no card required
LIVE [news/show-hn-agent-paymen…] indexed:0 read:8min 2026-09-09 Β· β€”