Capmus MCP
A remote MCP server for Capmus, the university marketplace, allowing AI agents to search active listings, fetch listing details, read verified market statistics, message posters, and create draft listings. It acts as a pure client of the public API with no privileged database access.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://mcp.capmus.com/mcpWhat its tools do
7 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Search active listings by query, category, or price
- Fetch detailed listing information from public pages
- Read verified market statistics and response rates
- Create draft listings and message posters
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- capmus 0.3.0+debafb2
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 7 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
}
}Tools
7 advertised
search_listings — Search Capmus listings
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.
{
"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 to scope results to one campus.",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}get_listing — Get a Capmus listing
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.
{
"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
}get_market_stats — Get Capmus market statistics
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}send_message — Message a Capmus poster
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.
{
"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
}check_message_status — Check a message's confirmation email
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.
{
"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
}list_categories — List Capmus categories
The active category/subcategory taxonomy on Capmus — the valid category and subcategory values for create_post (and category filters for search_listings).
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}create_post — Create a Capmus draft listing
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.
{
"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: 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)."
},
"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
}Prompts
Not advertised
Resources
Not advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-06: 1 of 1 checks answered
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 720 ms
- 95th percentile latency
- 720 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 720 ms · metadata changed · 7 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http capmus-mcp https://mcp.capmus.com/mcpCodex
codex mcp add capmus-mcp --url https://mcp.capmus.com/mcpCursor
{
"mcpServers": {
"capmus-mcp": {
"url": "https://mcp.capmus.com/mcp"
}
}
}Cline
{
"mcpServers": {
"capmus-mcp": {
"type": "streamableHttp",
"url": "https://mcp.capmus.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"capmus-mcp": {
"type": "http",
"url": "https://mcp.capmus.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http capmus-mcp https://mcp.capmus.com/mcpClaude Desktop
https://mcp.capmus.com/mcpWindsurf
{
"mcpServers": {
"capmus-mcp": {
"serverUrl": "https://mcp.capmus.com/mcp"
}
}
}Let your agent find its tools
Find servers like Capmus MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.