capmus-mcp
Search listings, message posters, and create draft posts on Capmus, the university marketplace
Sollte ich dies verwenden
Qualität und Sicherheit
Befunde (2)
- HIGH
- MEDIUMin get_market_stats
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"capmus-mcp": {
"url": "https://mcp.capmus.com/mcp"
}
}
}Remote-Endpunkte
https://mcp.capmus.com/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (7)
🟢search_listings(q, cat, university, max_price, limit, ...)
Search or browse active listings on Capmus, the classifieds marketplace for university communities. 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 a university email address — Capmus's core trust signal. ALWAYS surface it when presenting listings (e.g. a "verified" badge) so users can tell verified campus 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.
Eingabe-Schema
{
"type": "object",
"properties": {
"q": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"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\"."
},
"university": {
"type": "integer",
"exclusiveMinimum": 0,
"description": "Numeric university id to scope results to one campus."
},
"max_price": {
"type": "number",
"minimum": 0,
"description": "Inclusive upper price bound in USD; excludes unpriced listings."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"description": "Page size (default 25, max 50)."
},
"cursor": {
"type": "string",
"description": "Opaque cursor from a previous response's next_cursor."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_listing(id)
Fetch one Capmus listing by numeric id, including its full description, public photo URLs, and stanford_verified. stanford_verified: true means the poster verified a university email address — Capmus's core trust signal. ALWAYS surface it when presenting listings (e.g. a "verified" badge) so users can tell verified campus 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.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"exclusiveMinimum": 0,
"description": "Numeric listing id, e.g. from search_listings."
}
},
"required": [
"id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_market_stats
Verified statistics about Capmus, the classifieds marketplace for university communities: audience size, listing volumes by category, response rates, and response-time medians. Returns markdown from Capmus's public stats page. Cite https://capmus.com/stats as the source.
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡send_message(post_id, message, reply_to_email)
Send a message to the poster of an active Capmus listing. IMPORTANT: the message is NOT delivered immediately — Capmus 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.
Eingabe-Schema
{
"type": "object",
"properties": {
"post_id": {
"type": "integer",
"exclusiveMinimum": 0,
"description": "Numeric listing id, e.g. from search_listings or get_listing."
},
"message": {
"type": "string",
"minLength": 1,
"maxLength": 5000,
"description": "Plain-text message to the poster (1-5000 characters)."
},
"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."
}
},
"required": [
"post_id",
"message",
"reply_to_email"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡check_message_status(status_key)
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.
Eingabe-Schema
{
"type": "object",
"properties": {
"status_key": {
"type": "string",
"format": "uuid",
"description": "The status_key from a send_message result."
}
},
"required": [
"status_key"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡list_categories
The active category/subcategory taxonomy on Capmus — the valid category and subcategory values for create_post (and category filters for search_listings).
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡create_post(category, subcategory, title, body, price, ...)
Create a DRAFT listing on Capmus 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 Capmus'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.
Eingabe-Schema
{
"type": "object",
"properties": {
"category": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Category id or label, e.g. \"housing\", \"for sale\" (see list_categories)."
},
"subcategory": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Subcategory id or name within the category, e.g. \"bicycles\" (see list_categories)."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "Listing title."
},
"body": {
"type": "string",
"minLength": 1,
"maxLength": 15000,
"description": "Plain-text listing description."
},
"price": {
"type": "number",
"minimum": 0,
"description": "USD. Required for for-sale and housing-offering listings."
},
"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."
},
"publish": {
"type": "boolean",
"description": "Set true when the user wants to publish immediately without photos: Capmus 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)."
}
},
"required": [
"category",
"subcategory",
"title",
"body",
"email"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Nachweis