protogrid

Search / com.joyautomart/mcp

JOY Automart

R0· no sign-in

Search car parts and used/reconditioned vehicle listings in Bangladesh (BDT prices, stock).

v1.2.0 · active · repository · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality84good
Trust96of 100
Uptime, 30 days100%
Latency p50920 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "joyautomart": {
      "type": "http",
      "url": "https://www.joyautomart.com/mcp",
      "headers": {
        "Authorization": "Bearer ${JOYAUTOMART_TOKEN}"
      }
    }
  }
}
claude mcp add --transport http joyautomart https://www.joyautomart.com/mcp --header "Authorization: Bearer ${JOYAUTOMART_TOKEN}"
[mcp_servers.joyautomart]
url = "https://www.joyautomart.com/mcp"
bearer_token_env_var = "JOYAUTOMART_TOKEN"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "joyautomart": {
      "type": "remote",
      "url": "https://www.joyautomart.com/mcp",
      "enabled": true,
      "headers": {
        "Authorization": "Bearer {env:JOYAUTOMART_TOKEN}"
      }
    }
  }
}
{
  "mcpServers": {
    "joyautomart": {
      "type": "http",
      "url": "https://www.joyautomart.com/mcp",
      "headers": {
        "Authorization": "Bearer ${JOYAUTOMART_TOKEN}"
      }
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=joyautomart&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vd3d3LmpveWF1dG9tYXJ0LmNvbS9tY3AiLCJoZWFkZXJzIjp7IkF1dGhvcml6YXRpb24iOiJCZWFyZXIgJHtKT1lBVVRPTUFSVF9UT0tFTn0ifX0%3D"
}
{
  "servers": {
    "joyautomart": {
      "type": "http",
      "url": "https://www.joyautomart.com/mcp",
      "headers": {
        "Authorization": "Bearer ${JOYAUTOMART_TOKEN}"
      }
    }
  }
}
{
  "mcpServers": {
    "joyautomart": {
      "httpUrl": "https://www.joyautomart.com/mcp",
      "headers": {
        "Authorization": "Bearer ${JOYAUTOMART_TOKEN}"
      }
    }
  }
}
extensions:
  "joyautomart":
    enabled: true
    name: "joyautomart"
    type: streamable_http
    uri: "https://www.joyautomart.com/mcp"
    headers:
      "Authorization": "Bearer ${JOYAUTOMART_TOKEN}"
    timeout: 300

Placeholders to fill from your own secret store: ${JOYAUTOMART_TOKEN}. The registry never accepts secret values.

Quality 84 / 100good

protocol100 · weight 25
  • pass
    protocol.modernsupports 2026-07-28 (server/discover)
  • pass
    protocol.statelessanswers without a session
  • pass
    protocol.transportstreamable HTTP
  • pass
    protocol.list_ttltool list is cacheable (ttlMs 300000)
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene100 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations10 of 10 tools declare readOnlyHint or destructiveHint
  • pass
    tools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
  • pass
    tools.token_costabout 4,301 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability25 · weight 15
  • warn
    stability.changes39 tool changes in 30 days
  • fail
    stability.rug_pull27 tools kept their name but changed most of their description in 30 days; review before trusting them
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

10 tools, about 4,301 tokens to load them all · tool set b2bafad9db4e · tools last changed 2026-10-31 · checked 2026-11-07 16:55 UTC

Tool changes

  • prepare_part_handoffchangedtitle, description
    before

    Prepare product and pre-filled WhatsApp links for a human parts enquiry; use prepare_vehicle_handoff for whole cars. - First search_parts, then get_part, then copy the selected part_id here. Use get_buying_guide for general terms. Ask the buyer for missing fitment fields identified by get_part; never invent vehicle identity to complete an enquiry. - Keep quantity as the buyer's requested count, even below the published minimum: explain the gap rather than silently raising it. vehicle supplies fitment context; note can request confirmation but cannot override returned restrictions. Unit price times quantity is not an accepted quote. - Anonymous fresh lookup. Text is embedded in the link, so omit unnecessary personal details. Nothing opens, sends, reserves, orders or charges; the human decides whether to send and JOY confirms eligibility, fitment, stock and price.

    after · 64% of words in common

    Prepare a human parts enquiry after search_parts and get_part; use prepare_vehicle_handoff for whole cars and get_buying_guide for retail terms. - part_id fixes the selected item; quantity expresses the buyer's request, even below its minimum. Explain any gap rather than changing the request. Quantity times asking price excludes unconfirmed fees and is not an accepted quote. - vehicle supplies buyer-provided fitment context; collect missing fields identified by get_part. note qualifies that request but cannot clear fitment restrictions or change eligibility. Never invent vehicle identity. - A fresh anonymous lookup prepares links only. Text is embedded in the link, so omit unnecessary personal details. The human reviews and decides whether to send; JOY confirms fitment, stock and price. Nothing opens, reserves, orders or charges.

  • prepare_vehicle_handoffchangeddescription
    before

    Prepare a listing link and pre-filled WhatsApp enquiry for a human considering one car; use prepare_part_handoff for spare parts and compare_vehicles before choosing between cars. Choose vehicle_id from a shortlisted listing, not an auction ID. A slug is resolved to the canonical listing_id before the message is composed. note records the buyer's request; it cannot change the asking price, certify condition or authorize a bid. The link embeds the note, so omit unnecessary personal details. Anonymous fresh lookup. This is the endpoint of the public research workflow: the human decides whether to open and send the enquiry, then JOY confirms availability, inspection and terms. No seller contact, booking, reservation, bid, order or payment is performed.

    after · 53% of words in common

    Prepare a human enquiry for a selected car; use compare_vehicles before choosing and prepare_part_handoff for spare parts. - vehicle_id fixes the advert to enquire about. A slug resolves to canonical listing_id so the link and refreshed asking-price summary refer to the same advert; neither identifies an auction event. - note adds the buyer's question to that enquiry, not an instruction to change price or certify condition. It is embedded in the link; omit unnecessary personal details. - This anonymous lookup prepares links only. The human reviews and decides whether to send; JOY confirms availability, inspection and terms. No enquiry, booking, reservation, bid, order or payment is made.

  • get_buying_guidechangeddescriptionmeaning changed
    before

    Read published Bangladesh retail-parts payment, delivery and human-contact terms before explaining a purchase. - Call {}. These terms come from the public retail-marketplace configuration, not a product, address or buyer account. Product choice cannot personalize this call: get_part supplies item eligibility and prepare_part_handoff prepares the enquiry. - Apply the returned zones after learning the buyer's area; confirm quantity/fitment separately from get_part. Retail checkout terms do not establish vehicle, auction or trade-credit terms; route car questions through prepare_vehicle_handoff. - Anonymous live read. Money objects separate major BDT from minor paisa; vat_bps uses basis points. If live_terms_unavailable=true, ask the human team rather than invent fees. The result is guidance, not an accepted quote; no payment or message starts.

    after · 50% of words in common

    Read shared Bangladesh retail-parts payment and delivery terms before explaining a purchase; get_part supplies item eligibility and prepare_part_handoff prepares the enquiry. - No inputs: the same retail policy applies across items. Reuse it across a shortlist, then refresh before relaying fees; a buyer's address, basket or identity cannot personalize this call. - Select the returned delivery zone using the buyer's area. Retail terms do not establish vehicle, auction or trade-credit terms; route car enquiries through prepare_vehicle_handoff. - Money objects distinguish BDT from paisa; vat_bps is in basis points. If live_terms_unavailable is true, obtain human confirmation instead of inventing fees. This anonymous read accepts no quote or payment.

  • search_auctionschangeddescriptionmeaning changed
    before

    Discover existing public car-auction IDs for get_auction; use get_vehicle for a known listing's details. - Express the desired car, not an auction title or bid: make='Toyota' scans that manufacturer's listings; add query='Premio' only for a model-specific request. Unpriced cars remain eligible because an auction need not have an asking price. - Pagination scans vehicles before extracting their links. Follow next_page even after an empty items page; claim the scan exhausted only when no next page remains and the source limit was not reached. At the limit, narrow the vehicle filters. Source counts are not auction counts. - Anonymous live read. Check each selected auction's current availability with get_auction; a link may be ended or feature-gated. No private lot is exposed or bid placed.

    after · 42% of words in common

    Find auction-event links attached to public cars; use search_vehicles for car specifications and asking prices, or get_auction for one event's bid state. - Filter the linked car, not the auction title: make='Toyota' with query='Premio' targets that model's vehicle adverts. Unpriced cars remain eligible because an auction need not have a retail asking price. - page_size is a source-scan batch: inspecting 20 adverts can yield zero auction links. Keep batch size and filters fixed; follow next_page even after an empty items page. At the source limit, narrow the car filters instead of claiming an exhaustive search. - Results are links, not retail offers or bid snapshots. Source counts describe cars scanned; get_auction checks ended or gated events. Anonymous discovery exposes no private lots and places no bid.

  • get_auctionchangeddescription
    before

    Observe one car auction's public bid state; search_auctions discovers IDs and get_vehicle supplies the linked car's facts. - Select auction_id from the same discovery/detail record as the car being discussed. It identifies a sale event, not the vehicle advertisement: never substitute listing_id or carry a bid between auction IDs. - A saved event ID does not imply an open auction. Read status/end_at and refresh the snapshot before answering a bid question. minimum_next_bid is optional; an asking price cannot fill a missing bid value. - Anonymous observation only. Feature gating, rate limits or an unknown event can return errors; report them without bypass. Reserves and bidder identities stay private. Bidding requires a verified dealer and human decision outside this tool.

    after · 50% of words in common

    Read one car auction's current public bid state; search_auctions discovers events and get_vehicle provides the linked car's facts. - auction_id binds every bid and deadline to one sale event. Keep that event's listing link beside the result; a bid from another event or the car's retail asking price cannot fill a missing auction value. - A saved event may have ended. Check status/end_at and refresh before answering a live-bid question; use minimum_next_bid only when returned. - Anonymous snapshots can fail for feature gating, rate limits or unknown events. Report the error; reserve prices and bidder identities stay private. Bidding requires a verified dealer and a human decision outside this tool.

  • get_vehiclechangeddescriptionmeaning changed
    before

    Read a car listing's public specifications, asking price and inspection evidence; search_vehicles discovers candidates and compare_vehicles compares them. - Resolve an ID or slug to the returned canonical listing_id before counting offers. It identifies an advertisement; multiple advertisements do not establish independent inspection evidence. - Pass a non-empty auction_id to get_auction; an absent link means unknown auction status. Use search_auctions for discovery and prepare_vehicle_handoff for a selected car's human enquiry. - Anonymous fresh lookup. Missing facts stay unknown; a not-found listing requires a fresh search. Seller contacts and reserve prices stay private, and nothing is reserved.

    after · 48% of words in common

    Inspect one car listing's specifications, asking price and inspection evidence after search_vehicles; use compare_vehicles for a shortlist. - vehicle_id chooses an advertisement. Use the returned canonical listing_id to join its detail, comparison and enquiry; matching make/model or an ID/slug pair is not evidence of another independent offer. - A non-empty auction_id selects a separate event for get_auction; no link means auction status is unknown. Use prepare_vehicle_handoff after selecting the car, rather than treating inspection evidence as a warranty. - This anonymous lookup refreshes the advert. Missing facts remain unknown; a missing listing requires a new search. Seller contacts and auction reserve prices stay private, and no car is reserved.

  • search_vehicleschangeddescriptionmeaning changed
    before

    Discover cars for sale in JOY Auto Exchange; use get_vehicle for detail, compare_vehicles for a shortlist or search_auctions for auction links. - Separate manufacturer and model: make='Toyota', query='Premio', max_price_bdt=3000000 expresses a Premio within 30 lakh. Filters intersect; a single 'Toyota Premio' phrase can miss a listing whose fields store those words separately. - Choose a priced-budget search or POA discovery deliberately. include_unpriced does not cancel numeric price bounds; omit both bounds when unknown-price cars must remain candidates. Asking prices are neither bids nor valuations. - Anonymous live read. Keep filters/sort fixed while paging; empty results are valid and missing prices remain unknown. Verification is inspection evidence, not a warranty. No seller is contacted or car reserved.

    after · 38% of words in common

    Research retail cars for sale; use get_vehicle for one listing, compare_vehicles for a shortlist or search_auctions to discover auction-event links. - Combine the buyer's make/model, fuel, model-year range and budget into one shortlist. verified_only narrows evidence quality, not mechanical warranty; year_desc ranks model year while latest prioritizes verified/newly listed adverts. - Decide whether POA cars belong in the shortlist. include_unpriced cannot override min_price_bdt/max_price_bdt; omit both price bounds to retain unknown-price candidates. Asking prices are neither bids nor valuations. - page_size sets the review batch; hold it, sort and filters fixed while advancing page. Anonymous live reads may return no matches. Use the selected listing's detail before enquiry; no seller is contacted or car reserved.

  • get_partchangeddescriptionmeaning changed
    before

    Read one spare part's public price, availability and fitment restrictions; search_parts supplies its ID. - Copy the selected part_id unchanged. An OEM match can identify several catalogue entries: keep each entry's price, stock and fitment evidence together instead of borrowing facts from another matching entry. - A found item can remain unsellable. Use its minimum quantity and required fitment information when discussing an enquiry through prepare_part_handoff; unknown price or stock is not zero. - Anonymous fresh lookup; no supply is reserved or fitment certified. On a missing-ID error, search again rather than declaring the OEM part unavailable everywhere.

    after · 41% of words in common

    Inspect one spare part's price, supply and fitment evidence after search_parts; use prepare_part_handoff for a human enquiry. - part_id selects one catalogue record, not the OEM-number group. If several records share an OEM reference, select the buyer's intended record before lookup; never combine one record's price with another's stock or fitment. - A found record can remain unsellable. Read its minimum quantity and required fitment fields before proposing a purchase; missing price or stock means unknown, not zero. An OEM match does not certify fitment. - This anonymous lookup refreshes the selected record without reserving supply. If it is missing, search again and reconfirm any replacement with the buyer; a failed lookup does not prove the OEM part unavailable everywhere.

  • search_partschangeddescriptionmeaning changed
    before

    Find spare-part candidates in JOY's Bangladesh catalogue; use search_vehicles for whole cars. - Build filters from the buyer's intent: query names the item or OEM reference; make/chassis identify its vehicle. For example, combine Toyota, NZE141 and 'brake pads'. If nothing matches, clarify item text/category before changing a known vehicle identity. - Ask whether the buyer needs stocked supply or human sourcing before choosing the stock/RFQ flags. A catalogue-only match is an enquiry candidate, not a confirmed offer. Keep the chosen filters fixed while paging. - Anonymous live read. Empty results are valid; an uninterpretable Bangla query returns an error. Read get_part for the selected part_id, then prepare_part_handoff after fitment review. Search does not reserve stock.

    after · 42% of words in common

    Find spare-part candidates; use search_vehicles for whole cars and get_part to inspect a selected result. - Combine query/category for the item with make/chassis for its vehicle. Narrow ambiguous item text before relaxing known vehicle identity; a catalogue match never certifies fitment. - Choose stocked supply or RFQ sourcing deliberately. max_price_bdt limits the item's asking price, not the full purchase budget; check minimum quantity and delivery terms separately. Catalogue-only results need human confirmation. - page_size controls review batch size, not total supply. Keep it and the filters fixed while advancing page. Empty results are valid; an uninterpretable Bangla query returns an error. Anonymous searches reserve no stock.

  • prepare_buyer_handoffremoved

    Prepare product and pre-filled WhatsApp links for a human parts enquiry; use get_buying_guide for general purchase terms. Quantity, vehicle and note annotate the request: quantity neither turns the catalogue price into a payable quote nor satisfies minimum-order rules. Vehicle/VIN text requests fitment review; it does not prove compatibility. Review the returned restrictions before offering the link, and do not let a free-text note override them. Provided vehicle/note text is embedded in the link, so omit unnecessary personal details. Anonymous fresh part lookup. Creating links opens or sends nothing and does not create an RFQ, order, reservation or charge. The human decides whether to send; JOY must confirm eligibility, stock, fitment and price.

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.

Trust 96 / 100

provenance85
liveness100
freshness100
hygiene100

+repository +dns-namespace +website +reachable +uptime-100% +updated-9d-ago

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://www.joyautomart.com/mcp streamable-httpnoneyes100%920 ms2026-07-28, 2025-11-25, 2025-06-18, 2025-03-262026-11-07

Tools (10)

compare_vehiclesread-onlyCompare a selected car shortlist; use search_vehicles to discover candidates or get_vehicle for one car. - vehicle_ids chooses the adverts to include, in buyer-selected order; it does not rerun search filters. Resolve ID/slug aliases to distinct listing_id values. Repeating an advert must not create extra price evidence or imply another vehicle. - Keep unknown-price candidates visible when the buyer still wants to consider them. A cheapest result ranks only distinct, known positive prices; inspect price_comparison_complete before describing it as cheapest across the whole shortlist. Asking prices are not valuations. - Anonymous fresh lookups can partially fail. Inspect not_found/unavailable and retry temporary failures before excluding a candidate. Use prepare_vehicle_handoff after choosing; comparison reserves nothing.
get_auctionread-onlyRead one car auction's current public bid state; search_auctions discovers events and get_vehicle provides the linked car's facts. - auction_id binds every bid and deadline to one sale event. Keep that event's listing link beside the result; a bid from another event or the car's retail asking price cannot fill a missing auction value. - A saved event may have ended. Check status/end_at and refresh before answering a live-bid question; use minimum_next_bid only when returned. - Anonymous snapshots can fail for feature gating, rate limits or unknown events. Report the error; reserve prices and bidder identities stay private. Bidding requires a verified dealer and a human decision outside this tool.
get_buying_guideread-onlyRead shared Bangladesh retail-parts payment and delivery terms before explaining a purchase; get_part supplies item eligibility and prepare_part_handoff prepares the enquiry. - No inputs: the same retail policy applies across items. Reuse it across a shortlist, then refresh before relaying fees; a buyer's address, basket or identity cannot personalize this call. - Select the returned delivery zone using the buyer's area. Retail terms do not establish vehicle, auction or trade-credit terms; route car enquiries through prepare_vehicle_handoff. - Money objects distinguish BDT from paisa; vat_bps is in basis points. If live_terms_unavailable is true, obtain human confirmation instead of inventing fees. This anonymous read accepts no quote or payment.
get_partread-onlyInspect one spare part's price, supply and fitment evidence after search_parts; use prepare_part_handoff for a human enquiry. - part_id selects one catalogue record, not the OEM-number group. If several records share an OEM reference, select the buyer's intended record before lookup; never combine one record's price with another's stock or fitment. - A found record can remain unsellable. Read its minimum quantity and required fitment fields before proposing a purchase; missing price or stock means unknown, not zero. An OEM match does not certify fitment. - This anonymous lookup refreshes the selected record without reserving supply. If it is missing, search again and reconfirm any replacement with the buyer; a failed lookup does not prove the OEM part unavailable everywhere.
get_vehicleread-onlyInspect one car listing's specifications, asking price and inspection evidence after search_vehicles; use compare_vehicles for a shortlist. - vehicle_id chooses an advertisement. Use the returned canonical listing_id to join its detail, comparison and enquiry; matching make/model or an ID/slug pair is not evidence of another independent offer. - A non-empty auction_id selects a separate event for get_auction; no link means auction status is unknown. Use prepare_vehicle_handoff after selecting the car, rather than treating inspection evidence as a warranty. - This anonymous lookup refreshes the advert. Missing facts remain unknown; a missing listing requires a new search. Seller contacts and auction reserve prices stay private, and no car is reserved.
prepare_part_handoffread-onlyPrepare a human parts enquiry after search_parts and get_part; use prepare_vehicle_handoff for whole cars and get_buying_guide for retail terms. - part_id fixes the selected item; quantity expresses the buyer's request, even below its minimum. Explain any gap rather than changing the request. Quantity times asking price excludes unconfirmed fees and is not an accepted quote. - vehicle supplies buyer-provided fitment context; collect missing fields identified by get_part. note qualifies that request but cannot clear fitment restrictions or change eligibility. Never invent vehicle identity. - A fresh anonymous lookup prepares links only. Text is embedded in the link, so omit unnecessary personal details. The human reviews and decides whether to send; JOY confirms fitment, stock and price. Nothing opens, reserves, orders or charges.
prepare_vehicle_handoffread-onlyPrepare a human enquiry for a selected car; use compare_vehicles before choosing and prepare_part_handoff for spare parts. - vehicle_id fixes the advert to enquire about. A slug resolves to canonical listing_id so the link and refreshed asking-price summary refer to the same advert; neither identifies an auction event. - note adds the buyer's question to that enquiry, not an instruction to change price or certify condition. It is embedded in the link; omit unnecessary personal details. - This anonymous lookup prepares links only. The human reviews and decides whether to send; JOY confirms availability, inspection and terms. No enquiry, booking, reservation, bid, order or payment is made.
search_auctionsread-onlyFind auction-event links attached to public cars; use search_vehicles for car specifications and asking prices, or get_auction for one event's bid state. - Filter the linked car, not the auction title: make='Toyota' with query='Premio' targets that model's vehicle adverts. Unpriced cars remain eligible because an auction need not have a retail asking price. - page_size is a source-scan batch: inspecting 20 adverts can yield zero auction links. Keep batch size and filters fixed; follow next_page even after an empty items page. At the source limit, narrow the car filters instead of claiming an exhaustive search. - Results are links, not retail offers or bid snapshots. Source counts describe cars scanned; get_auction checks ended or gated events. Anonymous discovery exposes no private lots and places no bid.
search_partsread-onlyFind spare-part candidates; use search_vehicles for whole cars and get_part to inspect a selected result. - Combine query/category for the item with make/chassis for its vehicle. Narrow ambiguous item text before relaxing known vehicle identity; a catalogue match never certifies fitment. - Choose stocked supply or RFQ sourcing deliberately. max_price_bdt limits the item's asking price, not the full purchase budget; check minimum quantity and delivery terms separately. Catalogue-only results need human confirmation. - page_size controls review batch size, not total supply. Keep it and the filters fixed while advancing page. Empty results are valid; an uninterpretable Bangla query returns an error. Anonymous searches reserve no stock.
search_vehiclesread-onlyResearch retail cars for sale; use get_vehicle for one listing, compare_vehicles for a shortlist or search_auctions to discover auction-event links. - Combine the buyer's make/model, fuel, model-year range and budget into one shortlist. verified_only narrows evidence quality, not mechanical warranty; year_desc ranks model year while latest prioritizes verified/newly listed adverts. - Decide whether POA cars belong in the shortlist. include_unpriced cannot override min_price_bdt/max_price_bdt; omit both price bounds to retain unknown-price candidates. Asking prices are neither bids nor valuations. - page_size sets the review batch; hold it, sort and filters fixed while advancing page. Anonymous live reads may return no matches. Use the selected listing's detail before enquiry; no seller is contacted or car reserved.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "com.joyautomart/mcp",
  "title": "JOY Automart",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://www.joyautomart.com/mcp",
      "type": "streamable-http",
      "headers": [
        {
          "name": "Authorization",
          "isSecret": true,
          "description": "Optional buyer token: 'Bearer joyagt_...'"
        }
      ]
    }
  ],
  "version": "1.2.0",
  "repository": {
    "url": "https://github.com/www-joyautomart-com/mcp-server",
    "source": "github"
  },
  "websiteUrl": "https://www.joyautomart.com/developers",
  "description": "Search car parts and used/reconditioned vehicle listings in Bangladesh (BDT prices, stock)."
}