Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Moonshot Lab (demo)

REMOTE · MOONSHOTLAB1.COM

Agent car inventory index. Synthetic demo data, not real inventory, not an offer.

Available components

+6 this week 64 Trust /100

Last scanned (7 hours ago)

Scores higher than 47% of remote servers

Reachable. Last reached 25 Oct 2026.

Category E-commerce

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security57
Transport & Reachability100
Schema Quality & AI Usability56
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 7399 tokens (~435/item across 17 items; 17 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management23
  • Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 17 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 18 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 24 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

  • 23 Oct 26 0
    • Tool “prepare_dealer_handoff” rewrote its description, which is the text the model reads security
    • “prepare_dealer_handoff” added an optional parameter “add_on_interest” cosmetic
    • “prepare_dealer_handoff” added an optional parameter “buyer_address” cosmetic
    • “prepare_dealer_handoff” added an optional parameter “financing_details” cosmetic
    • “prepare_dealer_handoff” added an optional parameter “trade_details” cosmetic
    • “prepare_dealer_handoff” reworded the description of “shopper_contact” cosmetic
  • 22 Oct 26 +1
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “compare_payment_scenarios” rewrote its description, which is the text the model reads security
    • Tool “get_payment_estimate” rewrote its description, which is the text the model reads security
    • Tool “get_price_breakdown” rewrote its description, which is the text the model reads security
    • Tool “list_dealers” rewrote its description, which is the text the model reads security
    • Tool “search_inventory” rewrote its description, which is the text the model reads security
    • Schema quality: 368 → 410 ▼ functional
    • Schema quality: good → excellent functional
    • New tool “cancel_search” functional
    • New tool “get_new_matches” functional
    • New tool “prepare_dealer_handoff” functional
    • New tool “register_agent” functional
    • New tool “save_search” functional
    • “search_inventory” added an optional parameter “best_value_needs” cosmetic
    • “search_inventory” added an optional parameter “dealer_segment” cosmetic
    • “search_inventory” added an optional parameter “financeable_only” cosmetic
    • “search_inventory” added an optional parameter “group_id” cosmetic
    • “search_inventory” added an optional parameter “max_out_the_door” cosmetic
    • “search_inventory” added an optional parameter “min_out_the_door” cosmetic
    • “search_inventory” added an optional parameter “region_id” cosmetic
    • “search_inventory” added an optional parameter “seating_min” cosmetic
    • “search_inventory” added an optional parameter “sliding_doors” cosmetic
    • “search_inventory” added an optional parameter “store_id” cosmetic
    • “search_inventory” added an optional parameter “third_row” cosmetic
    • “search_inventory” added an optional parameter “third_row_type” cosmetic
    • “compare_payment_scenarios” reworded the description of “buyer_zip” cosmetic
    • “estimate_out_the_door” reworded the description of “buyer_state” cosmetic
    • “estimate_out_the_door” reworded the description of “buyer_zip” cosmetic
    • “get_payment_estimate” reworded the description of “buyer_zip” cosmetic
    • “search_inventory” reworded the description of “buyer_zip” cosmetic
    • “search_inventory” reworded the description of “max_monthly_payment” cosmetic
    • “search_inventory” reworded the description of “payment_max” cosmetic
    • “search_inventory” reworded the description of “sort” cosmetic
  • 21 Oct 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “get_payment_estimate” rewrote its description, which is the text the model reads security
    • Tool “search_inventory” rewrote its description, which is the text the model reads security
    • Schema quality: 313 → 368 ▼ functional
    • New tool “compare_payment_scenarios” functional
    • “search_inventory” added an optional parameter “eligible_incentive_labels” cosmetic
    • “search_inventory” added an optional parameter “include_near_misses” cosmetic
    • “search_inventory” added an optional parameter “max_monthly_payment” cosmetic
    • “search_inventory” added an optional parameter “scenarios” cosmetic
    • “search_inventory” reworded the description of “buyer_zip” cosmetic
    • “search_inventory” reworded the description of “credit_tier” cosmetic
  • 20 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

  • 19 Oct 26 +3
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “estimate_out_the_door” rewrote its description, which is the text the model reads security
    • Tool “get_dealer” rewrote its description, which is the text the model reads security
    • Tool “get_listing” rewrote its description, which is the text the model reads security
    • Tool “get_media” rewrote its description, which is the text the model reads security
    • Tool “get_ontology” rewrote its description, which is the text the model reads security
    • Tool “get_price_breakdown” rewrote its description, which is the text the model reads security
    • Tool “get_trade_in_scenarios” rewrote its description, which is the text the model reads security
    • Tool “search_inventory” rewrote its description, which is the text the model reads security
    • Schema quality: pass → fail ▼ functional
    • Tool coverage: 0% → 100% ▲ functional
    • Stability: unverified → 0.03 ▲ functional
    • Schema quality: fair → good functional
    • New tool “get_payment_estimate” functional
    • New tool “list_searchable_fields” functional
    • “search_inventory” added an optional parameter “apr” cosmetic
    • “search_inventory” added an optional parameter “buyer_city” cosmetic
    • “search_inventory” added an optional parameter “buyer_county” cosmetic
    • “search_inventory” added an optional parameter “buyer_state” cosmetic
    • “search_inventory” added an optional parameter “buyer_zip” cosmetic
    • “search_inventory” added an optional parameter “credit_tier” cosmetic
    • “search_inventory” added an optional parameter “down_payment” cosmetic
    • “search_inventory” added an optional parameter “exterior_color” cosmetic
    • “search_inventory” added an optional parameter “filters” cosmetic
    • “search_inventory” added an optional parameter “include_payment” cosmetic
    • “search_inventory” added an optional parameter “payment_max” cosmetic
    • “search_inventory” added an optional parameter “payment_min” cosmetic
    • “search_inventory” added an optional parameter “payoff” cosmetic
    • “search_inventory” added an optional parameter “term_months” cosmetic
    • “search_inventory” added an optional parameter “trade_equity” cosmetic
    • “search_inventory” added an optional parameter “trade_value” cosmetic
    • “get_media” reworded the description of “listing_id” cosmetic
    • “estimate_out_the_door” reworded the description of “buyer_city” cosmetic
    • “estimate_out_the_door” reworded the description of “buyer_county” cosmetic
    • “estimate_out_the_door” reworded the description of “buyer_state” cosmetic
    • “estimate_out_the_door” reworded the description of “buyer_zip” cosmetic
    • “estimate_out_the_door” reworded the description of “eligible_incentive_labels” cosmetic
    • “estimate_out_the_door” reworded the description of “financed” cosmetic
    • “estimate_out_the_door” reworded the description of “lender_name” cosmetic
    • “estimate_out_the_door” reworded the description of “listing_id” cosmetic
    • “estimate_out_the_door” reworded the description of “payoff” cosmetic
    • “estimate_out_the_door” reworded the description of “plate_transfer” cosmetic
    • “estimate_out_the_door” reworded the description of “registration_state” cosmetic
    • “estimate_out_the_door” reworded the description of “trade_value” cosmetic
    • “estimate_out_the_door” reworded the description of “vehicle_weight_lbs” cosmetic
    • “get_dealer” reworded the description of “dealer_key” cosmetic
    • “get_dealer” reworded the description of “inventory_limit” cosmetic
    • “get_dealer” reworded the description of “inventory_offset” cosmetic
    • “get_listing” reworded the description of “listing_id” cosmetic
    • “get_media” reworded the description of “limit” cosmetic
    • “get_media” reworded the description of “types” cosmetic
    • “get_price_breakdown” reworded the description of “listing_id” cosmetic
    • “search_inventory” reworded the description of “body_style” cosmetic
    • “search_inventory” reworded the description of “city” cosmetic
    • “search_inventory” reworded the description of “condition” cosmetic
    • “search_inventory” reworded the description of “dealer_key” cosmetic
    • “search_inventory” reworded the description of “drivetrain” cosmetic
    • “search_inventory” reworded the description of “fuel_type” cosmetic
    • “search_inventory” reworded the description of “limit” cosmetic
    • “search_inventory” reworded the description of “make” cosmetic
    • “search_inventory” reworded the description of “max_mileage” cosmetic
    • “search_inventory” reworded the description of “model” cosmetic
    • “search_inventory” reworded the description of “offset” cosmetic
    • “search_inventory” reworded the description of “price_max” cosmetic
    • “search_inventory” reworded the description of “price_min” cosmetic
    • “search_inventory” reworded the description of “radius_miles” cosmetic
    • “search_inventory” reworded the description of “sort” cosmetic
    • “search_inventory” reworded the description of “state” cosmetic
    • “search_inventory” reworded the description of “trim” cosmetic
    • “search_inventory” reworded the description of “year_max” cosmetic
    • “search_inventory” reworded the description of “year_min” cosmetic
    • “search_inventory” reworded the description of “zip” cosmetic
  • 18 Oct 26 58

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 25 Oct 2026 · Probed https://moonshotlab1.com/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=moonshotlab1.com CN=YE2,O=Let's Encrypt,C=US 18 Oct 2026 16 Jan 2027 ECDSA 256 ECDSA-SHA384 6d5c1a10cddae5e3bbb75dadf24addc4765
SANs: moonshotlab1.com
CN=YE2,O=Let's Encrypt,C=US (CA) CN=Root YE,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 ECDSA 384 ECDSA-SHA384 4df3b15dd6c0784c507cd37b58e6f115
CN=Root YE,O=ISRG,C=US (CA) CN=ISRG Root X2,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 ECDSA-SHA384 872165fc34b6e5fba8add5b3705fb53a
CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 SHA256-RSA 6c8f1dc727c7117f7baf853ac980f9cd

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of moonshotlab1.com. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
com. present 19718 13 Verified
moonshotlab1.com. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
x-content-type-options nosniff
x-frame-options DENY
referrer-policy strict-origin-when-cross-origin

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://moonshotlab1.com/mcp Verified 200
http (plaintext) http://moonshotlab1.com/mcp HTTPS enforced 301 https://moonshotlab1.com/mcp
MCP tools · 17 exposed · ~6,723 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
cancel_search ~36

DEMO. Cancel a saved search. Any shopper email stored for it is deleted.

NameTypeReqDescription
search_id–yessearch_id from save_search.

No output schema declared.

No examples provided.

compare_payment_scenarios ~516

Use this to compare several financing what-ifs for ONE listing side by side in one call (for example cash down, term, credit tier or APR, trade-in, incentives). Each scenario reruns the itemized out-the-door estimate and returns estimated_out_the_door, amount_financed_estimate, apr_percent and apr_source, term_months, estimated_monthly_payment (rounded to $5) with the unrounded value and an outward-rounded range, total_interest_estimate, total_cost_including_trade_equity (PRIMARY total: cash down plus all payments plus net trade equity given up), cash_outlay_excluding_trade_equity (cash down plus payments only; total_cost_estimate is its deprecated alias) and financing_eligibility with flags (demo rules), plus lowest_monthly, lowest_total_cost (decided by total_cost_including_trade_equity) and lowest_cash_outlay_excluding_trade_equity. Those lowest_* keys are UNFILTERED math winners. Present recommended_scenario, lowest_monthly_eligible or lowest_total_cost_eligible instead: they skip scenarios the demo financing rules flag, so an ineligible scenario is never the recommendation. A scenario {"name":"cash","cash":true} prices paying cash (no loan, no interest); cash_purchase always gives the cash amount due. Each scenario has trade_risk (negative_equity_rolled_in, loan_to_value_pct and warnings, for example LTV over 110%) and credit_tier_source. Prefer this over repeated get_payment_estimate calls. Up to 6 scenarios. For a single scenario use get_payment_estimate. Estimate, not an offer; dealer sets price, lender sets rate. Leases are not modeled.

NameTypeReqDescription
buyer_city––Buyer's city.
buyer_county––Buyer's county without 'County'.
buyer_state––Buyer's two-letter state for tax and fees. Default: the selling store's state.
buyer_zip––Buyer's five-digit ZIP. Alone it resolves buyer state, county and city (echoed in tax_location.resolution with the source).
listing_idstringyesdealer_key:VIN from search_inventory.
scenariosarrayyes1 to 6 what-if scenarios, e.g. [{"name":"0 down"},{"name":"3k down 72","down_payment":3000,"term_months":72}]. Omitted fields default to $0 down, 60 months, good credit.

No output schema declared.

No examples provided.

estimate_out_the_door ~559

Use this for the buyer's TOTAL price of ONE listing: an itemized out-the-door DEMO ESTIMATE for the buyer's state, county and city, built with real public tax and fee rules for the 8 covered states. Lines include the price, dealer fees, eligible incentives, state and local sales tax, title and registration fees, and a trade-in block (allowance, payoff, equity, tax credit). Every line has a source and confidence; unknowns become ranges. Read estimated_out_the_door with estimate_range and confidence. With a trade-in, estimated_out_the_door is the balance due after the trade (negative equity added); deal.vehicle_out_the_door_before_trade is the car alone. Use get_price_breakdown instead for only the dealer's listed price and fees, and get_payment_estimate to turn this total into a monthly finance payment (this tool returns payments: null). Read warnings, for example when the shopper's state differs from the store's state. Not an offer, not a quote, not penny-accurate. Inputs are not stored.

NameTypeReqDescription
buyer_city––Shopper's city, e.g. Chicago. Some city taxes depend on it; it can also imply the county.
buyer_county––Shopper's county name without the word County, e.g. Harris, Cook, Orange. Improves local tax lines.
buyer_state––Shopper's two-letter state; sets the tax and fee state. Defaults to the selling store's state, or the state of buyer_zip. States outside the 8 covered return a low-confidence estimate without tax and…
buyer_zip––Buyer's five-digit ZIP. Alone it resolves buyer state, county and city (echoed in tax_location.resolution with the source).
eligible_incentive_labels––label_raw values of conditional incentives from get_price_breakdown that the shopper qualifies for (case-insensitive).
financed––True if the purchase will be financed, false for cash. Some fees and incentives depend on it; if omitted they are flagged as uncertain.
lender_name––Lender holding the trade-in loan (optional, not stored).
listing_idstringyesdealer_key:VIN from search_inventory.
payoff––Loan payoff in USD still owed on the trade-in.
plate_transferboolean–True to transfer existing plates where the state allows it.
registration_state––State where the car will be registered, if different from buyer_state.
trade_value––Trade-in allowance in USD offered or expected for the shopper's car.
vehicle_weight_lbs––Vehicle weight, used by weight-based registration fees.

No output schema declared.

No examples provided.

get_dealer ~106

Fictional dealer profile: registry entity, stores (selling locations) with fictional addresses and 555 phone numbers, group, state rules and a page of inventory. Not a real business; do not tell anyone to call or visit.

NameTypeReqDescription
dealer_keystringyesDealer key from list_dealers or a search result, e.g. bluebonnetridge.
inventory_limitinteger–Inventory rows to include.
inventory_offsetinteger–Paging offset for inventory.

No output schema declared.

No examples provided.

get_listing ~122

Full synthetic listing record with per-value provenance (method 'synthetic'). listing_id is dealer_key:VIN (as returned by search_inventory) or the urn. The vehicle-to-store link is in listing.selling_location (link_status, selling_location_id, candidates, flags such as group_site_lists_sister_store or multi_store_unstated); the dealer block is the advertising dealer. For price and fees in a compact form, use get_price_breakdown.

NameTypeReqDescription
listing_idstringyesdealer_key:VIN from search_inventory, or the listing urn.

No output schema declared.

No examples provided.

get_media ~107

Media block for a listing: self-generated SVG placeholder images labeled DEMO (photo, video poster, spin), with rights notes. They are not photos of a real car. No video or 360 viewer exists in the demo.

NameTypeReqDescription
limitinteger–Maximum items, 0 to 100.
listing_idstringyesdealer_key:VIN from search_inventory.
types––Filter by item type: photo, video (poster image only) or spin_exterior.

No output schema declared.

No examples provided.

get_new_matches ~66

DEMO. New cars that started matching a saved search after it was saved (or after `since`).

NameTypeReqDescription
search_id–yessearch_id from save_search.
since––Optional ISO 8601 time; only matches after it (use checked_at from your last call).

No output schema declared.

No examples provided.

get_ontology ~55

Schema links, schema version, covered states, condition values, search sorts and the value-wrapper format ({v, m, c, src}). For the list of filterable fields and allowed values, use list_searchable_fields.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_payment_estimate ~714

Use this to answer 'what would my monthly payment be' for ONE listing. It runs the same itemized out-the-door calculation as estimate_out_the_door (always treated as financed) and turns it into a DEMO monthly finance payment: out-the-door total minus down payment and trade equity, amortized at the APR (or a demo APR by credit_tier) over term_months. Returns finance.estimated_monthly_payment rounded to $5 with monthly_payment_unrounded, monthly_payment_range (rounded outward, so it always contains the unrounded value), financing_eligibility (demo lender rules: minimum amount financed, max term by vehicle age and mileage, with flags), amount_financed_estimate, total_of_payments, finance_charge and every assumption, plus the out-the-door figure it used, a one-line assumptions_summary and any dealer-advertised payment shown separately (not comparable unless the terms match). Totals: total_cost_including_trade_equity (PRIMARY: cash down plus payments plus net trade equity given up) and cash_outlay_excluding_trade_equity (cash down plus payments); total_cost_estimate is a deprecated alias of the latter, kept for one version. For ONE set of terms only: to compare two or more down, term, trade or credit options, call compare_payment_scenarios once instead of calling this tool repeatedly. Use get_price_breakdown instead for the dealer's listed price and fees only, and estimate_out_the_door for the full itemized total without a payment. To find cars by payment across many listings, use search_inventory with max_monthly_payment (canonical; payment_max is a deprecated alias). Estimate, not an offer; dealer sets price, lender sets rate. Not penny-accurate. Leases are not modeled.

NameTypeReqDescription
apr––APR percent, 0 to 36. If omitted, a demo APR is picked by credit_tier.
buyer_city––Buyer's city, for local tax lines.
buyer_county––Buyer's county without 'County', for local tax lines.
buyer_state––Buyer's two-letter state for tax and fees. Default: the selling store's state, or the state of buyer_zip.
buyer_zip––Buyer's five-digit ZIP. Alone it resolves buyer state, county and city (echoed in tax_location.resolution with the source).
credit_tier––excellent, good (default), fair or poor. Picks the demo APR when apr is omitted (used and cpo rates are higher than new).
down_payment––Cash down in USD, subtracted from the out-the-door total. Default 0.
eligible_incentive_labels––label_raw values of conditional incentives from get_price_breakdown that the buyer qualifies for.
listing_idstringyesdealer_key:VIN from search_inventory.
payoff––Loan payoff owed on the trade-in, USD (negative equity is added to the amount financed).
term_months––Loan term in months, 12 to 96. Default 60.
trade_equity––Net trade equity in USD when allowance and payoff are unknown (negative if upside down). Subtracted after tax, so no trade-in tax credit is applied.
trade_value––Trade-in allowance in USD. Passed to the out-the-door step, so it gets the state's trade-in tax credit where allowed.

No output schema declared.

No examples provided.

get_price_breakdown ~265

Use this to see what the dealer LISTS for ONE listing, as published: headline price, MSRP (new cars), price_components, dealer fees (doc fee and others) and fee bundles (parts marked part_of_bundle, not double counted), flags such as whether the advertised price already includes fees, options, incentives split into all_buyer (already in the price) and conditional (not in the price), and the state's public tax and fee RULES with data-flag checks. It takes no buyer inputs and computes no tax amounts or total. Use estimate_out_the_door next for the buyer's total with tax, title, registration and fees, and get_payment_estimate for a monthly payment. Pass conditional incentive label_raw values to those tools as eligible_incentive_labels only if the shopper qualifies. A dealer-advertised monthly payment, when present, is a price_components item of type payment_quote: dealer ad text, not a calculation. Each price_component has a plain label, source_text and method_text; fees and incentives carry tax_treatment (taxable or reduces_taxable_amount, whether it is inside the advertised price, and why).

NameTypeReqDescription
listing_idstringyesdealer_key:VIN from search_inventory.

No output schema declared.

No examples provided.

get_trade_in_scenarios ~43

Ready-made demo trade-in scenarios (one per state) with trade_value and payoff to pass to estimate_out_the_door or get_payment_estimate.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_dealers ~80

All 20 fictional demo dealers with group and store counts (each dealer lists its stores with group_id, region_id and store_id), the dealer hierarchy (Group, then Region, then Store), the 4 fictional dealer groups and a coverage summary: which metros have demo stores, with dealer, store and new/used listing counts per metro.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_searchable_fields ~186

Every filterable ontology field (vehicle, listing, store, dealer, price, fee, incentive, media, payment) with its type, range or allowed values, shortcut names, the operators (eq, any_of, contains, range, bool, exists, negate) and example filters for search_inventory. The full compact list is about 30 KB, so narrow it with prefix or query.

NameTypeReqDescription
detailstring–compact (default): type, range or up to 12 values. full: up to 40 allowed values, examples and counts; use it with prefix or query.
prefix––Only fields starting with this, e.g. canonical, price_summary, incentives, store, dealer_profile, media_block, derived, payment.
query––Only fields whose name or description contains this text, e.g. fee, color, payment.

No output schema declared.

No examples provided.

prepare_dealer_handoff ~962

Use this when the shopper has picked a car and a deal structure and wants to take it to the dealer. Builds a structured dealer handoff package for ONE configured deal: vehicle and VIN, the full itemized out-the-door estimate (with excluded items such as optional add-ons), the chosen financing scenario with demo financing eligibility, trade and negative-equity details (loan-to-value), all warnings, the assistant name and session reference, a timestamp (UTC and America/Chicago) and an estimate-not-offer disclaimer. Returns the package as JSON plus a ready-to-send email body (email.subject, email.text, email.html) with no recipient filled in. THIS TOOL SENDS NOTHING and contacts no one: delivery.status is not_sent, and delivery happens later, with the shopper's consent, through the dealer's chosen channel (email, desking or F&I). No dealer email is invented; dealer.handoff_contact is null until the dealer provides one. On synthetic data the package is labeled DEMO. Before calling, ask the shopper for a phone number or email for the dealer (with their OK); the call fails without a phone, email, or a name plus preferred_contact. The deal (date, shopper name and contact, car, payment, status) is saved to the store's dealer dashboard, where only that store, its region and group can see the contact info and address. Optional extras the dealer will use: trade_details (VIN, miles, plate, color, who the loan is with and how much), buyer_address (with county, for tax and registration), financing_details (deposit, cash down and rebates as separate lines, and any lender pre-approval the shopper already has) and add_on_interest (yes, no or unsure for service contract, GAP, maintenance, other; never priced). The email has a deal sheet in buyer's order line order including the store's dealer fees. NEVER ask the shopper for a Social Security number (or any part of one), date of birth or income; the tool rejects them. Leases, add-on pricing and payment dates are left to the dealer.

NameTypeReqDescription
add_on_interest––Optional: is the shopper interested in service_contract, gap, maintenance, other (yes, no or unsure)? No prices; the dealer covers these.
assistant––Optional assistant reference: name, session_ref, contact.
buyer_address––Optional shopper address (street, city, state, zip, county), with their OK. Sets tax and registration; visible only to the deal's store, region and group.
buyer_city––Buyer's city.
buyer_county––Buyer's county without 'County'.
buyer_state––Buyer's two-letter state.
buyer_zip––Buyer's five-digit ZIP; alone it resolves state, county and city.
eligible_incentive_labels––Conditional incentive label_raw values the shopper qualifies for.
financing_details––Optional separate deposit, cash_down and rebates (they add up to the down payment), plus pre_approval (has_pre_approval, lender_name, approved_amount, rate_percent; the rate is used for the payment u…
listing_id––dealer_key:VIN from search_inventory. Either this or vin is required.
payoff––Loan payoff owed on the trade-in, USD.
scenario––The financing scenario the shopper chose, same shape as one compare_payment_scenarios scenario (down_payment, term_months, credit_tier or apr, trade fields, or cash=true). Default: $0 down, 60 months…
shopper_contact––REQUIRED. Ask the shopper how the dealer should reach them, and share only with their OK: name, phone and/or email, preferred_contact (call, text or email), notes. Needs a phone or email, or a name p…
trade_details––Optional trade-in details from the shopper: year, make, model, trim, vin, odometer, plate, plate_state, color, payoff_lender, payoff_amount.
trade_equity––Net trade equity if allowance and payoff are unknown (no tax credit).
trade_value––Trade-in allowance in USD (used when the scenario does not set it).
trade_vehicle––Short description of the trade, e.g. '2021 Ford F-150 XLT, 48k mi'.
vin––17-character VIN, if listing_id is not known. Rejected if several dealers list it.

No output schema declared.

No examples provided.

register_agent ~137

Optional and free. Registers your agent and returns an agent key (shown once) that gives it a durable, anonymous id in Moonshot Lab's bot analytics. Send it as the X-MoonshotLab-Agent-Key header, or add ?agent_key=<key> to the MCP URL. Nothing else changes: anonymous use keeps working, limits are the same, and no personal data is collected. Dealers only ever see aggregate demand by platform name.

NameTypeReqDescription
agent_name––Optional: your agent or product name (no personal data).
platform––Optional: platform it runs on, e.g. ChatGPT, Claude, custom.

No output schema declared.

No examples provided.

save_search ~478

DEMO. Save a car search and get alerted when new cars match. Returns a search_id (keep it; it is the only way to read or cancel the search) and an expiry (default 30 days, renewable). Check for new cars with get_new_matches, or give a callback_url. Shopper email alerts are optional and need explicit consent. On this demo, email sending is switched off (alerts are logged, not sent) and new arrivals are simulated.

NameTypeReqDescription
body_style––e.g. suv, sedan, truck.
callback_url––Optional HTTPS webhook for new matches. Public addresses only; HMAC-signed (X-MoonshotLab-Signature: t=<unix>,v1=<hex HMAC-SHA256 of '<t>.<body>'>).
condition––new, used or cpo.
credit_tier––excellent, good, fair or poor, for the payment estimate.
down_payment––Down payment used for the payment estimate, USD.
drivetrain––e.g. awd, fwd.
email_consent––true only if the shopper explicitly agreed to alert emails.
expires_in_days––Days until the search ends (default 30, max 90). Renew any time.
fuel_type––e.g. gasoline, hybrid, electric.
make––Make, e.g. Toyota.
max_mileage––Most miles.
max_monthly_payment––Highest estimated monthly payment, USD.
model––Model, e.g. RAV4.
price_max––Highest advertised price, USD.
radius_miles––Miles from zip (needs zip).
renew_search_id––Pass an existing search_id to renew it instead of saving a new one.
shopper_email––Optional: shopper's email for alert emails. Only with email_consent=true after the shopper agreed. Every email has a one-click unsubscribe.
state––Two-letter state of the selling store.
term_months––Loan term for the payment estimate.
trim––Trim.
year_max––Newest model year.
year_min––Oldest model year.
zip––Shopper's five-digit ZIP, the center of the search area.

No output schema declared.

No examples provided.

search_inventory ~2,291

Search the SYNTHETIC demo inventory (about 860 fictional vehicles at 20 fictional dealers in TX, CA, FL, GA, AZ, IL, NY and OH). Results are not real vehicles for sale; say so when you show them. Each result has listing_id (dealer_key:VIN), vehicle basics, headline_price (before tax, title and fees), dealer_name, and selling_location: the store that holds the unit, with address and phone. link_status is linked, or ambiguous when the listing does not say which of the dealer's stores holds it (see selling_location_candidates). A unit can be held at a sister store run by another dealer in the same group; operated_by_dealer_id then differs from dealer_id. Matching is exact on vocabularies, so a total of 0 often means a wrong value: check the parameter descriptions, widen radius_miles or drop a filter; a zero total also returns hints. The named parameters are shortcuts. filters reaches every other attribute: for example {"field": "canonical.vin", "op": "eq", "value": "<VIN>"} finds a VIN, {"field": "price_summary.doc_fee", "op": "range", "max": 300}, {"field": "incentives[].label_raw", "op": "eq", "value": "Military Appreciation"}. Payment search: payment_max / payment_min filter on a DEMO monthly finance estimate computed per listing from its itemized out-the-door estimate (tax, title, registration, dealer fees) for the buyer location, minus down payment and trade equity, at a demo APR by credit tier unless apr is given. Each result then has estimated_payment (rounded to $5, with a range) and dealer_advertised_payment when the listing shows one; the response has payment_assumptions and a one-line assumptions_summary to read back to the shopper. For 'under $300/month' pass max_monthly_payment=300. With a cap, near_misses lists up to 3 cars just above it, and a zero result returns to_reach_target (extra down payment, or a 72 or 84 month term). To compare scenarios for one car, use compare_payment_scenarios. Every result has estimated_out_the_door (exact, same as estimate…

NameTypeReqDescription
apr––APR percent for payment estimates. If omitted, a demo APR by credit_tier is used.
best_value_needs––With sort=best_value, shopper needs that also score: seats, cargo, full_third_row, sliding_doors, low_mileage, newer, budget_headroom (needs max_out_the_door). Score = 0.70 x base + 0.30 x mean need…
body_style––suv, sedan, pickup, hatchback, minivan or wagon. Use pickup for trucks.
buyer_city––Buyer's city for payment tax lines.
buyer_county––Buyer's county (without 'County') for payment tax lines.
buyer_state––Buyer's two-letter state for payment tax and fees. Default: the selling store's state.
buyer_zip––Buyer's ZIP; fills any missing buyer state, county and city. If no buyer location is given, zip is used, then the selling store (see out_the_door_assumptions.buyer).
city––Exact city of the selling store (for example Houston, Katy, Plano). Suburbs are separate cities, so for 'in or near a city' prefer zip plus radius_miles.
condition––new, used or cpo (certified pre-owned). used also returns cpo units.
credit_tier––excellent, good (default), fair or poor; picks the demo APR when apr is omitted. Credit tiers (demo APR new / used): excellent about 720 and up (6.0% / 8.5%); good about 660 to 719 (7.5% / 11.0%); fa…
dealer_key––Dealer key from list_dealers, e.g. lonemesa.
dealer_segment––franchise, independent_used or bhph (buy-here-pay-here). Each result shows dealer_segment and dealer_type.
down_payment––Cash down in USD for payment estimates. Default 0.
drivetrain––fwd, awd, rwd or 4wd.
eligible_incentive_labels––label_raw values of conditional incentives the buyer says they qualify for; applied to payment estimates where a listing offers them. Off by default.
exterior_color––Exterior color family: white, black, silver, gray, blue, red, green or bronze.
filters––Generic filters on ANY ontology field (vehicle, listing, store, dealer, price, fee, incentive, media, payment). All filters must match. See list_searchable_fields.
financeable_onlyboolean–True to drop listings whose payment estimate fails the demo financing rules (minimum amount financed, max term by age and mileage) at these terms. Recommended with max_monthly_payment; financing_summ…
fuel_type––gasoline, hybrid, plug_in_hybrid or electric. Use electric for EV or BEV.
group_id––Dealer group id (hierarchy: Group, then Region, then Store), e.g. meridian. See list_dealers.
include_near_missesboolean–With a payment cap, also return up to 3 listings within $25 above it in near_misses, flagged above_target. Default true.
include_paymentboolean–True to add estimated_payment to every result without filtering on it.
limitinteger–Results per page, 1 to 50. Each result is about 2 KB; 5 to 10 is usually enough.
make––Make, case-insensitive, e.g. Honda, Ford, Tesla. 14 makes are present.
max_mileage––Maximum odometer miles.
max_monthly_payment––Canonical monthly payment cap: the shopper's monthly budget in USD, e.g. 300 for 'under $300/month' (demo estimate).
max_out_the_door––Maximum estimated out-the-door total in USD for the buyer location (tax, title, registration, dealer fees, minus trade). Exact, unrounded, and the same figure estimate_out_the_door returns for the sa…
min_out_the_door––Minimum estimated out-the-door total in USD (same basis as max_out_the_door).
model––Model with its punctuation, case-insensitive: CR-V, F-150, Model 3, Mustang Mach-E.
offsetinteger–Paging offset.
payment_max––DEPRECATED alias of max_monthly_payment (still accepted; the lower wins if both are given).
payment_min––Minimum estimated monthly finance payment in USD (demo estimate).
payoff––Loan payoff owed on the trade-in, USD.
price_max––Maximum headline price in USD (before tax, title and dealer fees). For a budget that includes taxes and fees, check estimate_out_the_door.
price_min––Minimum headline price in USD (before tax, title and dealer fees).
radius_miles––Radius in miles around zip.
region_id––Region inside a group, as group_id/region_id (e.g. meridian/dfw-metro) or a bare region id.
scenarios––Optional what-if finance scenarios (up to 6). Each returned listing gets payment_scenarios with payment, amount financed, total interest and total cost per scenario. Filter and sort still use the mai…
seating_min––Minimum seats, e.g. 7 for a third row family vehicle (synthetic demo spec).
sliding_doors––True for sliding rear doors (minivans).
sortstring–price_asc (default), price_desc, year_desc, mileage_asc, distance_asc (needs zip), payment_asc, payment_desc, otd_asc (estimated out the door) or best_value (documented score over out-the-door cost,…
state––Two-letter code of the selling store's state: TX, CA, FL, GA, AZ, IL, NY or OH. Not the full name.
store_id––Store id, dealer_key plus store ZIP, e.g. bluebonnetridge-75201.
term_months––Loan term in months, 12 to 96. Default 60.
third_row––True for third row seating only, false to exclude it (synthetic demo spec).
third_row_type––full (adult-usable, car-seat capable) or compact (small, occasional; e.g. Tiguan). Demo spec.
trade_equity––Net trade equity in USD if allowance and payoff are unknown (negative for upside-down); no tax credit is applied for it.
trade_value––Trade-in allowance in USD (gets the trade-in tax credit where the state allows it).
trim––Trim name, e.g. LX, EX-L, Lariat.
year_max––Latest model year.
year_min––Earliest model year.
zip––Five-digit US ZIP of the shopper. With radius_miles, filters by straight-line distance to the selling store and adds distance_miles to each result.

No output schema declared.

No examples provided.

Install

How do I install the Moonshot Lab (demo) MCP server?

Moonshot Lab (demo) is a hosted endpoint at https://moonshotlab1.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · moonshotlab1.com

# add to Claude Code
claude mcp add --transport http com-moonshotlab1-inventory 'https://moonshotlab1.com/mcp'
Common questions

What is the Moonshot Lab (demo) MCP server?

Moonshot Lab (demo) is an MCP server listed in the public MCP registry as com.moonshotlab1/inventory. Agent car inventory index. Synthetic demo data, not real inventory, not an offer. This page covers its hosted endpoint (https://moonshotlab1.com/mcp).

Is the Moonshot Lab (demo) MCP server safe to use?

Moonshot Lab (demo) scores 64 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Moonshot Lab (demo) MCP server expose?

Moonshot Lab (demo) exposes 17 tools: search_inventory, list_searchable_fields, get_payment_estimate, compare_payment_scenarios, register_agent, and 12 more. Their descriptions and schemas cost roughly 6,723 tokens of context every time the server is loaded.

Does the Moonshot Lab (demo) MCP server require authentication?

No. We connected to Moonshot Lab (demo) without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the Moonshot Lab (demo) MCP server still maintained?

Moonshot Lab (demo) is still listed as active in the MCP registry. We last reached this channel on 25 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.