Quidli Connect
Measured conclusion: Alive, not deep-tested. L2 outcome: not_attempted.
Resolve social handles to wallets, score onchain reputation, and make agent payments in USDC.
| Author | io.github.Quidli |
|---|---|
| Access | mixed |
| Publisher key required | No |
| Measured state | Alive, not deep-tested |
| L1 liveness | alive |
| L1 latency | 114 ms |
| Last measured | 2026-10-26 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"Quidli Connect": {
"url": "https://mcp.connect.quid.li",
"transport": "streamable-http"
}
}
}
Measured tools (14)
connect_get_priceread-onlyGet public x402 list prices for lookup and scores (reference only; live paywall amounts are in 402 responses).
Hints: read-only yes · destructive no · idempotent yes · open-world yes
connect_get_chainsread-onlyList product chains with per-feature compatibility. lookup is true for EVM catalog chains and Solana; drop is true for Smart Send chains, enabled delegation chains, and Solana (chainId 1399811149 for connect_drop / connect_drop_balance).
Hints: read-only yes · destructive no · idempotent yes · open-world yes
connect_lookupread-onlyResolve social identities to EVM and Solana wallet addresses. Resolving a recipient who has no wallet provisions one for them, so this is read-only for the caller but not for the recipient. If status is processing, retry the same payload.
Parameters:
recipients(required) — array — Recipients to resolve to EVM/Solana wallets
Hints: read-only yes · destructive no · idempotent yes · open-world yes
connect_lookup_exposedread-onlyList platforms a recipient has exposed on Connect, with enriched profile, scores, and wallet addresses. Recipient may be a social account, an exposed wallet (EVM/Solana/smart wallet), or a Connect username. May require x402 payment when the profile owner charges for lookups.
Parameters:
recipient(required) — object — Social identity, exposed wallet (EVM/Solana/smart wallet), or Connect username whose exposed linked accounts and Connect profile should be listed
Hints: read-only yes · destructive no · idempotent yes · open-world yes
connect_scores_batchread-onlyBatch scores for linked accounts or Connect usernames. One result per request user. Optional filter sets passedFilter (quidli 0–100, neynar/lens 0–1, ethos 0–2800).
Parameters:
users(required) — array — Users to fetch scores forfilter— object
Hints: read-only yes · destructive no · idempotent yes · open-world yes
connect_scores_by_accountread-onlyScores for a linked social account or wallet.
Parameters:
platform(required) — stringidentifier(required) — string
Hints: read-only yes · destructive no · idempotent yes · open-world yes
connect_scores_by_usernameread-onlyScores by Connect public username.
Parameters:
username(required) — string
Hints: read-only yes · destructive no · idempotent yes · open-world yes
connect_meread-onlyGet the Connect profile, scores, and all linked accounts for the API key owner. Use to identify which user the key belongs to.
Hints: read-only yes · destructive no · idempotent yes · open-world yes
connect_dropdestructiveExecute a Smart Send from the API key owner Connect embedded wallet. EVM: batch native or ERC-20 (need native gas plus the token). Solana (chainId 1399811149): SOL or SPL from the Solana embedded wallet; packs up to 20 native or 10 SPL recipients per transaction. Social recipient types: email, phone, telegram, discord, farcaster, twitter, github (id or username). linkedin and slack are not on /drop — use connect_lookup first, then type wallet. After connect_lookup, EVM payouts use ethWalletAddress (never solWalletAddress); Solana payouts use solWalletAddress (never ethWalletAddress). Social types on /drop resolve server-side; for type wallet, pass the resolved payout address for the target chain. Omit tokenContract or set it to null for the native token; pass an ERC-20 contract or SPL mint otherwise — do not use the zero address. Amounts are smallest-unit integer strings (ETH 18 decimals, SOL 9, USDC usually 6). Solana native (tokenContract null): no ATA. Sending to a recipient without an existing funded account requires amount ≥ 890880 lamports (rent-exempt minimum for a system account); that SOL stays with the recipient. Below that the tx fails. Sender also pays a ~5000-lamport fee. Solana SPL: tokens sit in Associated Token Accounts (ATA), not on the wallet pubkey. Recipients need not already hold the token — the API prepends CreateIdempotent. The sender (not the recipient) pays ~2039280 lamports (~0.002039 SOL) rent per newly created dest ATA, plus tx fees, on top of the token amount (which can be as small as 1 unit). A 400 "Insufficient funds" on SPL is often missing SOL for ATA rent, not missing USDC. Token-2022 is not supported; USDC mint is EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v. Always call connect_drop_balance first. Returns 201 when submitted or 202 when recipients still processing — retry with the same idempotencyKey.
Parameters:
idempotencyKey(required) — stringchainId(required) — integer — EVM chain ID or 1399811149 for Solana mainnetrecipients(required) — array — Wallet or social recipients (all wallet or all social, no mix). Social types: email, phone, telegram, discord, farcaster, twitter, github (numeric id or username). linkedin and slack are not supported — use connect_lookup first, then type wallet. Optional amountInWei per recipient uses the same smallest-unit rules as amountInWeiPerRecipient. On EVM, wallet ids are 0x addresses; on Solana, base58 pubkeys. Social lookup payouts use ethWalletAddress on EVM and solWalletAddress on Solana.trustFilter— object — Keep only recipients in the sender EAS trust graph.tokenContract— ['string', 'null'] — EVM ERC-20 contract or Solana SPL mint. Omit or null for the native token (ETH/POL/AVAX, or SOL on 1399811149). Do not use the zero address.ignoreFailedRecipients— boolean — When true, send to recipients that resolved successfully and skip failed lookups.amountInWeiPerRecipient— Uniform amount in smallest units. Native ETH uses 18 decimals; SOL uses 9; ERC-20/SPL uses token decimals from connect_drop_balance (USDC usually 6). Omit when setting amountInWei on each recipient.
Hints: read-only no · destructive yes · idempotent yes · open-world yes
connect_drop_balanceread-onlyGet native and token balances for the API key owner embedded wallet. Accepts Smart Send chains and enabled delegation chains. Robinhood Chain (4663) returns ERC-20 balances from Blockscout. Monad (143) returns ERC-20 balances from Moralis; other delegation chains return native plus featured tokens. Always call before connect_drop. Zero balances are omitted, so a missing token means balance 0. EVM: confirm native gas plus the ERC-20 being sent. Solana (chainId 1399811149): SOL in this response is spendable lamports on the wallet pubkey (rent locked in existing token accounts is not included). Native SOL drop to a recipient without an existing funded account: amount itself must be ≥ 890880 lamports and sender SOL must cover amount + ~5000 lamports fee. SPL drop: token balance ≥ total amount, and SOL ≥ tx fee + ~2039280 lamports (~0.002039 SOL) per recipient that may need a new Associated Token Account — even when sending USDC. Insufficient SOL for ATA rent fails before the token transfer.
Parameters:
chainId(required) — integer — EVM chain ID or 1399811149 for Solana mainnet (Smart Send)
Hints: read-only yes · destructive no · idempotent yes · open-world yes
connect_trust_createdestructiveCreate unidirectional trust attestations on Base (EAS) from the API key owner embedded wallet to one or more wallets or social identities, in a single transaction. Identical active attestations are returned without a new transaction. Recipients still provisioning are reported as processing while the others are attested. Requires CONNECT_API_KEY, Smart Send attestation signer enrolled, and ETH on Base for gas when a new attestation is submitted.
Parameters:
to(required) — array — Identities to trust (wallet, social, or Connect username). Level, context, and expiresIn apply to every entry. Maximum 250.level(required) — integer — Trust level 1–100context— string — Optional context such as team:quidliexpiresIn— integer — Optional lifetime in seconds
Hints: read-only no · destructive yes · idempotent yes · open-world yes
connect_trust_revokedestructiveRevoke active trust attestations from the API key owner to a target. Optional context limits which attestations are revoked. Requires CONNECT_API_KEY and ETH on Base.
Parameters:
to(required) — object — Identity to untrustcontext— string — Revoke only this context. Omit to revoke all contexts for the pair.
Hints: read-only no · destructive yes · idempotent yes · open-world yes
connect_trust_checkread-onlyCheck whether identities sit in a trust graph at depth 1. Omit context to match any context.
Parameters:
from(required) — object — Graph ownertargets(required) — array — Identities to testcontext— string — If set, only this context matches
Hints: read-only yes · destructive no · idempotent yes · open-world yes
connect_trust_graphread-onlyList outgoing or incoming trust edges for an identity at depth 1.
Parameters:
platform(required) — string — Identity platform, or username for a Connect usernameidentifier(required) — stringcontext— stringdirection— string — out = who they trust (default); in = who trusts them
Hints: read-only yes · destructive no · idempotent yes · open-world yes
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.