HashScraper MCP
OfficialHashScraper MCP lets an AI agent collect public web data using ready-made bots and Coupang daily top rankings, with account/credit management and CSV export.
Connect a HashScraper account via browser device login; API key is saved locally and never shown.
Check account email and remaining daily free credits.
Search 120+ built-in data bots for sites like Coupang, Naver, Instagram, YouTube, Olive Young, Musinsa, Kurly, KREAM, maps, app stores, and community boards.
Run a bot to collect public data such as product prices, blog posts, reviews, or map places, using daily free credits by default.
Fetch rows from an earlier run by dataset id if collection is still in progress.
List Coupang categories that have a ready daily best-selling top 30.
Get a Coupang category’s daily top 30 with price, reviews, delivery, and detail-page columns; same snapshot reuse is free.
Save large results to an absolute
.csvpath with UTF-8 BOM for Excel/Korean compatibility.Enforce data-terms acceptance before first paid use and use user-owned credits only when explicitly requested.
Provides ready-made bots for collecting public app store data through the HashScraper service.
Provides bots for collecting public data from Google Maps, such as place and map information.
Provides bots for collecting public Instagram data through HashScraper.
Provides bots for collecting public data from Kakao Maps, such as place and map information.
Provides bots for collecting public Naver data, including Naver blog, cafe, news, and shopping content.
Provides bots for collecting public YouTube data through HashScraper.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@HashScraper MCPSummarize today's prices of the Coupang top 30 for 커피믹스."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
HashScraper MCP
Collect public web data from your AI agent. Ask "Summarize today's prices of the Coupang top 30 for 커피믹스" and the HashScraper MCP server fetches the daily best-seller ranking of the category — with price, reviews, delivery and detail-page columns — or runs one of 120+ ready-made data bots (Naver blog/cafe/news/shopping, Instagram, YouTube, Olive Young, Musinsa, Kurly, KREAM, Google/Kakao maps, app stores, community boards …).
No scraper code and no browser on your side. Node.js 20+ and one line of config.
Every account gets free credits every day (refill at midnight KST). The server uses only the daily free credits unless you tell it to use your own.
Your API key is saved on your computer only (
~/.config/hashscraper/credentials, readable only by you) and is never shown to the agent.
Homepage: https://www.hashscraper.com/mcp?utm_source=mcp&utm_medium=github&utm_campaign=mcp_repo
Install
The server runs locally over stdio: npx -y @hashscraper/mcp.
Claude Code
claude mcp add hashscraper -- npx -y @hashscraper/mcpClaude Desktop
Add to claude_desktop_config.json, then restart Claude Desktop:
{
"mcpServers": {
"hashscraper": {
"command": "npx",
"args": ["-y", "@hashscraper/mcp"]
}
}
}Cursor
Add to ~/.cursor/mcp.json (or the project's .cursor/mcp.json):
{
"mcpServers": {
"hashscraper": {
"command": "npx",
"args": ["-y", "@hashscraper/mcp"]
}
}
}Codex
Add to ~/.codex/config.toml:
[mcp_servers.hashscraper]
command = "npx"
args = ["-y", "@hashscraper/mcp"]MCP Bundle (.mcpb)
To build a one-file bundle for apps that install .mcpb files (it includes the server and its dependencies, and asks for the optional API key):
npm install && npm run pack:mcpb # -> server.mcpbRelated MCP server: FineData MCP Server
Connect once
Ask your agent to "connect HashScraper" (or just ask for some data). It calls the login tool, which returns a link and an 8-character code. Open the link, sign in (or sign up for free with Google or email), check that the code matches, and click Approve and connect. Then tell the agent you approved — it calls login again and the key is saved. You never copy or paste the key.
Prefer your own key? Create one in My page → API and set HASHSCRAPER_API_KEY in the server's environment. It is used before the saved key.
Try these prompts
"Summarize today's prices of the Coupang top 30 for 커피믹스."
"Which Coupang categories can you rank? Compare the top 5 of 에센스 by price."
"Collect 50 Naver blog posts about 성수동 카페 and save them as a CSV."
"What is the price of this Coupang product right now? https://www.coupang.com/vp/products/…"
"How many free credits do I have left today?"
Tools
Tool | What it does | Credits |
| Connect your HashScraper account in the browser (two calls: link, then finish) | free |
| Account email and today's free credits | free |
| Search the built-in list of 120+ bots and their inputs | free |
| Collect with one bot and return the rows (waits up to 55 s, then gives a dataset id) | per row, see |
| Get the rows of an earlier | free |
| Coupang categories with a ready daily top 30 | free |
| Top 30 of a Coupang category with detail columns (collected once a day) | 300 per category per snapshot; fetching the same snapshot again is free |
Large results can be saved to a file with csv_path (an absolute path ending in .csv, UTF-8 with BOM so Excel reads Korean).
Free credits
Free credits refill every day at midnight (KST). Unused credits do not carry over.
When today's free credits run out, the tool stops and tells you when they refill. Your own credits are used only when you ask (
use_credits).
Data terms
The data is for your internal analysis only — no resale or redistribution: https://www.hashscraper.com/data-terms
Before the first command that uses credits, the server stops and shows the terms. Your agent must show them to you and may continue only after you clearly agree (accept_terms). It is asked once per account. The agent never agrees for you.
Privacy
The server collects public pages only and never asks for a site login. It talks only to the HashScraper API (https://www.hashscraper.com/v5/api). The saved key lives in ~/.config/hashscraper/credentials (owner-only) and is shared with the HashScraper Agent Skill. Delete the file to disconnect, or turn the key off in My page → API & integrations.
Need something else?
Missing site or Coupang category, daily scheduled collection, or large volumes? Email help@hashscraper.com with the site, the data you need, how much and how often — or talk to us: https://www.hashscraper.com/quotes/new?utm_source=mcp&utm_medium=github&utm_campaign=mcp_repo
License
MIT. See LICENSE.
Available Tools
7 toolscatalogFind a HashScraper botARead-only
Search the built-in list of 120+ ready-made data bots (Coupang, Naver blog/cafe/news/shopping/maps, Instagram, YouTube, Olive Young, Musinsa, Kurly, KREAM, Google/Kakao maps, app stores, community boards …). Use it to find the worker name and the inputs of a bot before calling run. Works offline; no account needed.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Text to look for in site, bot name, summary and inputs, e.g. "coupang", "naver blog", "reviews". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, and the description adds useful context that the catalog is built-in, works offline, and requires no account. This is meaningful extra behavioral information, though it does not detail matching behavior or return format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and resource, then adds usage and offline context without wasted sentences. The site examples are long but directly useful for recognizing the catalog's scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only discovery tool with one optional parameter and no output schema, the description covers what it searches, why to use it, what to find, and the offline/no-account constraint. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single search parameter is already documented with examples in the schema. The description does not add syntax or matching details beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 the built-in list of 120+ ready-made data bots. It also names the sibling tool it feeds into by saying to find the worker name and inputs before calling run, so an agent can distinguish discovery from execution.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly says to use this tool to find a bot's worker name and inputs before calling run, giving an explicit usage context. It does not spell out when not to use it or cover every sibling alternative, but the intended workflow is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
coupang_categoriesCoupang categories with a daily top 30ARead-only
List the Coupang categories whose daily best-selling top 30 is ready, with the latest snapshot date. Free. Use it to answer "which categories can you rank?" or to pick the right category for coupang_top.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 'Free' and the freshness signal (latest snapshot date), but says nothing about result volume, ordering, or whether categories can disappear between calls — useful but not rich 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero waste: the listing and its freshness come first, then the usage guidance. Every clause carries information an agent would act on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A simple, read-only, no-argument discovery tool whose annotations cover safety, and the description covers purpose, cost, freshness, and the handoff to coupang_top. Only minor gaps remain (no output schema, no hint at result shape beyond the snapshot date), which is adequate for a tool this simple.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and it correctly says nothing about arguments. Baseline 4 applies for a no-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and a precisely scoped resource: Coupang categories whose daily best-selling top 30 is ready, plus the latest snapshot date. It is clearly distinguishable from sibling coupang_top, which it names as the downstream consumer of the category choice.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete use cases ('which categories can you rank?' and picking a category for coupang_top), which is exactly the discovery role an agent needs. It does not explicitly state when NOT to use it, but with only one sibling overlap (coupang_top) the routing is effectively clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
coupang_topCoupang category top 30AIdempotent
Use when the user wants today's best-selling / top 30 products of a Coupang category with price, reviews, delivery and detail-page columns (sale price, coupons, seller type, monthly buyers …), or a price comparison of its top products. The data is collected once a day and reused (snapshot_date says which day). Costs 300 credits per category per daily snapshot, whatever the limit; fetching the same snapshot again is free; daily free credits are used first. A category name that matches several categories, or none, returns a list and charges nothing. The first paid use needs the user's agreement to the data terms (accept_terms).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Rows 1-30 (default 30). The price is the same. | |
| category | Yes | Category id (e.g. "429888") or name (e.g. "커피믹스"). See coupang_categories. | |
| csv_path | No | Absolute path ending in .csv. Saves ALL rows to this file (UTF-8 with BOM, opens in Excel) instead of returning them in the answer. | |
| use_credits | No | Set true only if the user wants to spend their own credits after today's free credits are used up. | |
| accept_terms | No | The data terms version the user was shown and clearly agreed to (e.g. "v0.2"). Only set it after the user agrees; never agree for the user. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations (readOnlyHint=false, idempotentHint=true) by disclosing that data is a once-daily snapshot reused across calls, that each category/day costs 300 credits regardless of limit, that re-fetching the same snapshot is free, that free credits are consumed first, that an ambiguous/non-matching category name returns a list and charges nothing, and that the first paid use requires accept_terms. This is exactly the cost/idempotency/terms context an agent needs before invoking a credit-spending, non-read-only tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The trigger condition is front-loaded in the first clause, and every later sentence carries load-bearing pricing, caching, or terms information. The parenthetical column enumeration ('sale price, coupons, seller type, monthly buyers …') is slightly padded for what it conveys.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, yet the description enumerates the returned columns, names the `snapshot_date` field, and explains the list-return path for ambiguous category names, alongside cost, caching, and consent requirements. An agent has everything needed to call this correctly and to explain the charge to the user.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds real meaning on top by explaining that cost is per category per snapshot regardless of `limit`, that `snapshot_date` reports the caching day, and that `accept_terms` gates only the first paid use. It does not explain how `csv_path` interacts with row return (that stays in the schema), keeping it just short of a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — retrieving today's top 30 best-selling products for a Coupang category, with the exact column set (price, reviews, delivery, detail-page columns) and the optional price-comparison use. It is unmistakably distinct from the sibling tools (login, me, catalog, run, fetch, coupang_categories), which the agent can rule out immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use when the user wants today's best-selling / top 30 products of a Coupang category ... or a price comparison" gives a clear triggering condition. It lacks an explicit 'use coupang_categories first to resolve a name' routing instruction and states no exclusions, so it stops short of a full when/when-not/alternatives treatment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetchGet rows of an earlier runARead-only
Get the rows of an earlier run by dataset id (from run). Use it when run said the collection was still going. Waits up to wait_seconds if it is still collecting. Reading rows costs nothing extra.
| Name | Required | Description | Default |
|---|---|---|---|
| csv_path | No | Absolute path ending in .csv. Saves ALL rows to this file (UTF-8 with BOM, opens in Excel) instead of returning them in the answer. | |
| max_rows | No | Return at most this many rows in the answer (default 100). The summary always shows the total. | |
| dataset_id | Yes | Dataset id returned by run. | |
| wait_seconds | No | How long to wait for the collection in this call (default 45, max 55). If it is not finished, the answer says to call fetch later. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish that this is a read-only, open-world operation. The description adds useful behavioral context beyond annotations: it may wait up to wait_seconds while collection is ongoing, and reading rows incurs no extra cost.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action, followed by usage condition, wait behavior, and cost note. Each sentence adds distinct value with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only fetch tool with rich schema parameter descriptions and no output schema, the description covers purpose, usage, waiting behavior, and cost. It stops short of explaining return shape, but the schema already carries file-saving and row-limit details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters thoroughly. The description adds some clarity around dataset_id coming from run and wait_seconds behavior, but it does not cover csv_path or max_rows beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Get the rows of an earlier run by dataset id.' It also ties the dataset id back to the sibling tool 'run', so an agent can distinguish this fetch operation from run itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear triggering condition: 'Use it when run said the collection was still going.' That is enough to know when this tool is appropriate, though it does not explicitly name alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
loginConnect HashScraper accountA
Connect the user's HashScraper account in the browser (device login, free sign-up included). Use it first when another HashScraper tool says "Not connected", or when the user asks to connect or reconnect. It never blocks for minutes: the first call returns a link and a code to SHOW THE USER; after the user approves in the browser, call login again to finish and save the key. The key is never shown. Skip it if HASHSCRAPER_API_KEY is set.
| Name | Required | Description | Default |
|---|---|---|---|
| restart | No | Throw away a waiting login and start a new link. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the safety profile (non-read-only, open-world, non-idempotent, non-destructive). The description adds the critical behavior an agent cannot get elsewhere: the two-call protocol, the fact that it never blocks, that the first call returns a link and a code that must be shown to the user, and that the key is never exposed. This is exactly the extra context the annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences with zero waste, front-loaded with purpose, then usage triggers, then the call protocol and key-handling note. Every sentence carries information the agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by explaining what the first call returns (link + code), what the second call does (finish and save the key), and what is never shown (the key). For a single-optional-parameter auth tool, nothing necessary is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'restart' parameter is documented in the schema, so the baseline is 3. The description does not mention restart at all, but the two-step flow it describes implies state that makes restart meaningful.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names a specific verb and resource ('Connect the user's HashScraper account') plus the mechanism (browser device login, free sign-up). An agent immediately knows this is an authentication/onboarding tool, which is clearly distinct from the data-oriented siblings (coupang_top, catalog, run, fetch).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit triggers ('Use it first when another HashScraper tool says "Not connected", or when the user asks to connect or reconnect') and an explicit exclusion ('Skip it if HASHSCRAPER_API_KEY is set'). Both when-to-use and when-not-to-use are stated, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meAccount and daily free creditsARead-only
Show the connected account's email and how many daily free credits are left today (they refill at midnight KST). Use before a paid-looking collection to check what is free.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the description is not carrying the safety burden. It still adds genuinely useful behavior the schema cannot express: credits refill at midnight KST, which affects when a result goes stale, and it implies an authenticated-account prerequisite via 'connected account'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, both earning their place: the first defines the payload, the second defines the call site. The timezone caveat is parenthetical rather than buried, and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and no output schema, the description has to describe the return values itself, and it does: email plus remaining daily credits. The only minor gap is what happens when no account is connected, which an agent may hit given the 'login' sibling exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing to disambiguate and the baseline is 4. The description correctly adds no parameter noise and instead spends its words on the returned values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The name 'me' is opaque, but the description immediately specifies the resource and returned fields: the connected account's email and remaining daily free credits. It implicitly distinguishes itself from the 'login' sibling by scoping to an already-connected account, though it never names that distinction explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete trigger: 'Use before a paid-looking collection to check what is free.' That tells the agent when to reach for this tool rather than spending credits blindly. No explicit when-not or named alternative is provided, but no sibling meaningfully competes for this purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
runCollect data with a botA
Collect public web data with one HashScraper bot (find the worker with catalog first) and return the rows — e.g. a Coupang product page's price, 50 Naver blog posts for a keyword, reviews, map places. Uses only the daily free credits unless use_credits=true. The first paid use needs the user's agreement to the data terms (accept_terms). It waits up to wait_seconds; if the bot is still collecting it returns a dataset id — call fetch later instead of running again.
| Name | Required | Description | Default |
|---|---|---|---|
| inputs | No | Bot inputs: keys are "param1"… or the input name / English name from catalog; values are text (several URLs or keywords: an array or one per line). Omitted inputs use the bot's saved settings. | |
| worker | Yes | Worker name from catalog, e.g. "DemoCoupangDetailWorker". | |
| csv_path | No | Absolute path ending in .csv. Saves ALL rows to this file (UTF-8 with BOM, opens in Excel) instead of returning them in the answer. | |
| max_rows | No | Return at most this many rows in the answer (default 100). The summary always shows the total. | |
| use_credits | No | Set true only if the user wants to spend their own credits after today's free credits are used up. | |
| accept_terms | No | The data terms version the user was shown and clearly agreed to (e.g. "v0.2"). Only set it after the user agrees; never agree for the user. | |
| wait_seconds | No | How long to wait for the collection in this call (default 45, max 55). If it is not finished, the answer says to call fetch later. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false; the description adds the behavior that actually matters: credit consumption (daily free credits unless use_credits=true), a terms-consent gate that must not be forged by the agent, and the async timeout return path (dataset id + later fetch). It also discloses the non-idempotent cost of re-running, matching the annotations rather than contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with the core action and cost model, then the timeout fallback. The heavy parenthetical packing and em-dash example list make it denser than ideal, but no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the whole call cycle an agent needs for a 7-param, nested-object tool: prerequisite lookup, credit and consent gating, wait behavior, and what comes back (rows, a CSV path, or a dataset id for later fetch) even though there is no output schema. Nothing required to invoke it correctly is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds cross-parameter semantics the schema can't: the `wait_seconds` timeout producing a dataset id instead of rows, and the credit/terms conditions governing `use_credits` and `accept_terms`. It does not explain `max_rows` vs `csv_path` interaction (only the schema does that), so it stops short of a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource ("Collect public web data with one HashScraper bot and return the rows") and grounds it with examples of bot outputs (product price, blog posts, reviews, map places). It also names the sibling it depends on ("find the worker with catalog first") and the fallback sibling (`fetch`), so an agent can distinguish it from catalog/fetch without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing rules: look up the worker in `catalog` before calling, call `fetch` later instead of running again if collection is unfinished, and set `use_credits` only when the user wants to spend their own credits. It also gives a hard precondition for `accept_terms` (only after the user agrees). Both the when and the when-not cases are covered.
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.
7 tool updates
v0.1.0- First observed
catalog - First observed
coupang_categories - First observed
coupang_top - First observed
fetch - First observed
login - First observed
me - First observed
run
TDQS
Scored across 7 tools
Most tools have clearly separate roles: login (auth), me (account/credits), catalog (bot discovery), run (execute), fetch (retrieve results), and the two Coupang-specific helpers. The only soft overlaps are catalog vs coupang_categories (both are 'list what's available') and coupang_top vs run (both can return Coupang product data), but the descriptions draw the line reasonably well by cost model and data source.
The set mixes bare single-word verbs/nouns (login, me, catalog, run, fetch) with prefixed snake_case resource names (coupang_top, coupang_categories). Individual names are readable and none are cryptic, but there is no single predictable convention across the set.
Seven tools is well-scoped for an auth + discovery + execute + retrieve + domain-shortcut surface. Each tool has a distinct job (connect, check credits, find a bot, run it, fetch results, and two Coupang shortcuts), with no filler.
The core lifecycle is covered: connect, check quota, discover bots, execute, and retrieve async results, plus Coupang-specific convenience paths. Minor gaps exist — no logout/revoke, no way to list past datasets or usage history, and accept_terms is referenced only as an implied step rather than its own operation — but agents can work around these.
Maintenance
Related MCP Connectors
Public web data for AI agents: scrape any page, plus Google, TikTok, Instagram and Amazon as JSON.
Public web data as clean JSON for AI agents: Google, Amazon, TikTok, Instagram, YouTube, LinkedIn, Google Maps, Reddit, Zillow and hundreds more websites. One API key, pay per call, failed calls are free.
Proxy-rotated web scraping and cross-platform intelligence for AI agents.
Jobs, ads, SEO, keywords, YouTube and AliExpress data for AI agents. Runs on Apify.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables web scraping, crawling, structured data extraction, and browser automation through multiple AI agents including OpenAI's CUA, Anthropic's Claude Computer Use, and Browser Use.6 npmMIT
- AlicenseAqualityCmaintenanceEnables AI agents to scrape any website by providing tools for JavaScript rendering, antibot bypass, and automatic captcha solving. It supports synchronous, asynchronous, and batch scraping operations with built-in proxy rotation.5207 npm30 PyPIMIT
- AlicenseAqualityCmaintenanceEnables AI agents to crawl, scrape, search, and automate browsers with anti-bot bypass, providing fast web access via 22 tools.2236 npm3MIT
- AlicenseBqualityDmaintenanceEnables AI agents to browse and extract data from any public website via Bright Data's cloud infrastructure, handling proxy rotation, CAPTCHA solving, and JavaScript rendering.57MIT