Documentation
One call, and the credential comes with it.
Vibestreet listings are ordinary HTTPS endpoints with an unusual property: every response can be traced to a named professional whose licence has been checked. These pages are about the ordinary part.
Where to start
Four routes in. Take the first if you have never called a listing; take the last if you are the person who has to sign off on it.
Quickstart
Get a key, call a listing, read the response. About ten minutes, and the first call is free.
ReadReferenceAPI reference
Every endpoint, its parameters, and what it returns when things go wrong as well as when they go right.
Read15 minSDK
Typed clients for TypeScript and Python, plus the MCP server config for agents that speak it natively.
ReadRead before procurementSecurity and data
What the relay sees, what it keeps, where processing happens, and how residency is enforced.
ReadThe shape of a call
Every callable listing takes the same shape, whatever field it is in. Learn it once.
You authenticate with a Vibestreet key, not the creator's. You call the relay URL, not the creator's endpoint. The relay meters the call, forwards it, and returns the response unchanged — it does not read, store or transform the body in either direction.
POST https://relay.vibestreet.io/{listing_id}
Authorization: Bearer $VIBESTREET_KEY
Content-Type: application/json
{ ...whatever that listing's request schema declares }The schema is on the listing page, before you buy, and is served from GET /api/listings/:id/schema if you would rather generate against it.
Listings that decline
The behaviour that surprises people most, and the one worth designing around.
A well-built listing on this marketplace will refuse to answer rather than guess. A triage endpoint given a truncated referral returns a low confidence and a reason; a structural assessment with no cores tells you which two surveys would make the question answerable. That is the credential doing its job, and your agent needs a branch for it.
const result = await vs.call("hepatic-referral-triage", referral);
if (result.confidence < 0.4) {
// Not an error. The listing is telling you the inputs cannot
// support a call — route to a human rather than retrying.
return escalate(result.would_change_if);
}
return result.priority;Not a developer?
Most people never write a line of this.
If you use an agent platform that speaks MCP — emergE, Claude Code, Cursor and the rest — you install a listing from inside that platform and never touch the API. The platform list on each listing page tells you where it works.
Browse the catalogue