wtsp.dev

Whether a number is on WhatsApp and, if so: personal or business account, about text, country, linked devices and whether it runs on the Cloud API. Businesses add their public profile: name, description, categories, email, websites, address, coordinates, hours, join date and Facebook page. No photo; /v1/profile/full adds it. Query param: phone, with country code (e.g. +14155552671). Every answer is charged, “not on WhatsApp” included; a lookup WhatsApp does not answer is free.

SocialLiveeip155:8453Exactvia cdp
WhatsappPhone-lookupProfileBusinessEnrichment
Calls · 30d
2↑ 75%
This endpoint's own trailing-30-day call count, as published by the upstream catalog and snapshotted daily. 22 snapshots so far.
$1.09
Verified settled volume
15 settlements proven x402 by their on-chain EIP-3009 marker.
$0.0060
Listed price
As published in the catalog. Always read the live 402 before paying.
2
Calls · 30d
Upstream's own call count for this endpoint, not ours.
2
Unique payers · 30d
Last called 2026-10-18 04:26Z
—
Upstream on-chain volume
Reported by the source catalog.
Paid to
0x539d036a305F78388dcA5FC49c27f9e29b83D315

The wallet the 402 directs payment to. Its whole payment record — every payer, every chain — is on the merchant page.

Asset 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913

Provider

The payTo wallet does not resolve to a registered ERC-8004 agent. That is not a verdict on the service — most of the catalog is unregistered.

Live 402 challenge

Captured by the enrichment pass, not read just now. Prices can change — always read the 402 the endpoint answers with.

{
  "error": {
    "code": "payment_required",
    "message": "/v1/profile costs 0.006 USDC per request: pay on Base with x402 (requirements in the PAYMENT-REQUIRED header, e.g. `npx @wtsp/cli`) or on Tempo with MPP (challenge in WWW-Authenticate, e.g. `npx mppx`), or use a prepaid API key. Docs: https://wtsp.dev/llms.txt"
  }
}

Accepts

The payment requirements as published to the catalog. Read the live 402 before paying — a price here is a claim, not a quote.

0.006USDC≈ $0.006 USD
on Base · exact scheme

Pay 0.006 USDC on Base to 0x539d…3D315. The signed payment is good for 5 minutes.

USD Coin contract
0x8335…02913
Payment window
5 minutes
As published
6000 smallest units
The catalog’s raw entry
[
  {
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "extra": {
      "name": "USD Coin",
      "version": "2"
    },
    "payTo": "0x539d036a305F78388dcA5FC49c27f9e29b83D315",
    "amount": "6000",
    "scheme": "exact",
    "network": "eip155:8453",
    "maxTimeoutSeconds": 300
  }
]

Extensions

{
  "bazaar": {
    "info": {
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "phone": "+14155552671"
        }
      },
      "output": {
        "type": "json",
        "example": {
          "phone": "+14155552671",
          "devices": {
            "count": 2,
            "hosted": false
          },
          "profile": {
            "about": "Fresh groceries, delivered daily 🍋",
            "aboutRestricted": false
          },
          "business": {
            "email": "hello@freshmarket.example",
            "hours": [
              {
                "day": "mon",
                "mode": "specific_hours",
                "openTime": "08:00",
                "closeTime": "20:00"
              },
              {
                "day": "sat",
                "mode": "specific_hours",
                "openTime": "09:00",
                "closeTime": "18:00"
              },
              {
                "day": "sun",
                "mode": "appointment_only",
                "openTime": null,
                "closeTime": null
              }
            ],
            "address": "123 Market St, San Francisco, CA 94103",
            "latitude": 37.7749,
            "timezone": "America/Los_Angeles",
            "websites": [
              "https://freshmarket.example"
            ],
            "longitude": -122.4194,
            "categories": [
              "Grocery Store",
              "Food delivery"
            ],
            "cartEnabled": true,
            "description": "Neighbourhood grocery with same-day delivery across San Francisco.",
            "displayName": "Fresh Market SF",
            "memberSince": "Joined in March, 2021",
            "businessType": "smb",
            "automatedType": "unknown",
            "memberSinceTs": 1615420800,
            "verifiedLevel": "unknown",
            "commerceExperience": "none",
            "linkedFacebookPage": {
              "id": "100064523310987",
              "name": "Fresh Market SF",
              "likes": 1840
            }
          },
          "identity": {
            "lid": "258166877098174@lid",
            "countryCode": "US"
          },
          "checkedAt": "2026-10-09T18:24:03.000Z",
          "accountType": "business",
          "hasWhatsApp": true
        }
      }
    },
    "schema": {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "input"
      ],
      "properties": {
        "input": {
          "type": "object",
          "required": [
            "type",
            "method"
          ],
          "properties": {
            "type": {
              "type": "string",
              "const": "http"
            },
            "method": {
              "enum": [
                "GET"
              ],
              "type": "string"
            },
            "queryParams": {
              "type": "object",
              "required": [
                "phone"
              ],
              "properties": {
                "phone": {
                  "type": "string",
                  "description": "Phone number with its country code, e.g. +14155552671. The + is optional; spaces, dashes and a leading 00 are fine."
                }
              }
            }
          },
          "additionalProperties": false
        },
        "output": {
          "type": "object",
          "required": [
            "type"
          ],
          "properties": {
            "type": {
              "type": "string"
            },
            "example": {
              "type": "object",
              "oneOf": [
                {
                  "type": "object",
                  "required": [
                    "phone",
                    "hasWhatsApp",
                    "accountType",
                    "identity",
                    "profile",
                    "business",
                    "checkedAt"
                  ],
                  "properties": {
                    "phone": {
                      "type": "string",
                      "description": "The number looked up, in E.164."
                    },
                    "devices": {
                      "type": "object",
                      "required": [
                        "count",
                        "hosted"
                      ],
                      "properties": {
                        "count": {
                          "type": "number",
                          "description": "Linked devices including the phone itself, so 1 means phone only."
                        },
                        "hosted": {
                          "type": "boolean",
                          "description": "Served by the WhatsApp Business Platform (Cloud API) rather than a phone: a strong real-business signal."
                        }
                      },
                      "description": "Absent on the rare occasion WhatsApp sends no device list."
                    },
                    "profile": {
                      "type": "object",
                      "required": [
                        "about",
                        "aboutRestricted"
                      ],
                      "properties": {
                        "about": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "The \"about\" (status) text."
                        },
                        "aboutRestricted": {
                          "type": "boolean",
                          "description": "True when an about text exists but privacy settings hide it, so `about` is empty."
                        }
                      }
                    },
                    "business": {
                      "anyOf": [
                        {
                          "type": "object",
                          "required": [
                            "displayName",
                            "description",
                            "categories",
                            "email",
                            "websites",
                            "address",
                            "latitude",
                            "longitude",
                            "timezone",
                            "hours",
                            "memberSince",
                            "memberSinceTs",
                            "businessType",
                            "verifiedLevel",
                            "cartEnabled",
                            "commerceExperience",
                            "automatedType",
                            "linkedFacebookPage"
                          ],
                          "properties": {
                            "email": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "hours": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "required": [
                                  "day",
                                  "mode",
                                  "openTime",
                                  "closeTime"
                                ],
                                "properties": {
                                  "day": {
                                    "type": "string",
                                    "description": "Day of week, e.g. `mon`."
                                  },
                                  "mode": {
                                    "type": "string",
                                    "description": "`specific_hours`, `open_24h` or `appointment_only` (times are null then)."
                                  },
                                  "openTime": {
                                    "type": [
                                      "string",
                                      "null"
                                    ],
                                    "description": "Opening time, HH:MM."
                                  },
                                  "closeTime": {
                                    "type": [
                                      "string",
                                      "null"
                                    ],
                                    "description": "Closing time, HH:MM."
                                  }
                                }
                              },
                              "description": "Opening hours per day."
                            },
                            "address": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "latitude": {
                              "type": [
                                "number",
                                "null"
                              ]
                            },
                            "timezone": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "description": "IANA zone the opening hours are in."
                            },
                            "websites": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "longitude": {
                              "type": [
                                "number",
                                "null"
                              ]
                            },
                            "categories": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              },
                              "description": "Every category the business picked; often more than one."
                            },
                            "cartEnabled": {
                              "type": "boolean",
                              "description": "Whether the account sells through a WhatsApp cart."
                            },
                            "description": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "displayName": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "description": "Public business name. Personal accounts publish no name at all."
                            },
                            "memberSince": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "description": "When the business joined, as WhatsApp words it: \"Joined in January, 2026\"."
                            },
                            "businessType": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "description": "`smb` for a small business, or an enterprise tier."
                            },
                            "automatedType": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "description": "Set when WhatsApp flags the account as automated (a bot)."
                            },
                            "memberSinceTs": {
                              "type": [
                                "number",
                                "null"
                              ],
                              "description": "The same moment as a unix timestamp (seconds)."
                            },
                            "verifiedLevel": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "description": "Meta verification tier."
                            },
                            "commerceExperience": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "linkedFacebookPage": {
                              "anyOf": [
                                {
                                  "type": "object",
                                  "required": [
                                    "id",
                                    "name",
                                    "likes"
                                  ],
                                  "properties": {
                                    "id": {
                                      "type": "string"
                                    },
                                    "name": {
                                      "type": [
                                        "string",
                                        "null"
                                      ]
                                    },
                                    "likes": {
                                      "type": [
                                        "number",
                                        "null"
                                      ]
                                    }
                                  }
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "Linked Facebook page and its follower count."
                            }
                          }
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Business profile; null for personal accounts."
                    },
                    "identity": {
                      "type": "object",
                      "required": [
                        "countryCode",
                        "lid"
                      ],
                      "properties": {
                        "lid": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "WhatsApp's internal account id. Numbers that share one account share it."
                        },
                        "countryCode": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "Country WhatsApp reports for the account (ISO 3166-1 alpha-2), not one guessed from the prefix."
                        }
                      }
                    },
                    "checkedAt": {
                      "type": "string",
                      "description": "When this answer was fetched from WhatsApp (ISO 8601)."
                    },
                    "accountType": {
                      "enum": [
                        "business",
                        "personal"
                      ],
                      "type": "string",
                      "description": "`business` when WhatsApp published a business profile."
                    },
                    "hasWhatsApp": {
                      "type": "boolean",
                      "const": true,
                      "description": "The number is a registered WhatsApp account."
                    }
                  }
                },
                {
                  "type": "object",
                  "required": [
                    "phone",
                    "hasWhatsApp",
                    "checkedAt"
                  ],
                  "properties": {
                    "phone": {
                      "type": "string",
                      "description": "The number looked up, in E.164."
                    },
                    "checkedAt": {
                      "type": "string",
                      "description": "When this answer was fetched from WhatsApp (ISO 8601)."
                    },
                    "hasWhatsApp": {
                      "type": "boolean",
                      "const": false,
                      "description": "The number is not on WhatsApp: a definitive answer, not a failure."
                    }
                  }
                }
              ]
            }
          }
        }
      }
    }
  }
}

Provenance

Seen in the source catalog
2026-10-18 04:26Z
Last indexed by Roundhouse
2026-10-26 17:20Z
Last enriched (probe, favicon, geo)
2026-10-10 18:16Z
x402 version
2
Max timeout
300s
Liveness probe
HTTP 402
Report

Hand this page to an agent

Copy the prompt and paste it into Claude, an MCP client or your own agent — it will vet this service and call it over the free read API. No key, no account.

GET api.roundhouseai.io/v0/endpoints

This endpoint's own trailing-30-day call count, as published by the upstream catalog and snapshotted daily. 22 snapshots so far. Verified volume counts only settlements with an on-chain EIP-3009 marker.

Open skill.md
Show the prompt
Using Roundhouse, look up the x402 service wtsp.dev and tell me whether it is
worth paying: what a call costs, whether the endpoint answered when last probed, and what
its payment record actually shows.

curl -s 'https://api.roundhouseai.io/v0/endpoints?q=wtsp.dev'
curl -s 'https://api.roundhouseai.io/v0/merchants/<the payTo wallet returned above>'

Then call it: read the price from the live 402 at https://wtsp.dev/v1/profile, never from
a cached figure, and pay with an x402 client.

The /v0 API needs an API key (`authorization: Bearer rh_live_…`) on everything except
/v0/unified* and /v0/endpoints. Either pay over x402 (mint a personal key for $0.01 at
GET https://api.roundhouseai.io/v0/test/x402), or ask me for an organization key, which I create at
https://roundhouseai.io/dashboard/connections. If you have neither, ask before going further.

If you do not have Roundhouse tools or skills installed, read
https://roundhouseai.io/skill.md first — it is the whole procedure.