Search / io.github.pipeworx-io/inside-airbnb
Inside Airbnb
R0· no sign-ininside-airbnb -- short-term rental listings by city (fleet #2973).
v0.1.0 · active · repository · website · descriptor JSON · versions
Search / io.github.pipeworx-io/inside-airbnb
R0· no sign-ininside-airbnb -- short-term rental listings by city (fleet #2973).
v0.1.0 · active · repository · website · descriptor JSON · versions
{
"mcpServers": {
"inside-airbnb": {
"type": "http",
"url": "https://gateway.pipeworx.io/inside-airbnb/mcp"
}
}
}claude mcp add --transport http inside-airbnb https://gateway.pipeworx.io/inside-airbnb/mcp[mcp_servers.inside-airbnb]
url = "https://gateway.pipeworx.io/inside-airbnb/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"inside-airbnb": {
"type": "remote",
"url": "https://gateway.pipeworx.io/inside-airbnb/mcp",
"enabled": true
}
}
}{
"mcpServers": {
"inside-airbnb": {
"type": "http",
"url": "https://gateway.pipeworx.io/inside-airbnb/mcp"
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=inside-airbnb&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vZ2F0ZXdheS5waXBld29yeC5pby9pbnNpZGUtYWlyYm5iL21jcCJ9"
}{
"servers": {
"inside-airbnb": {
"type": "http",
"url": "https://gateway.pipeworx.io/inside-airbnb/mcp"
}
}
}{
"mcpServers": {
"inside-airbnb": {
"httpUrl": "https://gateway.pipeworx.io/inside-airbnb/mcp"
}
}
}extensions:
"inside-airbnb":
enabled: true
name: "inside-airbnb"
type: streamable_http
uri: "https://gateway.pipeworx.io/inside-airbnb/mcp"
timeout: 300
Not scored: fewer than three checks apply, usually because no remote answered a credential-free probe or the server is a local package.
protocol.modernnewest supported version is 2025-03-26; 2026-07-28 not supported, older versions are deprecated until 2027-07-28protocol.statelessonly applies to 2026-07-28 serversprotocol.transportstreamable HTTPprotocol.list_ttlonly applies to 2026-07-28 serversauth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptions, tools.description_length, tools.schemas, tools.annotations, tools.directory_hints, tools.token_cost, tools.api_dumptool list unknown (behind auth, not probed, or empty)stability.changes, stability.rug_pulltool list unknowndeps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI packageresolution_auditremovedExtract the settlement clause of a single Polymarket or Kalshi market: who publishes the settling number (source), the clock time + timezone it is taken at, the precision of the computation (e.g. "1-minute candle close" vs "60-second trailing average" vs "election outcome"), the evidence standard (official_source | consensus_reporting | any_credible_report | unspecified), and void_handling (cancellation/postponement settlement — reused verbatim from bet_research's cancellation_rule detector, not re-derived). Parses Polymarket's `description` field (fetched via polymarket_market) or Kalshi's `rules_primary` + `rules_secondary` fields (fetched via kalshi_market) with regex + a small vocabulary — no LLM pass, so an unusual clause reports confidence:"low" rather than a guess. Pass `market` as a Polymarket slug/URL or a Kalshi market ticker (e.g. "KXBTCD-26SEP1317-T66999.99"); a Kalshi EVENT ticker (e.g. "KXBTCD-26SEP1317") also works — it picks one representative market under that event, since the settlement mechanism is normally shared across all strikes/legs in one event. Use this before treating a polymarket_kalshi_spread row as a real arbitrage: two ladders that look alike can settle on different sources, at different times, with different precision — this tool is how you check. Pair with resolution_diff to compare two markets directly. KNOWN GAP: idiosyncratic phrasing that doesn't match the vocabulary returns confidence:"low" and evidence_standard:"unspecified" rather than an LLM-guessed answer.
kalshi_weather_edgeremovedPrices Kalshi daily high-temperature markets against the NWS forecast for the market's OWN settlement station, and measures whether that forecast actually beats the market. Two modes. LIVE (default): returns the full strike ladder for one city and settlement date with market_prob (mid), forecast_prob, and edge_pp per strike, plus the settlement clause verbatim. BACKTEST (`backtest_days: N`): scores an archived gridded forecast against the market on settled days and returns brier_market vs brier_forecast with a plain-English `verdict`, so the edge is MEASURED rather than asserted. READ THE WARNINGS — they are not boilerplate. (1) These markets DO NOT settle on the NWS. They settle on The Weather Company (weather.com) at a Kalshi station code such as CLINYC, which the response quotes verbatim; so part of every edge_pp is NWS-vs-Weather-Company disagreement about the same day at the same station, which is not mispricing and not tradeable. `settlement_vs_forecast_basis_f` from backtest mode is that part as a number. (2) The station is DERIVED from the settlement clause, never from the city name: Chicago settles at MIDWAY and New York at CENTRAL PARK, so a city-centre forecast would misprice a whole ladder. A station that cannot be resolved yields rows with no forecast and a reason, never a guessed coordinate. (3) forecast_prob assumes a normal distribution around the NWS high whose width is ASSUMED, not fitted (stated in `distribution_assumption`) — run backtest mode to see whether it is calibrated. (4) edge_pp is gross: no Kalshi fees, no bid-ask. MEASURED RESULT, AND IT IS NOT THE FLATTERING ONE: on the first backtest (KXHIGHNY, 13 settled days to 2026-09-11, 58 market observations) the MARKET beat the forecast — Brier 0.1008 for the market against 0.1594 for the archived gridded forecast, lower being better. So on that sample there is NO forecast edge to sell, and a large edge_pp is more likely to be the model disagreeing with a better-informed market than an opportunity. The measured settlement-vs-forecast basis was 1.7F mean absolute over 8 pinnable days, slightly warm-biased, which is a big share of a typical edge_pp on a 2-degree bracket. Re-run backtest_days before believing any edge; if a later sample reverses this, the numbers say so. NWS is US-only, so the ~30 international Kalshi weather series (London, Paris, Tokyo) return market prices with forecast_unavailable rather than a forecast. Precipitation series are listed but not yet priced. Cities: nyc, chicago, los angeles, miami, austin, houston, denver, philadelphia — or pass `series_ticker` for any other (e.g. "KXHIGHTBOS").
search_withinremovedSemantic search INSIDE a fetched record. Pass the text you already pulled (e.g. a SEC 10-K body, an article, a long tool result) plus a natural-language query; get back the top-N passages with character offsets and similarity scores. Use when the record is too big to cram into the prompt — search_within saves context, returns only the passages that matter, and every passage carries an offset so the agent can verify a verbatim quote. Pairs with ask_pipeworx_grounded: fetch with the gateway, ground over the relevant passages instead of the whole document. BGE-base-en embeddings + cosine over 500-char overlapping windows; cap is 200K chars (longer inputs are truncated and flagged).
unsubscriberemovedCancel a subscription by id. Ownership is enforced — you can only cancel your own subscriptions. The row is deactivated (not deleted) so its historical events stay available via recent_alerts.
polymarket_edgesremovedScan top Polymarket markets and return opportunities where Pipeworx data disagrees with market price. Built for "what should I bet on today" — agents discover opportunities without paging hundreds of markets. FIVE MODEL FAMILIES grouped into three response segments under by_segment: (1) MODEL_DRIVEN — crypto_price (lognormal barrier from 90d FRED log-returns) and news_momentum (GDELT 7d/21d article-volume ratio, soft signal w/ halved Kelly). (2) STRUCTURAL_ARBITRAGE — partition_overround on mutually-exclusive events; per-leg favorite-longshot bias correction with per-sport α (tennis 1.02, soccer 1.10, MMA 1.15, default 1.0); placeholder-slug filter drops will-person-X / will-team-Y / will-manager-Z / will-someone-else- backstops; partitions with >20% placeholder fraction skipped entirely. (3) CONCENTRATED_LONGSHOT — basket trade when one leg ≥75% AND ≥2 longshots ≤8% AND portfolio return ≥25:1; rare-by-design (gates relaxed Run 8 from prior 85%/5%/50:1). EVERY OPPORTUNITY carries edge_pp_net (net of slippage AND Polymarket's own taker fee — fees_pp_applied itemises the fee component; see fees.ts for the published per-category schedule), kelly_fraction + kelly_fraction_half (capped at 0.25), market.liquidity, market.spread_pp, market.volume, plus a 24h-move warning ("Market moved X.Xpp in 24h") when the recent move alone exceeds the edge — your edge may already be in the price. TRADEABLE-EDGE KNOBS: min_liquidity / max_spread_pp drop opportunities where edge isn't realizable; min_partition_leg_kelly filters partitions by best per-leg Kelly. RESPONSE TOP-LEVEL: by_segment{model_driven,structural_arbitrage,concentrated_longshot}, fed_candidates/fed_note (Fed bets surface here, excluded from ranking — 1m-T vs EFFR signal is unreliable at meeting-month horizons without paid OIS/SOFR-futures data), and _diagnostics{concentrated_longshot:{...funnel counters},category_counts,filter_skips} so callers can see WHY a segment is empty (top-N stale, all candidates failed gates, knob dropped them). Cached 1h at the KV level keyed on all knobs.
ai_visibility_checkremovedProbe one or more LLMs for what they know about a business / brand / product / topic and score visibility (0-100) per model. Default model is Workers AI Llama-3.3-70b (free); pass `_apiKey` to also probe Anthropic (BYO key — you pay Anthropic directly for those calls). Returns per-model {score, confidence, signals, raw_response} + a combined view. Useful for AI-marketing audits, pre-launch brand checks, competitive monitoring.
str_listingsremovedListing-level short-term rental rows for one city, from Inside Airbnb: listing id, public listing URL, listing title, neighbourhood, room type, nightly price (in that city's own local currency -- see the response's `currency` field, never converted; min_price/max_price filter in that same currency), minimum nights, review counts, last review date, availability_365, and the host's total listing count (a bare number -- no host name, no host id, no host profile link; see the pack's "Personal data" note). Pass city plus any combination of neighbourhood, room_type ("Entire home/apt", "Private room", "Shared room", "Hotel room", or a loose match like "apartment"), min_price, max_price to narrow. Rows beyond `limit` are reported via truncated/total_matching rather than silently dropped -- narrow the filters or page with limit/offset to see the rest. An uncovered city is refused by name, listing every covered city.
str_city_summaryremovedCity-wide short-term rental summary for one city, from Inside Airbnb: total listings, overall median nightly price (in that city's own local currency -- see the `currency` field, e.g. CZK for Prague, never converted), a breakdown by room type (entire home/apt, private room, shared room, hotel room -- each with its own count and median price), and the top neighbourhoods by listing count (each with its own listing count and median price). Pass a city name (e.g. "Paris", "NYC", "San Francisco") or its slug (e.g. "new-york-city"). Returns data_as_of = that city's own Inside Airbnb scrape date. An uncovered city is refused by name, listing every covered city rather than returning an empty result -- call list_str_cities to browse the full set.
list_str_citiesremovedEvery city this pack has short-term rental (Airbnb) data for, from Inside Airbnb. Returns, per city: display name, country, currency the price fields are IN (prices are never converted -- each city's own local currency, e.g. CZK for Prague, not USD), how many listings are loaded, the overall median nightly price, and that city's OWN scrape date (data_as_of) -- coverage dates differ city to city because Inside Airbnb scrapes each one independently. Call this first if unsure whether a city is covered; str_city_summary and str_listings refuse an uncovered city by naming the covered set, but this is the smaller way to check.
recallremovedRetrieve a value previously saved via remember, or list all saved keys (omit the key argument). Use to look up context the agent stored earlier — the user's target ticker, an address, prior research notes — without re-deriving it from scratch. Scoped to your identifier (anonymous IP, BYO key hash, or account ID). Pair with remember to save, forget to delete.
Showing the latest 10. Full history: list_changes · trend: quality JSON.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+repository +namespace-matches-repo +website +reachable +uptime-100% +updated-7d-ago
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
| remote | auth | reachable | uptime 30d | p50 | protocol | last ok |
|---|---|---|---|---|---|---|
https://gateway.pipeworx.io/inside-airbnb/mcp streamable-http | none | yes | 100% | 32 ms | 2025-03-26 | 2026-10-20 |
No tools observed. Tools appear once a credential-free probe can list them.
Schemas: list_tools.
And 1,855 more from this publisher.
{
"name": "io.github.pipeworx-io/inside-airbnb",
"title": "Inside Airbnb",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"remotes": [
{
"url": "https://gateway.pipeworx.io/inside-airbnb/mcp",
"type": "streamable-http"
}
],
"version": "0.1.0",
"repository": {
"url": "https://github.com/pipeworx-io/mcp-inside-airbnb",
"source": "github"
},
"websiteUrl": "https://pipeworx.io/packs/inside-airbnb",
"description": "inside-airbnb -- short-term rental listings by city (fleet #2973)."
}