Skip to main content
Glama
ThatMojo

encarapi-mcp

by ThatMojo

EnCarAPI MCP server: Korean and Chinese used car data for AI assistants

Model Context Protocol server for EnCarAPI. Lets Claude, Cursor, ChatGPT and other MCP clients search live used car listings from South Korea (Encar, KB Chachacha, K Car) and China (Dongchedi, Che168), and pull full details, inspection reports and accident records.

An API key is required. Get one (5-day trial) at encarapi.com. Chinese data works with a ChinaCarAPI key or an EnCarAPI key with the China add-on. ChinaCarAPI customers: see For ChinaCarAPI customers.

Tools

Tool

What it does

search_korean_cars

Search Korean listings (brand, model, year, price in 10,000 KRW, mileage, fuel, accident-free, seller region and city, source: encar / kbc / kcar / all)

search_korean_excavators

Search Korean used excavators (maker, model, operating hours, weight class, region; Business/Scale key)

search_korean_trucks

Search Korean trucks, buses and special vehicles (body type, payload in tons, use, region; Business/Scale key)

find_korean_car_by_vin

All Encar / K Car listings of one VIN, incl. removed ones (Business/Scale key)

get_korean_truck

Full record for one truck: detail, inspection report, cargo box, VIN and plate (Business/Scale key)

get_korean_car

Full detail for one listing (specs, options, photos, price history, seller)

get_korean_inspection

Official Korean inspection report

get_korean_accident_record

Insurance accident history and ownership changes

find_korean_models

Model name autocomplete across brands

korean_filter_values

Valid filter values

search_chinese_cars

Search Chinese listings (brand, model, model year, registration year, price in CNY, mileage, power, city, fuel, source, export-ready)

get_chinese_car

Full record for one Chinese listing

get_chinese_car_by_url

Full record by Che168/Dongchedi listing link (desktop, mobile or app)

get_chinese_inspection

Chinese inspection report (accident, flood, fire, EV battery)

get_chinese_specs

Autohome specification sheet of a Che168 trim (cc, kW, hp, torque, emission standard, weights, EV battery)

chinese_filter_values

Valid makes, fuels, cities and sources with listing counts

chinese_models

Models of a brand with listing counts

All tools are read-only.

Related MCP server: used-parts-mcp

Option 1: hosted (no install)

Add this URL as a remote MCP server:

https://mcp.encarapi.com/mcp

In clients with OAuth support the URL is all you need. On first use a browser window opens, you paste your EnCarAPI key once, and the client is connected:

  • Claude (claude.ai, desktop, mobile): Settings - Connectors - Add custom connector, paste the URL

  • ChatGPT (developer mode): Settings - Connectors - create a connector with the URL

  • Cursor: {"mcpServers": {"encarapi": {"url": "https://mcp.encarapi.com/mcp"}}} in .cursor/mcp.json

  • VS Code: "MCP: Add Server" - HTTP - paste the URL

  • Claude Code:

claude mcp add --transport http encarapi https://mcp.encarapi.com/mcp

The key is checked once and is not stored on the server: it is encrypted into the token your client receives. To disconnect, remove the server in your client; to cut off access everywhere, rotate your key at encarapi.com.

Alternative: send the key yourself

Clients without OAuth support, scripts and gateways can send the key directly:

https://mcp.encarapi.com/mcp
Authorization: Bearer YOUR_ENCARAPI_KEY

Claude Code:

claude mcp add --transport http encarapi https://mcp.encarapi.com/mcp \
  --header "Authorization: Bearer YOUR_ENCARAPI_KEY"

The x-api-key: YOUR_ENCARAPI_KEY header works as well. Clients that only accept a URL and have no OAuth support can use https://mcp.encarapi.com/mcp?key=YOUR_ENCARAPI_KEY (a header is preferred, since URLs can end up in logs). A separate ChinaCarAPI key goes into the x-china-key header, or into the second field of the browser form.

For ChinaCarAPI customers

ChinaCarAPI has its own address:

https://mcp.chinacarapi.com/mcp

Add it as a remote MCP server exactly as above. On first use a browser window opens and you paste your ChinaCarAPI key once. The form detects which key it is, so an EnCarAPI key works there as well; customers with both keys put the EnCarAPI key into the optional second field.

  • Claude (claude.ai, desktop, mobile): Settings - Connectors - Add custom connector, paste the URL

  • Cursor: {"mcpServers": {"chinacarapi": {"url": "https://mcp.chinacarapi.com/mcp"}}} in .cursor/mcp.json

  • Claude Code:

claude mcp add --transport http chinacarapi https://mcp.chinacarapi.com/mcp

On this address the Chinese tools are listed first. Start with chinese_filter_values to get valid makes, fuels and cities (the city filter needs the exact value from that list).

Without the browser login, send the key as a header. On mcp.chinacarapi.com a key in Authorization: Bearer or x-api-key counts as a ChinaCarAPI key:

claude mcp add --transport http chinacarapi https://mcp.chinacarapi.com/mcp \
  --header "Authorization: Bearer YOUR_CHINACARAPI_KEY"

x-china-key: YOUR_CHINACARAPI_KEY works on both addresses; then Authorization can carry an EnCarAPI key for the Korean tools.

Locally (npx), set CHINACARAPI_KEY instead of ENCARAPI_KEY:

claude mcp add chinacarapi -e CHINACARAPI_KEY=YOUR_CHINACARAPI_KEY -- npx -y encarapi-mcp

Option 2: local (npx)

Claude Desktop (claude_desktop_config.json), Cursor (.cursor/mcp.json) and most other clients:

{
  "mcpServers": {
    "encarapi": {
      "command": "npx",
      "args": ["-y", "encarapi-mcp"],
      "env": {
        "ENCARAPI_KEY": "YOUR_ENCARAPI_KEY"
      }
    }
  }
}

Claude Code:

claude mcp add encarapi -e ENCARAPI_KEY=YOUR_ENCARAPI_KEY -- npx -y encarapi-mcp

Optional: CHINACARAPI_KEY for a separate ChinaCarAPI key.

Example prompts

  • "Find accident-free Genesis GV80 from 2022 or newer under 50 million KRW and compare the mileage."

  • "Show the inspection report and accident record for Encar listing 41000001."

  • "What are the cheapest export-ready BYD Seal listings in China right now?"

Self-hosting the HTTP endpoint

docker build -t encarapi-mcp .
docker run -p 3000:3000 encarapi-mcp     # POST /mcp, GET /health

Stateless: every request carries its own key, nothing is stored.

To enable the OAuth flow ("connect by URL only"), set two environment variables:

Variable

Meaning

MCP_OAUTH_SECRET

At least 32 random characters, e.g. openssl rand -base64 48. Enables OAuth; without it the server only accepts keys sent by the client.

MCP_PUBLIC_URL

Public origin of the server, e.g. https://mcp.example.com (default https://mcp.encarapi.com). Tokens are bound to <MCP_PUBLIC_URL>/mcp.

MCP_PUBLIC_URLS

Optional, several public origins separated by commas, e.g. https://mcp.encarapi.com,https://mcp.chinacarapi.com. Replaces MCP_PUBLIC_URL. The Host header picks the origin (unknown hosts get the first one); each origin has its own issuer and branding, and its tokens are not accepted on the others. Origins whose host contains chinacarapi. get the ChinaCarAPI branding.

docker run -p 3000:3000 -e MCP_OAUTH_SECRET="$(openssl rand -base64 48)" \
  -e MCP_PUBLIC_URL=https://mcp.example.com encarapi-mcp

This adds /.well-known/oauth-protected-resource, /.well-known/oauth-authorization-server, /register, /authorize and /token (OAuth 2.1 with PKCE, dynamic client registration). There is still no database: client ids, authorization codes and tokens are encrypted, self-contained values (AES-256-GCM) that carry the key. Consequences:

  • Changing MCP_OAUTH_SECRET signs out all OAuth clients (they reconnect through the browser).

  • Access tokens last 1 hour, refresh tokens 90 days and are replaced on every use.

  • Single use of authorization codes and of replaced refresh tokens is tracked in memory, so it is best-effort: it does not survive a restart and is not shared between instances.

  • A single token cannot be revoked on the server. Rotating the EnCarAPI key cuts off all access.

EnCarAPI is an independent service and not affiliated with Encar, KB Chachacha, K Car, Dongchedi or Che168.

License

MIT

Available Tools

11 tools
chinese_filter_valuesChinese filter valuesA
Read-only
Inspect

Valid values for the Chinese search filters, with listing counts: makes, fuels, cities, sources, sorts. City filters need the exact 'value' of a city entry. Pass list to get one list only.

ParametersJSON Schema
NameRequiredDescriptionDefault
listNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful behavior context — results include listing counts, and city values must match exactly — but says nothing about the shape or format of returned values despite there being no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with what the tool returns, followed by the two practical usage notes. No filler, though the category enumeration duplicates the schema enum.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, optional-arg lookup tool with no output schema, the description covers what is returned (valid values plus listing counts) and the key calling constraint (exact city value). It is close to complete, lacking only explicit handling of the no-argument case.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single 'list' parameter is an enum whose valid values the description largely restates (makes, fuels, cities, sources, sorts). It does add value by explaining the consequence of passing 'list' (one list only, implying all lists otherwise), but it does not clarify the omitted-parameter case explicitly or the format of returned entries.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource ('valid values for the Chinese search filters') and enumerates the five categories, making it distinguishable from korean_filter_values by scope. The verb is implicit (a lookup/reference tool) rather than an action, but the purpose is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives targeted usage guidance — city filters require the exact 'value' of a city entry, and passing 'list' returns a single list. However, it never says when to call this relative to sibling search_chinese_cars, so the when-to-use is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

chinese_modelsChinese models of a brandB
Read-only
Inspect

Models of one brand in the Chinese catalog, with listing counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
makeYesBrand name in English or brand id

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safe-read profile is covered. The description adds only that listing counts are returned; it says nothing about pagination, catalog coverage, or what happens when a brand is unknown, so added value is modest.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short, front-loaded sentence with no filler. It is a noun phrase rather than a full statement of action, which makes it slightly telegraphic, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read-only tool with no output schema, the description partially compensates by mentioning listing counts, but it does not describe the shape of the returned model list (names, ids, count meaning). Adequate but with a visible gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With a single parameter and 100% schema description coverage ('Brand name in English or brand id'), the schema already carries the semantics. The description adds no further detail about the accepted 'make' input format, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a concrete resource (models) scoped to one brand within the Chinese catalog, and adds that listing counts are included. It is clear what the tool returns, but it never contrasts itself with siblings like search_chinese_cars or chinese_filter_values, so an agent must guess which of the Chinese-catalog tools fits.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: 'models of one brand' suggests calling it when you already know a brand and want its model list. There is no explicit when-to-use statement, no exclusions, and no pointer to alternatives such as search_chinese_cars for broader lookups.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_korean_modelsFind Korean model namesA
Read-only
Inspect

Autocomplete model names across brands (e.g. 'sorento', 'gv70'). Use the result to filter search_korean_cars.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
searchYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds only that this is autocomplete-style lookup and that output feeds another tool; it omits matching semantics (prefix vs substring, case sensitivity) and any default for limit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero filler, with the purpose front-loaded and the downstream usage second. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should describe the return shape; it only implies the results are usable as filter values for search_korean_cars. For a simple read-only lookup with annotations covering safety, this is adequate but leaves return format and limit behavior unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for two parameters. The examples ('sorento', 'gv70') do clarify what belongs in 'search', but 'limit' is completely undocumented in both schema and description, leaving half the parameters ambiguous.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Autocomplete model names across brands') and grounds it with concrete examples ('sorento', 'gv70'), so an agent knows exactly what this returns. It differentiates itself from the sibling chinese_models via the Korean scope in the name, though it never explicitly contrasts the two.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The sentence 'Use the result to filter search_korean_cars' explicitly routes the agent into the correct workflow and names the consuming sibling. There is no when-not guidance (e.g. when to skip autocomplete and search directly), which keeps it short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_chinese_carGet a Chinese carA
Read-only
Inspect

Full record for one Chinese listing: price history, photos, seller, export status, same car on the other marketplace.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesListing id from search_chinese_cars
sourceNoMarketplace of the id, from the search result; needed when an id exists on both

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: it discloses that the tool resolves cross-marketplace duplicates ('same car on the other marketplace') and surfaces export status, which an agent could not learn from the schema alone. It does not cover freshness/auth/rate-limit behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with a colon-delimited list of what the record contains; every clause carries information and nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and only two well-documented params, the description appropriately compensates by enumerating the returned fields (price history, photos, seller, export status, cross-marketplace match). Complete enough for an agent to call it correctly, though it could clarify the relationship to its search sibling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented, establishing a baseline of 3. The phrase 'same car on the other marketplace' loosely justifies the optional `source` param, but adds little beyond what the schema's own enum description (needed when an id exists on both) already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Full record for one Chinese listing') and enumerates the record's contents, which clearly implies single-listing retrieval as opposed to the sibling search_chinese_cars. It does not explicitly name the sibling it differs from, so it falls just short of 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use statement, and no named alternatives. Usage is only implied by the schema's hint that the id comes from search_chinese_cars, leaving the agent to infer the search-then-fetch workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_chinese_inspectionGet a Chinese inspection reportB
Read-only
Inspect

Inspection report for one Chinese car: accident, flood and fire checks, battery data for EVs.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
sourceNoMarketplace of the id, from the search result; needed when an id exists on both

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description usefully discloses report contents (accident, flood, fire, EV battery), but says nothing about source coverage, latency, or empty-result behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler. It is efficient, though extremely terse given the two-parameter surface.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only report fetch with no output schema, describing report contents partially compensates. But missing usage guidance and unexplained 'id' semantics leave real gaps for a two-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50%: the 'source' enum is documented in the schema, but 'id' is bare and the description does not explain that id is the car identifier or clarify when the source hint matters. The description adds essentially no parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (inspection report) scoped to 'one Chinese car' and enumerates the report contents. It distinguishes itself from get_chinese_car by the 'inspection' framing, though it never names that sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use instruction or alternative routing. Usage is only implied by the name and the 'one Chinese car' scope, leaving the agent to infer that this is the deep-check counterpart to get_chinese_car.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_korean_accident_recordGet a Korean accident & ownership recordB
Read-only
Inspect

Insurance accident history and ownership changes for one Korean car (own vs. other-party damage in KRW).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds useful content context — that the record covers both own-damage and other-party damage in KRW — but says nothing about authorization needs, latency, or record availability/emptiness for the given car.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence with no filler, and the resource scope is front-loaded. It reads as a noun phrase rather than an action statement, so the structure is efficient but not maximally instructive.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only lookup with annotations covering safety and no output schema, the description covers the kind of data returned. The gap is the identifier's origin and format and whether a car without accident history returns empty versus error, which an agent would need to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single 'id' parameter, so the schema is silent. The description partially compensates by framing the input as 'one Korean car', implying the id is a Korean-car identifier, but it never states the expected id format or its source.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource (insurance accident history and ownership changes) scoped to 'one Korean car', which is materially different from the inspection and model-listing siblings. It lacks an explicit verb and does not name a sibling it is not, so differentiation is implied rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for one Korean car' implies a single-record lookup keyed by an identifier, as opposed to the search_* siblings, so usage is inferable. However, there is no explicit when-to-use, no prerequisite (e.g. obtaining the id from search_korean_cars), and no stated exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_korean_carGet a Korean carA
Read-only
Inspect

Full details for one Korean listing: specs, options, photos, price history, seller. Id: Encar id, 'kbc:' or 'kcar:'.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesListing id from search_korean_cars

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety and reach profile is covered. The description adds the return contents (specs, options, photos, price history, seller), which is useful, but says nothing about rate limits, auth needs, or missing-listing behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences, front-loaded with what the agent gets, followed by the one constraint that actually needs prose (id formats). No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with no output schema, naming the returned fields is the right level of detail and largely substitutes for the missing output schema. Only edge cases (nonexistent id, partial data) are unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description genuinely adds value by disclosing the accepted id formats (raw Encar id, 'kbc:<id>', 'kcar:<id>') that the schema's 'Listing id from search_korean_cars' does not mention.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Full details for one Korean listing') and enumerates the payload (specs, options, photos, price history, seller). The singular 'one Korean listing' implicitly separates it from the sibling search_korean_cars, though it never names that alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (fetch details for a single listing, presumably after a search) and gives id-format guidance, but it never states when to use this vs get_korean_inspection/get_korean_accident_record or when not to call it. Usage is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_korean_inspectionGet a Korean inspection reportB
Read-only
Inspect

Official Korean inspection report (performance check) for one car: panels, frame, mechanical condition.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the substantive detail of what the report contains, but says nothing about access requirements for an 'official' document, latency, or whether the report is cached/live despite the openWorldHint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence with the resource front-loaded; the parenthetical '(performance check)' earns its place by translating the domain term. Minor loss only because the enumerated fields are list-like rather than prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully sketches the report's contents, but it leaves the required id parameter and the relationship to sibling retrieval tools unexplained. Adequate for a simple read, yet not fully self-contained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single 'id' parameter is completely undocumented in both schema and description. The description mentions 'one car' but never clarifies that the id is a car identifier or what format it takes, so it fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb+resource combination ('Official Korean inspection report ... for one car') and even enumerates the report's coverage areas (panels, frame, mechanical condition). It is clear what the tool returns, though it never explicitly distinguishes itself from close siblings like get_korean_accident_record or get_chinese_inspection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no mention of alternatives. The phrase 'for one car' only weakly implies a prerequisite (you need a car id), and nothing tells the agent why it would call this instead of get_korean_car or get_korean_accident_record.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

korean_filter_valuesKorean filter valuesC
Read-only
Inspect

Valid values for the Korean search filters (fuels, colors, categories, ...).

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNo

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so safety is covered. Beyond that the description adds nothing behavioral -- it doesn't say whether values are static reference data, whether results differ per source, or how the values should be used downstream.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, zero waste, with the resource front-loaded. Nothing is padded or repeated from the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema and no description of the return shape, so an agent cannot predict whether values come back as a flat list or a keyed map per filter type. Combined with the unexplained source parameter, the definition is too thin for an agent to use confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single 'source' parameter, so the description must compensate and does not: it never explains that 'source' selects the marketplace (encar/kbc/kcar) or what 'all' aggregates. The filters listed (fuels, colors, categories) describe output dimensions, not the input parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific resource -- the valid values for Korean search filters -- and gives illustrative examples (fuels, colors, categories). The 'Korean' qualifier cleanly separates it from the sibling chinese_filter_values, though the verb (returns/lists) is only implied.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance at all: it never says this is a lookup to run before calling search_korean_cars, nor when the 'all' source is appropriate versus a single marketplace. The relationship to the search siblings is left entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_chinese_carsSearch Chinese used carsA
Read-only
Inspect

Search live used car listings in China (Dongchedi and Che168, duplicates merged), in English. Prices are in CNY; results include USD and EUR conversions. Use chinese_filter_values and chinese_models for exact make, model, fuel and city values.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoCity: pass the exact 'value' of an entry in chinese_filter_values (list 'cities')
fuelNoFuel type in English, see chinese_filter_values (list 'fuels')
langNo'zh' returns the original Chinese values; default English
makeNoBrand in English, e.g. BYD, Toyota, Audi
pageNo
sortNo
limitNoResults per page, default 10
modelNoModel name or id from chinese_models
sourceNoMarketplace; default both
year_maxNoModel year to
year_minNoModel year from
price_maxNoMaximum price in CNY
price_minNoMinimum price in CNY
duplicatesNo'include' also returns Che168 listings that duplicate a Dongchedi listing (hidden by default)
has_reportNoOnly cars with an inspection report
mileage_maxNoMaximum mileage in km
export_readyNoOnly cars that can be exported now
reg_year_maxNoFirst registration year to
reg_year_minNoFirst registration year from

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only/open-world, and the description usefully adds dedup behavior (Che168 duplicates hidden unless requested), localized prices in CNY with USD/EUR conversions, and the source aggregation. It omits pagination behavior and any rate/limit constraints, but adds real context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences, zero filler, and front-loaded with what is searched and where the data comes from before moving to units and filter values.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 19-parameter search with no output schema, the description conveys sources, currency and conversion, dedup default, and how to source valid filter values. Return shape and pagination are unstated, but the essential calling context is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 89%, so descriptions for most of the 19 parameters are already in the schema (year_min/max, price, mileage, source, duplicates, etc.). The description only re-states the filter-value lookup convention, adding little that the schema doesn't already carry.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Search live used car listings in China') plus scope details: sources Dongchedi and Che168, duplicate merging, English output. It's clearly distinct from get_chinese_car (detail lookup) and search_korean_cars (different market), though it never names a sibling as the contrasting alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives actionable context: consult chinese_filter_values and chinese_models to get exact make, model, fuel and city values before calling. There is no explicit when-to-use/when-not or routing versus get_chinese_car for single-listing lookups, so it stops short of full guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_korean_carsSearch Korean used carsA
Read-only
Inspect

Search live used car listings in South Korea. Default source is Encar; 'kbc' = KB Chachacha, 'kcar' = K Car, 'all' = all three deduplicated (plan-dependent). Prices are filtered in 10,000 KRW units (e.g. max_price 3000 = 30,000,000 KRW). Returns the total count and compact listings.

ParametersJSON Schema
NameRequiredDescriptionDefault
fuelNo
pageNo
sortNo
limitNoResults per page, default 10
modelNoSpecific generation
sourceNoMarketplace; default encar
categoryNo
max_yearNo
min_yearNo
max_priceNoMaximum price in 10,000 KRW
min_priceNoMinimum price in 10,000 KRW
frame_cleanNoOnly cars with an accident-free chassis frame
max_mileageNoMaximum mileage in km
model_groupNoModel line, e.g. Grandeur, Sorento, 5 Series
manufacturerNoBrand in English, e.g. Hyundai, Kia, Genesis, BMW. Comma = OR
model_searchNoFree-text model search across brands, e.g. 'GV80' or 's63 coupe'
transmissionNo
has_inspectionNoOnly cars with an official inspection report
no_damage_costNoOnly cars with zero insurance-reported repair cost

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description still contributes non-obvious behavior: the plan-dependent deduplication caveat for 'all' and the fact that results are compact listings with a total count, which matters given there is no output schema. It omits rate limits or pagination limits, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tight sentences: purpose first, then source semantics, then the price-unit rule, then the return shape. Each sentence carries information the schema does not, and nothing is repeated from the enum or property descriptions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 19-parameter, zero-required search tool with no output schema, the description covers purpose, source selection, price units, and return shape, which is most of what an agent needs. Remaining gaps (sort default, max limit of 50, and how model/model_group/model_search interact) are modest but real.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds real meaning beyond the schema for two tricky parameters: the source enum ('all' = three marketplaces deduplicated and plan-dependent) and the price unit, with the concrete example max_price 3000 = 30,000,000 KRW that prevents an order-of-magnitude error. It does not clarify the model vs. model_group vs. model_search distinction or pagination behavior across the other 19 parameters, so it stops short of full coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Search live used car listings in South Korea'), which an agent can immediately separate from sibling readers like get_korean_car, get_korean_inspection, or find_korean_models. It also names the sibling market tool implicitly by scoping to South Korea, so search_chinese_cars is not confusable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It documents the default source and the meaning of the 'all' option, which is useful context, but it never says when to use this search tool versus get_korean_car (fetch one listing) or find_korean_models (discover valid model names). No exclusions or prerequisites are given, so usage is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 11 tool updatesv1.2.0
    • First observedchinese_filter_values
    • First observedchinese_models
    • First observedfind_korean_models
    • First observedget_chinese_car
    • First observedget_chinese_inspection
    • First observedget_korean_accident_record
    • First observedget_korean_car
    • First observedget_korean_inspection
    • First observedkorean_filter_values
    • First observedsearch_chinese_cars
    • First observedsearch_korean_cars

TDQS

A3.5/5.0

Scored across 11 tools

Disambiguation4/5

Korean and Chinese tools are cleanly separated by language prefix, and search/get/inspection purposes are distinct. Minor overlap between get_korean_inspection and get_korean_accident_record (both single-car history) and between the two *_filter_values tools could cause occasional misselection, but overall boundaries are clear.

Naming Consistency4/5

Strong verb_noun pattern throughout (search_*, get_*, find_korean_models, *_filter_values). The one deviation is chinese_models lacking a verb while its Korean counterpart is find_korean_models, and get_korean_accident_record is a longer compound, but the scheme is largely predictable.

Tool Count5/5

11 tools is well-scoped for a dual-market used-car search server, with each tool earning its place across two parallel Korean/Chinese surfaces. No bloat or redundancy.

Completeness4/5

Covers search, detail, inspection, accident/insurance, model autocomplete, and filter values for both markets. Chinese lacks a dedicated accident_record (folded into get_chinese_inspection), which is a minor gap but core workflows are covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    D
    maintenance
    Enables access to comprehensive vehicle information including VIN decoding, license plate OCR, vehicle history checks (theft, title, salvage records), market valuations, specifications, and warranty data for vehicles across North America and Europe.
    61
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables searching current used car, truck, and motorcycle parts in the US, resolving vehicles via VIN, and retrieving part listings with source attribution, through read-only MCP tools.
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables querying the official Brazilian vehicle registration (CRLV-e) system with a single read-only tool. Works with any MCP client, featuring prepaid pay-per-use pricing.
    MIT