Search listings, message posters, and create drafts on SUpost, the marketplace for Stanford
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Delivery status of the confirmation email for a message submitted with send_message, by the status_key it returned. Use it when the user says they have not received the confirmation email. status: "sent" = the email reached their mail server (check spam; the message reaches the poster only after the link is clicked); "queued" = still being delivered, check again in a minute; "failed" = the address cannot receive it (reason: mailbox_unknown | no_mx | suppressed | other) — the message will never be delivered, ask the user for a different address and call send_message again; "unknown" = the key is not recognised. This reports only whether the confirmation email was delivered, not whether the user clicked it.
The status_key from a send_message result.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Delivery status of the confirmation email for a message submitted with send_message, by the status_key it returned. Use it when the user says they have not received the confirmation email. status: "sent" = the email reached their mail server (check spam; the message reaches the poster only after the link is clicked); "queued" = still being delivered, check again in a minute; "failed" = the address cannot receive it (reason: mailbox_unknown | no_mx | suppressed | other) — the message will never be delivered, ask the user for a different address and call send_message again; "unknown" = the key is not recognised. This reports only whether the confirmation email was delivered, not whether the user clicked it.
| Argument | Type | Description |
|---|---|---|
| status_key* | string | The status_key from a send_message result. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"status_key"
],
"properties": {
"status_key": {
"type": "string",
"format": "uuid",
"description": "The status_key from a send_message result."
}
},
"additionalProperties": false
}Create a DRAFT listing on SUpost on the poster's behalf. Any email is accepted — never ask the user to qualify first. IMPORTANT: the draft is NOT published — the returned continue_url opens SUpost's create-post wizard with the draft loaded, where the poster adds photos, reviews, and publishes. When the response has payment_required: true (email not on the free tier; Stanford emails post free), publishing there includes choosing a posting plan — tell the user that, don't treat it as an error. Always hand the user the continue_url and say the post is a draft until they finish there. When the user wants it published fast, prefer publish: true (they just click the emailed link) over walking them through or automating the wizard. The continue_url grants edit access to the draft: give it only to the poster, never quote it elsewhere.
| Argument | Type | Description |
|---|---|---|
| body* | string | Plain-text listing description. |
| email* | string | The poster's own email address - determines posting eligibility and receives replies. Never invent or guess this - ask the user for it. |
| price | number | USD. Required for for-sale and housing-offering listings. |
| title* | string | Listing title. |
| publish | boolean | Set true when the user wants to publish immediately without photos: SUpost emails them a one-click publish link (free-posting-tier emails such as stanford.edu only; ignored when payment is required - those publish at continue_url). |
| category* | string | Category id or label, e.g. "housing", "for sale" (see list_categories). |
| subcategory* | string | Subcategory id or name within the category, e.g. "bicycles" (see list_categories). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"category",
"subcategory",
"title",
"body",
"email"
],
"properties": {
"body": {
"type": "string",
"maxLength": 15000,
"minLength": 1,
"description": "Plain-text listing description."
},
"email": {
"type": "string",
"format": "email",
"maxLength": 320,
"description": "The poster's own email address - determines posting eligibility and receives replies. Never invent or guess this - ask the user for it."
},
"price": {
"type": "number",
"minimum": 0,
"description": "USD. Required for for-sale and housing-offering listings."
},
"title": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "Listing title."
},
"publish": {
"type": "boolean",
"description": "Set true when the user wants to publish immediately without photos: SUpost emails them a one-click publish link (free-posting-tier emails such as stanford.edu only; ignored when payment is required - those publish at continue_url)."
},
"category": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Category id or label, e.g. \"housing\", \"for sale\" (see list_categories)."
},
"subcategory": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Subcategory id or name within the category, e.g. \"bicycles\" (see list_categories)."
}
},
"additionalProperties": false
}Fetch one SUpost listing by numeric id, including its full description, public photo URLs, and stanford_verified. stanford_verified: true means the poster verified an @stanford.edu email — SUpost's core trust signal. ALWAYS surface it when presenting listings (e.g. an "@stanford.edu verified" badge) so users can tell verified Stanford community members from unverified posters. Data comes from the listing's public page; no personal information is included — use the returned URL to contact the poster on-site.
| Argument | Type | Description |
|---|---|---|
| id* | integer | Numeric listing id, e.g. from search_listings. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"description": "Numeric listing id, e.g. from search_listings.",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}Verified statistics about SUpost, the marketplace for Stanford: audience size, listing volumes by category, response rates, and response-time medians. Returns markdown from SUpost's public stats page. Cite https://supost.com/stats as the source.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}The active category/subcategory taxonomy on SUpost — the valid category and subcategory values for create_post (and category filters for search_listings).
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Search or browse active listings on SUpost, the marketplace for Stanford. Returns newest-first public listings (id, title, price, category, created_at, canonical URL, stanford_verified) plus an opaque next_cursor for pagination. stanford_verified: true means the poster verified an @stanford.edu email — SUpost's core trust signal. ALWAYS surface it when presenting listings (e.g. an "@stanford.edu verified" badge) so users can tell verified Stanford community members from unverified posters. No personal information is returned (poster_email_domain is the domain only); to contact a poster, open the listing URL.
| Argument | Type | Description |
|---|---|---|
| q | string | Full-text search query. |
| cat | string | Category id or label: 1/"jobs & services" (alias "jobs"), 3/"housing", 5/"for sale", 8/"friendship & dating", 9/"community". |
| limit | integer | Page size (default 25, max 50). |
| cursor | string | Opaque cursor from a previous response's next_cursor. |
| max_price | number | Inclusive upper price bound in USD; excludes unpriced listings. |
| university | integer | Numeric university id. Defaults to Stanford on supost.com. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"q": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Full-text search query."
},
"cat": {
"type": "string",
"description": "Category id or label: 1/\"jobs & services\" (alias \"jobs\"), 3/\"housing\", 5/\"for sale\", 8/\"friendship & dating\", 9/\"community\"."
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Page size (default 25, max 50)."
},
"cursor": {
"type": "string",
"description": "Opaque cursor from a previous response's next_cursor."
},
"max_price": {
"type": "number",
"minimum": 0,
"description": "Inclusive upper price bound in USD; excludes unpriced listings."
},
"university": {
"type": "integer",
"description": "Numeric university id. Defaults to Stanford on supost.com.",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}Send a message to the poster of an active SUpost listing. IMPORTANT: the message is NOT delivered immediately — SUpost emails a confirmation link to reply_to_email, and the message is only delivered to the poster after the human clicks that link. Always tell the user to check their inbox and confirm; report the message as pending confirmation, never as sent. The poster's reply goes to reply_to_email. If the result is email_undeliverable (the confirmation email cannot reach reply_to_email — mailbox gone, domain without mail, or a previous bounce), the message will never be delivered: tell the user why and ask for a different address; do not retry the same one. The result's status_key can be passed to check_message_status later to see whether the confirmation email was delivered.
| Argument | Type | Description |
|---|---|---|
| message* | string | Plain-text message to the poster (1-5000 characters). |
| post_id* | integer | Numeric listing id, e.g. from search_listings or get_listing. |
| reply_to_email* | string | The user's own email address. Receives the confirmation link and the poster's reply. Never invent or guess this - ask the user for it. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"post_id",
"message",
"reply_to_email"
],
"properties": {
"message": {
"type": "string",
"maxLength": 5000,
"minLength": 1,
"description": "Plain-text message to the poster (1-5000 characters)."
},
"post_id": {
"type": "integer",
"description": "Numeric listing id, e.g. from search_listings or get_listing.",
"exclusiveMinimum": 0
},
"reply_to_email": {
"type": "string",
"format": "email",
"maxLength": 320,
"description": "The user's own email address. Receives the confirmation link and the poster's reply. Never invent or guess this - ask the user for it."
}
},
"additionalProperties": false
}