supost-mcp
Server Details
Search listings, message posters, and create drafts on SUpost, the marketplace for Stanford
- Status
- Healthy
- Uptime
- 100.0% over 67 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- Capmus-Team/supost-mcp
- GitHub Stars
- 0
- Server Listing
- supost-mcp
TDQS
Scored across 7 tools
Each tool targets a distinct resource and action: search_listings browses, get_listing fetches one by id, create_post drafts a listing, send_message submits a message, and check_message_status reports delivery of that message's confirmation email. No two tools appear to do the same thing.
All seven tools follow a clean snake_case verb_noun pattern (e.g., search_listings, get_listing, create_post, send_message). The verbs accurately signal the operation, making the set easy to scan.
Seven tools is well-scoped for a marketplace integration, covering discovery, lookup, posting, messaging, status checking, taxonomy, and market stats. No tool feels redundant or missing at this scale.
The core agent workflows — search, view, draft a post, message a poster, check confirmation delivery — are well covered. Minor gaps exist for updating or deleting a listing/message after creation, but the create-post wizard and continue_url provide a practical workaround.
Available Tools
7 toolscheck_message_statusCheck a message's confirmation emailAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| status_key | Yes | The status_key from a send_message result. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully explains behavior: what each status means, what happens on failed deliveries, that queued means retry later, and that message delivery to the poster only occurs after link click. This gives the agent enough behavioral context to act safely and accurately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every clause adds value: scoping, usage trigger, all four status meanings, and the limitation about click tracking. It is front-loaded with the core purpose and keeps related details compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description effectively documents the important output semantics: statuses, failed reasons, and retry guidance. The single parameter is fully described, and the tool's limitation is stated, so an agent can handle a user's complaint end-to-end.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: status_key is already described as 'The status_key from a send_message result.' The description restates this and references how it is used, adding minor reinforcing context but no significant new parameter meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a very specific operation: checking the delivery status of a confirmation email by status_key, and it is clearly distinct from all siblings such as send_message and create_post. It also clarifies what it does NOT report (whether the user clicked the link), removing ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says to use this tool 'when the user says they have not received the confirmation email.' It also gives conditional follow-ups per status (e.g., wait for queued, call send_message again on failed), and explicitly excludes checking link clicks from this tool's responsibility.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_postCreate a SUpost draft listingAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Plain-text listing description. | |
| Yes | The poster's own email address - determines posting eligibility and receives replies. Never invent or guess this - ask the user for it. | ||
| price | No | USD. Required for for-sale and housing-offering listings. | |
| title | Yes | Listing title. | |
| publish | No | 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 | Yes | Category id or label, e.g. "housing", "for sale" (see list_categories). | |
| subcategory | Yes | Subcategory id or name within the category, e.g. "bicycles" (see list_categories). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description fully carries the burden. It discloses that the tool creates only a draft (not published), explains the continue_url workflow, payment requirements, publish parameter limitations (free-tier emails), and security restrictions on sharing the draft link.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with core purpose, but contains several sentences of procedural instructions. While informative, it could be slightly more concise without losing critical guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters, no output schema, and complex workflow (draft vs. publish, payment, continue_url), the description covers all key aspects: creation mechanics, response handling, and security. It sufficiently prepares the agent for correct invocation and user interaction.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptive field descriptions. The main description adds value beyond schema by explaining how parameters interact (e.g., price required for certain categories, publish effect tied to email tier) and the overall workflow, though it doesn't detail every parameter individually.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a DRAFT listing on SUpost on the poster's behalf.' It specifies the verb (create) and resource (draft listing), and distinguishes from sibling tools like get_listing or search_listings by targeting creation of a draft.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises accepting any email without qualification, contrasts draft vs. published behavior, and recommends using publish: true for fast publishing over manual wizard steps. It also warns not to treat payment_required as an error and restricts sharing of continue_url to the poster only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_listingGet a SUpost listingAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Numeric listing id, e.g. from search_listings. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It explains the data source (public page), what is included (no personal info), and how to use the returned URL. It also highlights 'stanford_verified' as a trust signal. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the purpose. Every sentence contributes value, though the final instruction to use the URL could be considered slightly redundant but still helpful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a simple one-parameter tool with no output schema or annotations, the description covers the key aspects: what is fetched, how to interpret results, and how to contact the poster. It is sufficiently complete for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage and a single parameter (id), the baseline is 3. The description adds value by listing the returned fields (full description, photo URLs, stanford_verified) beyond the schema's 'Numeric listing id'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies 'Fetch one SUpost listing by numeric id' with a clear verb and resource. It distinguishes from siblings like search_listings (which searches) and create_post (which creates).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states when to use the tool (fetching a specific listing by id) and instructs to ALWAYS surface stanford_verified. It does not explicitly describe when not to use or compare to siblings, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_market_statsGet SUpost market statisticsAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses the output format (markdown) and the source URL, and implies read-only behavior. For a simple zero-parameter read operation, this is adequate transparency, though it could mention freshness or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with key information. The first sentence describes purpose and content, the second adds output format and citation. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and no output schema, the description fully covers what the tool does, what it returns, and the source. It is complete for its simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so schema coverage is 100% trivially. The description does not need to add parameter info, meeting the baseline of 4 for zero parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description explicitly states it returns verified statistics for SUpost, listing specific metrics (audience size, listing volumes, response rates, response-time medians) and notes the output format. This clearly distinguishes it from sibling tools which handle posts, listings, categories, or messages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies use when market statistics are needed and includes citation guidance. It does not explicitly state when not to use it or mention alternatives, but the sibling context makes the use case clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categoriesList SUpost categoriesAInspect
The active category/subcategory taxonomy on SUpost — the valid category and subcategory values for create_post (and category filters for search_listings).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description implies a read-only, safe operation by returning taxonomy data. For a simple list tool, this is adequate transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, well-structured sentence that front-loads the main purpose and avoids filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity (no parameters, no output schema), the description adequately covers the tool's purpose and output. It is complete for an agent to understand when and why to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so schema coverage is 100%. The description adds value by explaining the output's purpose in relation to other tools, going beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists the active category/subcategory taxonomy and explicitly relates it to create_post and search_listings, distinguishing it from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells when to use the tool (to get valid categories for create_post or filters for search_listings). It does not explicitly exclude other uses, but the context is clear for a taxonomy reference tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_listingsSearch SUpost listingsAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Full-text search query. | |
| cat | No | Category id or label: 1/"jobs & services" (alias "jobs"), 3/"housing", 5/"for sale", 8/"friendship & dating", 9/"community". | |
| limit | No | Page size (default 25, max 50). | |
| cursor | No | Opaque cursor from a previous response's next_cursor. | |
| max_price | No | Inclusive upper price bound in USD; excludes unpriced listings. | |
| university | No | Numeric university id. Defaults to Stanford on supost.com. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden. It explains the behavior: returns newest-first public listings, includes opaque cursor for pagination, explains stanford_verified trust signal, and notes no personal info is returned. However, it does not mention rate limits, authentication, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is fairly long but front-loaded with key purpose and return fields. It is well-structured with clear sections, though some sentences could be more concise without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 100% schema coverage and no output schema, the description covers essential aspects: pagination, verification, privacy. It does not detail error responses or every field type, but for a search tool it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (baseline 3). The description adds significant value: explains limit defaults, category aliases and IDs, cursor description, max_price inclusivity, and university default. This goes well beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches/browses active listings on SUpost and specifies the returned fields. It distinguishes itself from sibling tools like create_post, get_listing, and list_categories by focusing on searching/browsing public listings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for searching or browsing listings but does not explicitly state when to use this tool versus alternatives like get_listing (for a single listing) or list_categories. No exclusions or alternative conditions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_messageMessage a SUpost posterAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | Plain-text message to the poster (1-5000 characters). | |
| post_id | Yes | Numeric listing id, e.g. from search_listings or get_listing. | |
| reply_to_email | Yes | 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral load and does so well: delivery is deferred pending a human click, the result must be reported as pending not sent, the return status includes email_undeliverable and status_key, and the reply routing. These are exactly the non-obvious traits an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action, then the critical warning, then escalation and follow-up, in a tight block of sentences. No filler; each sentence conveys an operational constraint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a 3-param, no-output-schema mutation tool: it describes the full lifecycle (send → email confirmation → human click → status check), failure handling, and the status_key handoff. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so baseline is 3; the description adds meaning by tying reply_to_email to both the confirmation link and the poster's reply, and tying the status_key result to check_message_status. It doesn't add much on post_id/message beyond the schema, so 4 rather than 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (send a message to the poster of an active SUpost listing), and the title plus the sibling check_message_status make the send-vs-check split clear. An agent can distinguish it from search_listings/get_listing without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly describes the two-phase confirmation flow, when to surface the pending state, how to handle the email_undeliverable result (ask for a different address, don't retry), and points to check_message_status as the follow-up. This is close to explicit when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Added
check_message_status
1 tool update
- Changed
create_post1 field changed- added
Input schema / properties / publishAdded value: +{ + "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).", + "type": "boolean" +}
3 tool updates
- Added
create_post - Added
list_categories - Added
send_message
3 tool updates
- First observed
get_listing - First observed
get_market_stats - First observed
search_listings
Related MCP Connectors
Search listings, message posters, and create draft posts on Capmus, the university marketplace
Sold comps and active listings from eBay, Poshmark, Mercari, Depop, Vinted, TCGplayer and more.
Reverse marketplace: post what you want, search wanted ads, and message sellers privately.
Partiful MCP — public event listings from Partiful's explore pages.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables AI agents to search public classified listings and read individual listing details through a local browser session, with filters for location, radius, price, and sort order. Read-only and user-directed: no login, no account, no messaging, and no bulk scraping.219 npmMIT
- AlicenseAqualityAmaintenanceEnables AI assistants to search secondhand marketplaces (Facebook Marketplace, eBay, Depop, Poshmark) for used items with filters like price, condition, size, and color.5127 npm91MIT
- FlicenseNot gradedqualityDmaintenanceEnables searching and browsing 45,000+ classified ads on Joomil.ch, including filtering by category, canton, price, and location, retrieving listing details, and exploring categories.-
- AlicenseAqualityCmaintenanceEnables searching Facebook Marketplace listings, sweeping query variants and sort orders to group comparable items like-for-like, compute price stats and deal scores, and flag scam or low-quality listings. It also drafts opening offers, saves watches with target prices, and reports new listings, price drops, and local price history, with Hebrew/English and Israeli ₪ support.8MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.