Skip to main content
Glama
EuroScrape

EuroScrape MCP server

Official

EuroScrape MCP server

Twenty data tools for AI agents: flight, hotel and electricity prices, second-hand marketplaces, company data and leads, EU and French open data. Each tool runs one of the EuroScrape Actors on Apify and returns structured JSON.

Works with Claude Desktop, Claude Code, Cursor, VS Code and any MCP client.

  • Runs on your own Apify account. You pay Apify per result, at the price shown on each Actor's page. No subscription, nothing goes through us.

  • A spending cap on every call (0.50 USD by default), so an agent cannot start an expensive run by mistake.

  • Cautious defaults: an agent that forgets a limit gets 10 to 50 rows, not thousands.

Install

You need an Apify API token (Apify Console → Settings → API & Integrations). Apify's free plan includes 5 USD of usage per month.

Claude Desktop, in one click

Download euroscrape-mcp.mcpb and open it, or drag it into Settings → Extensions. Claude Desktop asks for your Apify API token and installs the server; nothing else to set up.

Any MCP client

With Node.js 18 or later, add this to your MCP client configuration (for Claude Desktop: claude_desktop_config.json):

{
  "mcpServers": {
    "euroscrape": {
      "command": "npx",
      "args": ["-y", "github:EuroScrape/euroscrape-mcp"],
      "env": { "APIFY_TOKEN": "YOUR_APIFY_TOKEN" }
    }
  }
}

Claude Code:

claude mcp add --env APIFY_TOKEN=YOUR_APIFY_TOKEN euroscrape -- npx -y github:EuroScrape/euroscrape-mcp

Related MCP server: AXE Fleet MCP Server

Tools

Tool

What it returns

Actor

get_electricity_prices

Day-ahead electricity prices for 40+ European bidding zones, with the cheapest window of each day

eu-electricity-prices

search_flights

Google Flights prices for a route and dates, cheapest day to fly, typical price range

google-flights-prices

find_ryanair_fares

Ryanair fare calendar of a route, or every destination under a price cap from an airport

ryanair-low-fares

search_hotels

Google Hotels prices, optionally on every booking site

google-hotels-prices

search_second_hand_europe

One search on the top second-hand marketplace of 18 countries, prices in euros, median per country

eu-marketplace-deals

search_vinted

Vinted listings in up to 26 countries, prices with buyer fees

vinted-scraper

search_kleinanzeigen

Kleinanzeigen ads with a deal score against the market price

kleinanzeigen-scraper

find_new_companies_without_website

Newly registered companies (UK, France, five US states) with no website yet

no-website-leads

search_uk_companies

Companies House data by SIC code, town or incorporation date

uk-companies

search_french_companies

SIRENE data by activity, department and size

france-companies

validate_eu_vat_numbers

VIES check of EU VAT numbers, with an official consultation number

vat-validator

get_company_behind_website

The legal entity behind a European website, from its legal notice

company-identity

detect_website_tech_stack

Technologies used by a website (280+), with sales signals

website-intelligence

search_eu_public_tenders

Open tenders and contract awards in Europe and France

eu-public-tenders

get_france_property_sales

Real property sales in France (DVF), price per m2, energy class

france-property-prices

get_france_energy_ratings

Energy performance certificates of French homes (DPE)

france-energy-ratings

get_france_building_permits

Building permits in France (Sitadel), with the applicant company

france-building-permits

get_france_fuel_prices

Live fuel prices of the stations around a French city

france-fuel-prices

get_app_reviews

App Store and Google Play reviews by country

app-reviews

search_trusted_shops

Online shops listed on Trusted Shops, or the reviews of a shop

trusted-shops-scraper

get_run_results

The results of a call that was still running when it returned (free)

Every tool description states its price. The full list of parameters is in tools.json.

What a call does

  1. Starts the Actor on your Apify account with your arguments and the spending cap.

  2. Waits for the run to finish (up to four minutes; after that, get_run_results picks it up).

  3. Returns the first rows as JSON, summary rows first, with the total count and a link to the full dataset in Apify Console.

Settings

Optional environment variables:

Variable

Default

Meaning

EUROSCRAPE_MAX_USD_PER_CALL

0.5

Spending cap of one call, in USD (Apify stops the run when it is reached)

EUROSCRAPE_MAX_ITEMS

50

Rows returned to the agent per call (the full result stays in your dataset)

EUROSCRAPE_MAX_CHARS

40000

Size limit of one answer, to protect the agent's context

EUROSCRAPE_TIMEOUT_SECONDS

240

How long a call waits for the run

Prefer a hosted server?

Apify hosts an MCP server that can load the same Actors, with OAuth and no local install:

https://mcp.apify.com?tools=euroscrape/eu-electricity-prices,euroscrape/google-flights-prices

This repository is the local alternative, with short tool names, cautious defaults and a spending cap.

Privacy Policy

The server runs on your computer and EuroScrape collects nothing through it: no analytics, no telemetry. Tool arguments and your Apify API token go only to the Apify API, so that the Actor runs on your own Apify account; the server writes nothing to disk. Full policy: euroscrape.github.io/apify-actors/privacy.html.

Development

npm install
npm test                                   # lists the tools and checks their schemas, no Apify call
APIFY_TOKEN=... node test/check.mjs --live # also runs one real, cheap call

Input examples, sample outputs and write-ups: euroscrape.github.io/apify-actors.

MIT license.

Available Tools

21 tools
detect_website_tech_stackWebsite Technology Stack Detector: Tech Stack API, CMS & LeadsB
Read-only

Detects the technologies of websites (280+: CMS, e-commerce, analytics, consent tools...) with the company identity from the legal notice and sales signals. Pay per result on your Apify account: run start $0.003, website analyzed $0.02, google search page $0.004.

ParametersJSON Schema
NameRequiredDescriptionDefault
websitesNoWebsites or domains to analyze, one per line (e.g. "example.com").
includeIdentityNoRead the legal notice (Impressum, mentions légales…) to get the legal name, registry numbers, VAT IDs, managing directors, emails and phones.

TDQS

B3.2/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 genuinely useful behavioral context the annotations lack: the pay-per-result cost model with specific prices (run start $0.003, per website $0.02, google search page $0.004). It doesn't cover return format or rate/pagination behavior, so a 3 is appropriate.

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?

Two sentences, front-loaded with the core capability, followed by the cost model. Every clause carries information. The pricing enumeration is slightly dense but relevant to an agent assessing execution.

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 read-only detection tool with full schema coverage and no output schema, the description covers purpose and cost reasonably well. However, with no output schema present, it could describe what the detection returns (tech categories, identity fields, signals) and it omits usage routing, leaving the definition adequate but with clear gaps.

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 the schema already fully documents both parameters (websites, includeIdentity). The description adds no syntax or format detail beyond the schema, so the 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?

States a specific verb+resource ('Detects the technologies of websites') and quantifies scope ('280+: CMS, e-commerce, analytics, consent tools'). It also mentions the company-identity/sales-signal enrichment, though it doesn't explicitly distinguish itself from the sibling get_company_behind_website, whose scope overlaps via the legal-notice identity extraction.

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?

The description never says when to use this tool versus alternatives or in what scenarios. With a sibling like get_company_behind_website and get_run_results, an agent gets no routing guidance. The only extra context is pricing, which is not usage guidance.

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

find_new_companies_without_websiteNo-Website Leads: New Businesses Without a Website (US, UK, FR)A
Read-only

Companies registered in the last days in the UK, France and five US states (Texas, New York, Colorado, Connecticut, Oregon) that have no website yet, from official registers, with the creation date of their domain name when one exists. Companies only, no director names. Pay per result on your Apify account: run start $0.003, no-website lead $0.005, new company with a website, or undecided $0.002.

ParametersJSON Schema
NameRequiredDescriptionDefault
outputNo"Without a website" returns every company with no site of its own, and tells whether a domain name at its name exists and when it was created. "Domain just bought" keeps only the companies whose domain was created around their registration and shows no site yet: they are about to need one. "All" also returns the companies that already have a website, with emails and phones found on it.
maxItemsNoThe run stops when this many leads are saved. Default here: 25.
usStatesNoStates to read. Leave empty for the five of them. Texas publishes a new company about ten days after its charter date, and Oregon updates its list once a week: set "Registered in the last N days" to 21 or more to get all of them.
countriesNoRegisters to read. With several, leads are taken from each country in turn. United States: five states publish their new companies as open data (New York, Texas, Colorado, Connecticut, Oregon).
ukLocationsNoRegistered office contains one of these, e.g. "Leeds", "Manchester", "SW1". Leave empty for the whole UK.
usLocationsNoCity names, e.g. "Denver", "Hartford", "Boulder". For New York, county names work too: "Kings" (Brooklyn), "Queens", "Albany". Leave empty for the whole state.
frDepartmentsNoDepartment numbers, e.g. "75", "69", "13", "2A". Leave empty for all of France.
activityKeywordsNoKeep companies whose activity or name contains one of these, e.g. "restaurant", "plumbing", "coiffure", "beauty salon". Several words in one entry must all be present. UK activities are the official SIC descriptions (in English); French activities are written in French; in the US only Connecticut publishes an activity, so the name is what counts for New York, Colorado, Texas and Oregon. Leave empty for every activity.
registeredInLastDaysNoUK and US: registration date. France: date of the official notice, published a few days after the registration. The most recent companies come first.

TDQS

A4/5.0
Behavior4/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 adds genuinely extra context beyond the structured fields: official-register provenance, an explicit exclusion (no director names), a domain-creation-date signal, and per-result pricing tiers, which functions like a rate/cost disclosure.

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?

Front-loaded with what is returned before the pricing detail, and every clause carries information (geography, source, exclusions, cost). It is dense but not padded; only the pricing enumeration at the end is slightly heavy for a description field.

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

Completeness5/5

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

For a 9-parameter, zero-required, filter-style tool with no output schema, the description supplies what the schema cannot: data provenance, geographic coverage caveats, the meaning of the lead signals, and cost per result. 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.

Parameters3/5

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

Schema description coverage is 100% and the enum for 'output' is documented in the schema itself, so the baseline is 3. The description only restates the scope (US/UK/FR, official registers, companies only) and adds pricing tied to result types, without meaningful parameter syntax or format detail beyond the schema.

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?

States a precise verb and resource (find newly registered companies without a website) plus exact scope: UK, France, and five named US states, sourced from official registers. This is readily distinguishable from siblings like search_uk_companies or search_french_companies because the no-website filter and recency window are named 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 conveys the context in which this tool applies (new companies lacking a website) but never routes the agent between this and the overlapping sibling tools (search_uk_companies, search_french_companies), nor states when not to use it. Usage is implied rather than explicit.

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

find_ryanair_faresRyanair Low Fare Finder: Cheapest Days, Anywhere & AlertsA
Read-only

Ryanair fares: the cheapest fare per day for a route (fare calendar), or every destination under a price cap from an airport. Pay per result on your Apify account: run start $0.003, calendar fare $0.0005, destination deal $0.001.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateToNoLatest departure date (default: in 31 days).
monthsNoHow many months of the fare calendar to load. Default here: 1.
routesNoAirport pairs like "BVA-AGP" or "BER → ALC": you get the cheapest fare for every day of the chosen months.
airportsNoAirport codes or names ("BVA", "Paris Beauvais", "Berlin"): you get the cheapest fare to every destination Ryanair serves from there.
currencyNoCurrency of the fares.
dateFromNoEarliest departure date for the cheapest-destination search (default: tomorrow).
maxPriceNoOnly destinations with a fare at or below this price ("where can I fly for under 20?").
roundTripNoAlso load the return-leg calendar (Ryanair prices are per leg: a return is two one-ways).
maxDestinationsPerAirportNoCheapest first. Default here: 25.

TDQS

A3.7/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 the safety profile is covered structurally. The description adds genuinely useful non-obvious context: the pay-per-result cost model with per-call and per-result prices, which affects how an agent should budget and invoke the tool. It stops short of any rate-limit or reliability notes.

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?

Two sentences, front-loaded with the functional scope before the pricing detail. Every clause carries information. The pricing sentence is dense with three price points but is relevant to invocation cost, not 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 9-parameter, no-required-parameter tool with no output schema, the description covers both modes and the cost model, which is what an agent needs to decide and budget. It does not describe the returned structure or any caps on result volume, leaving a minor gap that the schema partially fills via maxDestinationsPerAirport.

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%, and the schema itself explains modes, defaults, formats, and even the per-leg pricing note. The description adds no parameter-level detail beyond what the schema already provides, so the baseline of 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?

States a specific resource (Ryanair fares) and cleanly separates two operating modes: the per-day fare calendar for a route, and every destination under a price cap from an airport. An agent can tell what it does without opening the schema. It does not, however, differentiate itself from the sibling search_flights tool, which is the nearest overlap.

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 two modes are implied by which parameters are supplied (routes vs airports), so usage is inferable rather than stated. There is no explicit 'use this instead of X' guidance and no exclusion relative to search_flights, so the agent must reason about selection. Adequate but with a clear gap.

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

get_app_reviewsApp Store Reviews Scraper + Google Play Reviews (All Countries)A
Read-only

App Store and Google Play reviews of an app in the countries you choose: rating, text, version, date, developer reply, and a summary by version and country. Pay per result on your Apify account: run start $0.003, review delivered $0.0002.

ParametersJSON Schema
NameRequiredDescriptionDefault
appsNoApp Store URLs or IDs (e.g. https://apps.apple.com/us/app/instagram/id389801252 or id389801252) and Google Play URLs or package names (e.g. com.spotify.music). Mix both stores freely.
sortByNoWhich reviews first.
appNamesNoJust type the app name (e.g. "Duolingo"): the Actor finds it on the App Store and on Google Play.
countriesNoReviews differ per country: each country is a separate storefront.
maxRatingNoE.g. 2 = only negative reviews.
maxReviewsPerCountryNoThe App Store gives at most 500 recent reviews per country; Google Play has no such limit. Default here: 25.

TDQS

A3.9/5.0
Behavior4/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 adds genuinely new context beyond structured data: the pay-per-result billing model with specific prices (run start $0.003, review delivered $0.0002) and the aggregated summary output. Only the run-behavior (async job, pagination) is left unstated.

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?

Two sentences, front-loaded with the capability and returned fields, then pricing. Every clause carries information, though the title's 'All Countries' is somewhat redundant with the body.

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 six-parameter, zero-required tool with no output schema, the description covers what it returns, the two stores, and the cost model, which is enough to call it correctly. Minor gaps (async execution, run limits) remain but are non-blocking.

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 all six parameters are already documented in the schema, including examples and the country enum. The description only loosely references 'the countries you choose' and 'summary by version and country,' adding no syntax or default detail beyond the schema. Baseline 3 is correct.

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?

States a specific verb+resource (fetch App Store and Google Play reviews of an app) and enumerates the returned fields (rating, text, version, date, developer reply, summary by version/country). No sibling tool covers reviews, so the agent can distinguish it instantly.

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 implied by the purpose (use it to scrape reviews for chosen countries), but there is no explicit when-to-use vs when-not, no prerequisites, and no alternative named. Adequate but leaves selection reasoning to inference.

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

get_company_behind_websiteImpressum & Legal Notice Scraper: VAT, Registry, ContactsA
Read-only

Reads the legal notice or Impressum of European websites and returns the company behind each one: legal name and form, registry numbers, VAT ID, address, emails and phones. Pay per result on your Apify account: run start $0.003, website identified $0.004, google search page $0.004.

ParametersJSON Schema
NameRequiredDescriptionDefault
websitesNoCompany websites or domains, one per line (e.g. "example.de", "https://www.example.fr").
verifyInRegistryNoCheck the identity found on the website against the official register (France: INSEE/INPI, UK: Companies House): official name, status (active/ceased), activity, headcount, directors, and whether the names match. Free.

TDQS

A4.1/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 adds genuinely useful beyond-annotation context: the per-event cost model (run start $0.003, website identified $0.004, google search page $0.004) and the Apify account billing requirement, which the agent cannot get from structured fields.

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 front-loaded sentences: the first states purpose and return payload, the second states the cost model. No padding or redundancy.

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

Completeness5/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 carries the return-value burden and does so by enumerating the extracted fields. Combined with readOnly/openWorld annotations and 100% schema coverage, an agent has everything needed to call it 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 100%, so both parameters (websites, verifyInRegistry) are fully documented in the schema. The description adds no parameter-level syntax or format detail beyond what the schema provides, so the baseline of 3 applies.

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?

States a specific verb and resource (reads the legal notice/Impressum of European websites) and enumerates the returned fields, so the agent knows exactly what it extracts. This clearly separates it from siblings like search_uk_companies or validate_eu_vat_numbers, which search or validate by name rather than resolving a website to a company.

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 implied by the input (you supply websites), but there is no explicit when-to-use, when-not-to-use, or named alternative among the siblings. The agent must infer that this is the website-to-company path rather than a registry lookup.

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

get_electricity_pricesEU Electricity Prices API: Day-Ahead Power Prices & Cheap HoursA
Read-only

Day-ahead electricity prices for 40+ European bidding zones, hourly or 15-minute, with a summary per zone and day: cheapest window, minimum, maximum, average, negative-price hours. Without dates: today and tomorrow (tomorrow is published around 13:00 CET). Pay per result on your Apify account: run start $0.003, price row $0.0002.

ParametersJSON Schema
NameRequiredDescriptionDefault
zonesNoZone codes (FR, DE-LU, SE3, IT-North…) or country names ("Germany", "Denmark" = all its zones) — or "all" for every European zone.
dateToNoDefault: tomorrow (published around 13:00 CET).
dateFromNoDefault: today. Historical data goes back years.
resolutionNoHourly rows (average of the four 15-minute prices) or the raw 15-minute market prices.
windowHoursNoEach day summary finds the cheapest and the most expensive consecutive block of this length: 3 h for a washing cycle or a water heater, 4 to 6 h for an EV charge.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly and openWorld, so the safety profile is covered. The description adds real behavioral value beyond that: the pay-per-result cost model ($0.003 start, $0.0002 per row) and the fact that tomorrow's data is published around 13:00 CET — both actionable expectations.

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?

Dense and front-loaded: resource and scope first, then defaults, then pricing. Every sentence earns its place, though the pricing sentence is somewhat tangential to invocation.

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

Completeness5/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 steps in to describe the returned shape (per-zone/day summary with cheapest window, min, max, average, negative-price hours), covering what an agent needs to interpret results.

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 100%, so all five parameters are already documented in the schema, including defaults and semantics. The description's mention of summary fields and negative-price hours adds context but no parameter-level syntax beyond the schema, so the baseline 3 is appropriate.

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?

States a specific verb+resource ('Day-ahead electricity prices') with scope (40+ European bidding zones, hourly or 15-minute) and output content. An agent can immediately tell what this tool returns and no sibling covers the same ground.

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 concrete usage context: omitting dates returns today and tomorrow, with the publication timing noted. It doesn't state exclusions or point at alternatives, but the tool's niche is unique among its siblings so no routing guidance is needed.

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

get_france_building_permitsFrance Building Permits (Sitadel): Projects, Builders & AlertsB
Read-only

Building permits in a French city or department (official Sitadel register): project, dwellings, floor area, status, and the applicant company with its SIREN. Pay per result on your Apify account: run start $0.003, building permit $0.003.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusesNoAuthorized = permit granted, works not declared yet. Started = site opened. The default (authorized + started) is the pipeline of upcoming and ongoing works.
locationsNoFrench cities ("Grenoble"), postal codes ("38000"), arrondissements ("Lyon 3e") or whole departments by number ("38", "69", "2A").
monthsBackNoPermits authorized in this many months before today. The register goes back to 2013.
permitTypesNoHousing = permits creating dwellings. Non-residential = shops, offices, industry, warehouses, farm and public buildings. Land development = subdivisions and serviced plots.
minDwellingsNoHousing permits only — e.g. 10 to keep developer programmes and skip single houses.
minFloorAreaNoApplies to housing and non-residential permits.
maxPermitsPerLocationNoMost recently authorized first. Default here: 25.

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 the safety profile is covered. The description adds genuinely useful non-annotation context: per-result pricing (run start $0.003, building permit $0.003) on the Apify account. It does not describe rate limits, pagination, or result ordering beyond what the schema states.

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?

Two sentences, both front-loaded: what data is returned first, then cost. No filler. Slightly terse on usage, but structure is clean and efficient.

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, the description helpfully enumerates returned fields (project, dwellings, floor area, status, applicant SIREN), compensating well. Annotations cover safety and the schema covers all parameters. Missing only minor operational detail like pagination or ordering, which the schema partly implies.

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 each parameter (statuses, locations, monthsBack, permitTypes, etc.) is already fully documented in the schema, including defaults and semantics. The description adds no parameter syntax or format detail beyond that, 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?

States a specific resource (French building permits from the official Sitadel register) and enumerates the returned fields — project, dwellings, floor area, status, and applicant company SIREN. It is clearly distinct in domain from siblings like get_france_property_sales or search_french_companies, though it does not name them explicitly.

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 guidance on when to use this tool versus alternatives. There are several adjacent French/company siblings (get_france_property_sales, search_french_companies) and no routing or exclusion is offered. The agent must infer usage entirely from the data domain.

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

get_france_energy_ratingsFrance Energy Ratings (DPE): Homes, Energy Certificates, SievesA
Read-only

Energy performance certificates (DPE, ADEME open data) of homes in a French city or postal code: energy and CO2 class, surface, consumption, estimated yearly bill. Pay per result on your Apify account: run start $0.003, energy rating $0.001.

ParametersJSON Schema
NameRequiredDescriptionDefault
ratingsNoKeep only these DPE classes. F and G are the "energy sieves" (passoires thermiques). Leave empty for all classes.
locationsNoFrench cities ("Grenoble"), postal codes ("38000") or INSEE codes. Paris, Lyon and Marseille cover all their arrondissements.
propertyTypeNoApartments, houses, or both.
maxRatingsPerLocationNoMost recent certificates first. Default here: 25.

TDQS

A3.9/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 the safety profile is covered. The description goes beyond them by disclosing the pay-per-result cost model (run start $0.003, energy rating $0.001), a genuinely useful economic trait absent from structured fields. It does not describe pagination cost behavior, which keeps it short of 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?

Two sentences with zero waste: the purpose and returned fields are front-loaded, then the pricing detail follows. Every clause earns its place.

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

Completeness5/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 carries the return-value burden and does so explicitly (energy and CO2 class, surface, consumption, estimated bill). Safety is covered by annotations and cost by the description, leaving nothing an agent needs missing.

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 the schema already documents all four parameters (including the F/G 'passoires thermiques' nuance and Paris/Lyon/Marseille arrondissement behavior). The description only obliquely echoes the 'city or postal code' location input and adds no syntax detail beyond the schema. Baseline 3 applies.

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?

States a specific verb and resource (energy performance certificates / DPE for homes in a French city or postal code) and names the authoritative source (ADEME open data). The listed payload (energy and CO2 class, surface, consumption, estimated yearly bill) makes it unmistakably distinct from sibling French-data tools like get_france_property_sales and get_france_building_permits.

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?

The description explains what the data is but gives no routing guidance: no when-to-use conditions and no mention of alternatives against siblings like get_france_property_sales. An agent must infer the use case from the resource name alone.

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

get_france_fuel_pricesFrance Fuel Prices: Gas Station Prices, Diesel Prices & AlertsA
Read-only

Live official fuel prices of the stations around a French city, postal code or GPS point, cheapest first, with the local spread. Pay per result on your Apify account: run start $0.003, station $0.001.

ParametersJSON Schema
NameRequiredDescriptionDefault
fuelsNoThe first fuel drives the sorting (cheapest first).
radiusKmNoStations within this distance of each location.
locationsNoFrench cities ("Grenoble"), postal codes ("38000") or GPS points ("45.19,5.72").
maxStationsPerLocationNoCheapest first (by the first fuel). Default here: 15.

TDQS

A3.8/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 genuinely useful cost behavior (pay-per-result: run start $0.003, station $0.001) and the sorting rule, but says nothing about auth, rate limits, or return shape.

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 tight sentences with the core purpose front-loaded and the pricing note trailing. No filler or restated naming.

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 read-only, 100%-documented search tool with no output schema, the description covers purpose, ordering, and cost. Only the returned fields/format are left implicit, which is a minor 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?

Schema description coverage is 100%, so parameters are fully documented in the schema. The description only reinforces the 'cheapest first / first fuel drives sorting' behavior already stated in the schema, adding no new syntax or format detail.

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?

States a specific verb and resource (live official fuel prices of stations), the geographic scope (French city, postal code or GPS point), and the ordering (cheapest first). It is unmistakably distinct from siblings like get_electricity_prices or get_france_property_sales.

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 when the tool is useful (looking up nearby station fuel prices for a French location), but it names no alternatives and gives no when-not-to-use guidance. Usage is inferred rather than stated.

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

get_france_property_salesFrance Real Estate Sold Prices (DVF): €/m², Sales & TrendsA
Read-only

Real property sales in France (official DVF data) for a city or postal code: price paid, price per m2, surface, rooms, date, with the energy class of the home when known and a median price summary. Pay per result on your Apify account: run start $0.003, property sale $0.0005.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearsNoSale years to load, between 2021 and 2025 (the State publishes DVF data with a few months of delay, in April and October).
locationsNoFrench cities, postal codes or INSEE codes: "Grenoble", "Paris", "38000", "33063"… Paris, Lyon and Marseille automatically cover all their arrondissements.
maxSurfaceNoKeep sales up to this living surface.
minSurfaceNoKeep sales with at least this living surface.
propertyTypesNohouse, apartment, commercial, land, outbuilding.
includeRentalYieldNoFor each sale: the State's asking-rent indicator of the commune for a typical home of that kind (Carte des loyers, charges included), and the gross yield it implies at the real sale price. The free summary gives median yields per city and ranks communes or arrondissements. Free, no extra time.
includeEnergyRatingNoMatches each sale to its official energy performance certificate (ADEME open data): energy class A-G, CO2 class, kWh/m²/year and certificate date. Free. A class is only attached when the address, property type, surface and date agree; about one sale in two gets one.
maxSalesPerLocationNoMost recent first. Summary statistics still use ALL matching sales. Default here: 50.

TDQS

A3.5/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 the safety profile is covered. The description adds genuinely new behavioral context beyond structured fields: an explicit pay-per-result pricing model (run start $0.003, $0.0005 per sale), which is actionable operational information for an Apify actor.

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?

Two sentences, front-loaded with the core purpose and output fields, with the pricing note parked at the end. Dense but every clause adds information; 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?

With 8 fully-documented parameters, no output schema, and read-only annotations, the description covers what the tool returns, its geographic scope, and its cost model. Nothing essential for correct invocation is missing, though return-format and volume expectations are left to the schema.

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 the schema already documents all 8 parameters in detail (year ranges, INSEE codes, surface filters, yield/energy flags). The description adds little parameter-level meaning beyond restating that a city or postal code is the target. Baseline 3 applies when the schema does the heavy lifting.

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 (real property sales in France, official DVF data) plus the returned fields (price paid, price per m2, surface, rooms, date, energy class, median summary). This is clear enough to distinguish from generic data tools, though it never explicitly distinguishes itself from France-specific siblings like get_france_building_permits or get_france_energy_ratings.

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?

It states the scope ('for a city or postal code') but gives no when-to-use/when-not guidance and names no alternative among the France siblings. The agent must infer usage from the domain alone.

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

get_run_resultsA
Read-only

Fetches the results of a previous call that was still running when it returned (use the runId it gave you). Free: no new run is started.

ParametersJSON Schema
NameRequiredDescriptionDefault
runIdYesThe runId returned by a previous tool call.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description adds genuinely new behavioral context beyond that: 'Free: no new run is started', which tells the agent this poll costs nothing and does not re-trigger work. It does not describe what the result payload contains, but it covers the cost/idempotency trait that matters most for a polling call.

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, front-loaded with what the tool does and followed by the cost behavior. Nothing is redundant and no padding is present.

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

Completeness5/5

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

For a one-parameter async polling tool with full schema coverage and a documented read-only annotation, the definition supplies everything needed: the trigger condition, the argument source, and the fact that it is free. No output schema exists, so return-shape documentation is not required.

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 100% with a single required parameter whose schema description already says it is 'the runId returned by a previous tool call.' The description restates that origin, adding no syntax, format, or edge-case detail beyond the schema, so the 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?

States a specific verb and resource (fetches the results of a previous call) plus the qualifying condition that the call was still running. This is unambiguous and clearly distinguishable from every sibling tool, which are all discovery/search tools rather than an async continuation endpoint.

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 an explicit trigger condition ('a previous call that was still running when it returned') and tells the agent where the argument comes from ('use the runId it gave you'). No alternatives or exclusions are named, but no sibling occupies this niche, so the omission is minor.

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

search_eu_public_tendersEU Public Tenders Scraper: TED, BOAMP, Awards & Tender AlertsA
Read-only

Public tenders and contract awards in Europe (TED) and France (BOAMP, DECP) by keyword, CPV code and country: buyer, value in euros, deadline; for awards, the winner, the amount and the number of bids. Pay per result on your Apify account: run start $0.003, open tender delivered $0.003, contract award delivered $0.005.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoOpen tenders: calls for tender you can still bid on (deadline, estimated value, buyer contact, documents link). Contract awards: who won which contract, for how much and against how many bids (winners with company details).
cpvCodesNoOfficial EU procurement categories, as codes or prefixes: "72" = IT services, "48" = software packages, "45" = construction work, "79" = business services, "90" = cleaning & environment, "33" = medical equipment, "71" = architecture & engineering. The most reliable filter across languages.
keywordsNoWords or phrases searched in the title, description, lots and official category of each notice. English keywords also find notices in other languages through their official category (e.g. "software" finds German, Polish or Spanish software tenders). For French national notices (BOAMP, DECP), add French keywords too (e.g. "logiciel"). Leave empty to get everything matching the other filters.
languageNoLanguage of the CPV category labels and of the TED links. Titles and descriptions stay in their original language.
maxItemsNoMaximum number of notices in the dataset (you pay per notice). Default here: 25.
countriesNoCountries of the buyer (2-letter codes). Leave empty for all of Europe (EU, EEA, Switzerland and candidate countries).
minValueEurNoEstimated value (tenders) or awarded value (awards), converted to euros.
frenchDepartmentsNoFrance only: department numbers, e.g. "69", "75", "2A", "974". Selecting departments limits the search to France.
publishedWithinDaysNoNotices published in the last N days. For daily monitoring, 2 or 3 days is enough.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations only declare readOnlyHint and openWorldHint. The description goes beyond them with concrete cost behavior: pay-per-result pricing ($0.003 per run start, $0.003 per open tender, $0.005 per award) and billing tied to maxItems. It does not cover pagination or rate limits, but the economic traits are the operationally important disclosure here.

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?

Two sentences, front-loaded with the resource and sources, followed by filter dimensions and price. Dense but no filler. The pricing roster is slightly list-heavy within a description, though it earns its place given pay-per-result billing.

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, the description compensates by enumerating the returned fields for both modes and disclosing cost per result, which an agent needs before setting maxItems. It omits result format and pagination details, keeping it short of fully complete for a 9-parameter, 0-required search tool.

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 the schema already documents all 9 parameters, including enum values and defaults. The description adds only a high-level echo of the filter axes (keyword, CPV, country) plus the maxItems default of 25, which is a small increment over the schema.

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?

States a specific verb+resource (search public tenders and contract awards), names the data sources (TED, BOAMP, DECP), and enumerates the fields returned (buyer, value, deadline, winner, amount, bid count). No sibling tool overlaps, so differentiation is trivially satisfied.

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 implied through the filter axes (keyword, CPV code, country) rather than stated as when-to-use guidance. There are no competing siblings that require routing, and the schema fields carry the how-to-use load, so this is adequate but not explicit.

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

search_flightsGoogle Flights Scraper: Cheapest Dates, Prices & Price HistoryA
Read-only

Flight prices from Google Flights for a route and one or several departure dates: airlines, times, stops, price, and the typical price range of the route. Use numberOfDates with cheapestOnly to find the cheapest day to fly. Pay per result on your Apify account: run start $0.003, flight delivered $0.002.

ParametersJSON Schema
NameRequiredDescriptionDefault
adultsNoNumber of adult passengers. Prices are totals for all passengers.
routesNoOrigin and destination as 3-letter airport or city codes, e.g. "CDG-BCN", "PAR-LIS" (all Paris airports), "LON-NYC".
currencyNoCurrency of all prices.
maxStopsNoMaximum number of stops.
cabinClassNoTravel class.
cheapestOnlyNoOne flight per route and date: the cheapest. Ideal for price calendars and alerts (fewer items, lower cost).
departureDateNoFirst departure date (YYYY-MM-DD). Default: in 30 days.
numberOfDatesNoSearch several departure dates in a row, e.g. 30 = every day of the next month, to find the cheapest day to fly.
tripLengthDaysNo0 = one way. For example 7 = return one week after each departure date.
daysBetweenDatesNo1 = every day, 7 = same weekday every week.
maxFlightsPerSearchNoGoogle's best flights come first, then other flights. Default here: 5.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations only supply readOnlyHint and openWorldHint, so the description adds meaningful behavior beyond them: the pay-per-result cost model with explicit run start ($0.003) and per-flight ($0.002) charges, which affects how an agent should batch calls. It does not discuss rate limits or result caps beyond maxFlightsPerSearch.

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 tight sentences with no filler: purpose and return fields first, then the cheapest-day pattern, then cost. Each sentence earns its place, though the cost sentence could arguably live in metadata given other tools omit it.

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 an 11-parameter read-only search with no output schema, the description covers what is returned (airlines, times, stops, price, route price range) and highlights the key param interaction, which is enough for correct invocation. It stops short of routing guidance versus the sibling flight tool.

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 all 11 parameters are already documented in the schema, making 3 the baseline. The description adds only marginal parameter meaning by linking numberOfDates with cheapestOnly for price-calendar use, which the schema partially covers already (numberOfDates mentions finding the cheapest day).

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 ('Flight prices from Google Flights for a route and one or several departure dates') and enumerates the returned fields (airlines, times, stops, price, typical price range). However, it never distinguishes itself from the flight-related sibling find_ryanair_fares, leaving the agent to guess which flight source to use.

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 gives one concrete usage pattern ('Use numberOfDates with cheapestOnly to find the cheapest day to fly'), which is helpful but narrow. It offers no when-not guidance and does not mention the sibling find_ryanair_fares or any other alternative for flight fare lookups.

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

search_french_companiesFrench Companies Scraper: SIRENE Leads, Directors & EmailsA
Read-only

French companies from the official SIRENE register by activity (NAF code or keyword), department and size: legal data, headquarters, directors, and optionally a verified website with emails and phones. Pay per result on your Apify account: run start $0.003, company $0.004, website & contacts found $0.025.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoCompany name, trade name, director name or address words, e.g. "boulangerie", "plomberie", "Dupont". Optional if you use filters below.
maxItemsNoNo 10,000 cap: large searches are split automatically. Default here: 25.
nafCodesNoe.g. 43.22A (plumbing), 56.10A (restaurants), 62.01Z (software). Full list: insee.fr. Leave empty to use sectors or text search.
departmentsNoDepartment numbers, e.g. 75, 69, 13, 2A. Matches companies having at least one establishment there.
postalCodesNoe.g. 75011, 69003.
createdAfterNoCompany creation date (YYYY-MM-DD).
findContactsNoFor each company, find its website and VERIFY it (the SIREN must appear on the site's legal notice), then extract emails, phones and social links. Billed only when a website is found.
employeeRangesNoEmployee headcount ranges (INSEE).

TDQS

A3.9/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 new behavioral context: pay-per-result billing granularity (run start $0.003, company $0.004, website & contacts $0.025) and the verification requirement inside findContacts (the SIREN must appear on the site's legal notice, billed only when a website is found). It does not, however, describe auth/account prerequisites or scraping latency.

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?

Two sentences: the first front-loads the resource, filters and returned data; the second carries the pricing model. Dense and largely waste-free, though the cost figures could arguably be deferred to documentation.

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 an eight-parameter scraper with no output schema, the description covers scope, filtering facets, returned data shape and cost behaviour, which is close to what an agent needs. It stops short of describing result structure or volume/pagination expectations, which is the main remaining gap given there is no output schema.

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 the schema already documents every parameter with examples. The description only restates the same facets (activity, department, size, optional contacts) at a higher level and adds no syntax or format detail beyond the schema, so the baseline 3 applies.

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?

States a specific resource (French companies from the official SIRENE register) with a specific retrieval action and enumerates the returned data: legal data, headquarters, directors, and optionally a verified website with emails and phones. It is trivially distinguishable from siblings such as search_uk_companies or get_company_behind_website.

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 through the filter vocabulary (activity/NAF, department, size) but never states when to choose this tool over alternatives like find_new_companies_without_website or search_uk_companies, nor any exclusions. Usage is inferable but not guided.

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

search_hotelsGoogle Hotels Scraper (Google Travel): Prices on Booking SitesA
Read-only

Hotel prices from Google Hotels for a destination or for named hotels and dates: price per night and total, rating, stars. With includeBookingSites, the price of each hotel on every booking site (official site, Booking.com, Expedia...). Pay per result on your Apify account: run start $0.003, hotel price $0.002, booking-site prices $0.003.

ParametersJSON Schema
NameRequiredDescriptionDefault
adultsNoNumber of adult guests.
hotelsNoHotel names (e.g. "Novotel Paris Est") or Google Hotels URLs. For each hotel and each date you get the price on every booking site (hotel website, Booking.com, Expedia, Agoda…): cheapest site, official price and the gap between them.
nightsNoLength of stay.
sortByNoOrder of the hotels of each destination in the dataset.
currencyNoCurrency of all prices.
locationsNoCities, areas or landmarks to search, e.g. "Paris", "Lisbon Alfama", "hotels near Eiffel Tower". Each destination returns hotels with their price for your dates, rating, class, amenities and location.
minRatingNoFrom 1 to 5, e.g. 4.2.
checkInDateNoFirst check-in date (YYYY-MM-DD). Default: in 14 days.
includeBookingSitesNoFor each hotel found, also get the price on every booking site (one extra page per hotel, billed separately). Always on for tracked hotels.
maxHotelsPerLocationNoGoogle shows about 18 new hotels per page. Default here: 10.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations only declare readOnly and openWorld, so the description carries the burden of disclosing cost behavior: pay-per-result pricing with explicit rates (run start $0.003, hotel $0.002, booking-site $0.003) and the fact that includeBookingSites adds a billed extra page per hotel. This is genuinely useful operational context beyond the annotations, though it omits rate-limit/runtime or failure 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?

Three dense sentences that front-load what is returned and then the booking-site option and cost model. No filler, though the pricing sentence is appended rather abruptly rather than integrated into the flow.

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, the description usefully names the returned fields (price per night/total, rating, stars) and the cost model, and all 10 parameters are documented in the schema. It could be stronger on pagination/volume behavior and what happens with partial inputs, but it is adequate for this tool.

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 the schema already explains adults, nights, currency, dates, sortBy, minRating, locations and hotels in detail; the description adds little parameter-specific meaning. The baseline of 3 applies because the schema does the heavy lifting.

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?

States a specific verb+resource (hotel prices from Google Hotels) with the scope of what is returned: price per night and total, rating, stars, and optionally per-booking-site prices. It is easily distinguished from siblings like search_flights and find_ryanair_fares, which cover air travel rather than lodging.

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 through includeBookingSites ('the price of each hotel on every booking site') and notes it is 'Always on for tracked hotels', but it never says when to choose this tool over an alternative or when not to use it. There is no exclusion or prerequisite guidance, only conditional context for the booking-site option.

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

search_kleinanzeigenKleinanzeigen Scraper & Kleinanzeigen API: Deals & AlertsA
Read-only

Ads from Kleinanzeigen (Germany): price, location, posting time, and a 0-100 deal score against the market price. Pay per result on your Apify account: run start $0.003, ad $0.002, ad with full details $0.004.

ParametersJSON Schema
NameRequiredDescriptionDefault
keywordsNoOne or more search terms, e.g. "e-bike", "iPhone 15 Pro". Each keyword is searched in every location.
maxItemsNoYou only pay for ads returned. Default here: 20.
maxPriceNoOptional.
minPriceNoOptional.
radiusKmNoSearch radius around each location (Kleinanzeigen supports 5, 10, 20, 30, 50, 100, 150 or 200 km; other values are rounded).
locationsNoCities or postal codes, e.g. "Berlin", "80331". Leave empty for all of Germany.
sellerTypeNoApplies to keyword searches.
maxPagesPerSearchNo~25 ads per page. Default here: 1.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=true and openWorldHint=true, so the description is not burdened with safety disclosure. It adds genuinely useful non-annotation context: a pay-per-result billing model with concrete unit prices and a note that cost scales with returned ads and detail level. It still omits pagination behavior and rate limits, so not 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.

Conciseness4/5

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

Two sentences, front-loaded with what is returned and followed by the cost model; nothing is wasted. The pricing sentence is dense but each clause carries distinct information an agent needs before invoking a paid tool.

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 an 8-parameter, no-required-params search tool with no output schema, the description covers the return fields, geography, and cost — which is the material information. Pagination/ordering behavior and the shape of the result payload are left unspecified, but the schema carries defaults and the annotations cover the safety profile.

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% and the schema already documents every parameter with examples and defaults (radius rounding, ~25 ads per page, keyword-per-location semantics). The description adds no parameter-level meaning beyond that, so the 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 the resource (ads from Kleinanzeigen, Germany) and enumerates the returned fields (price, location, posting time, deal score), so the agent knows exactly what it gets. It does not explicitly differentiate itself from close siblings like search_second_hand_europe or search_vinted, so it falls short of a 5.

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, when-not-to-use, or alternative-tool guidance. The reader must infer from the parameter set (no required params) that this is a keyword/location search tool, and nothing tells the agent when to prefer it over the Europe-wide or Vinted alternatives.

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

search_second_hand_europeEU Second-Hand Marketplaces Scraper: Vinted, OLX & MoreA
Read-only

One search on the biggest second-hand marketplace of up to 18 European countries (Kleinanzeigen, Marktplaats, Subito, Wallapop, OLX, Blocket, FINN...): listings with prices converted to euros, a deal score, and the median price per country. Pay per result on your Apify account: run start $0.003, listing delivered $0.002.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortByNo'Newest first' is best for monitoring; 'Most relevant' gives the best price comparison.
maxPriceNoIn euros, converted like the minimum price.
minPriceNoIn euros. Converted to the local currency of each marketplace (PLN, CZK, HUF, SEK, DKK, NOK, RON).
countriesNoCountries to search, each on its biggest second-hand marketplace. Leave empty for all 18.
searchQueriesNoOne or more products, e.g. "nintendo switch oled", "iphone 13 128gb", "dyson v11". Be specific: model names and numbers (13, 128gb, ps5) must appear in the listing title.
maxItemsPerMarketplaceNoPer search and per marketplace. 50 is enough for reliable country prices; raise it to collect more deals. Default here: 10.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, but the description adds real value beyond them: currency conversion into euros, a deal score, a per-country median, and explicit per-result pricing ($0.003 run start, $0.002 per listing). Auth/rate-limit specifics are absent, keeping it out of the top band.

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?

Two sentences, no filler, and the geographic scope plus output contents are front-loaded before the pricing note. The superlative claim ('the biggest') is mild marketing rather than wasted length.

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, the description usefully sketches what comes back (listings, euro prices, deal score, median price per country) and discloses the pay-per-result cost model. The main hole is sibling differentiation, which matters here given search_vinted and search_kleinanzeigen sit alongside it.

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 every parameter is already documented with useful detail (currency conversion targets, enum meaning, per-marketplace defaults). The description adds essentially nothing parameter-level beyond echoing euro conversion, so the 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?

States a specific verb and resource ('search... second-hand marketplace of up to 18 European countries') and names concrete marketplaces, so the agent knows this is a multi-country second-hand listing search. However, it never distinguishes itself from the direct siblings search_vinted and search_kleinanzeigen, which cover single marketplaces, so routing still needs inference.

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 explicit when-to-use or when-not guidance, and the obvious alternatives (search_vinted, search_kleinanzeigen for single-marketplace queries) are never mentioned. Some usage hints live in the schema ('Newest first is best for monitoring'), but the description itself gives none.

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

search_trusted_shopsTrusted Shops Scraper: Shop Leads, Ratings, Reviews & AlertsA
Read-only

Online shops listed on Trusted Shops by keyword and country (company, contact, rating, review volume), or the latest customer reviews of a given shop. Pay per result on your Apify account: run start $0.003, shop $0.002, company profile $0.004, review $0.0006.

ParametersJSON Schema
NameRequiredDescriptionDefault
shopsNoShop domains (bergfreunde.de), Trusted Shops profile URLs, or Trusted Shops IDs. Use this to export the reviews of your own shop or of competitors.
countriesNoMarkets to search. Each Trusted Shops market has its own shop directory.
minReviewsNoKeep only shops with at least this many reviews (all time). The number of reviews tracks the number of orders: 10,000+ is a large shop.
searchTermsNoWhat the shops sell, in the language of the market: "fahrrad", "möbel", "bio", "chaussures", "zapatillas"… One search per keyword and per country.
maxReviewsPerShopNo0 = no reviews. Most recent first; Trusted Shops publishes the last 12 months, up to 10,000 per shop.
maxShopsPerSearchNoThe directory returns the best matches first. Up to 10,000 per keyword. Default here: 15.

TDQS

A3.7/5.0
Behavior4/5

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

With readOnlyHint=true and openWorldHint=true already covering the safety profile, the description adds genuinely useful non-annotation context: the per-result cost model broken out by operation type (run start, shop, company profile, review) and the implicit requirement of an Apify account. It does not cover run duration, volume limits, or failure behavior, but the annotations carry the main burden.

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?

Two sentences, front-loaded with the capability before the pricing detail; no filler. The pricing clause is dense and list-like, but it is the only place cost is disclosed, so it earns its space.

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, the description does part of the return-value job by naming the fields coming back (company, contact, rating, review volume) and the dual shop-vs-review output modes. Missing are output format specifics and any mention of how results are delivered per run, but for a read-only scraper this is largely sufficient.

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 the schema already documents all six parameters thoroughly (including the 12-month review window and the '10,000+ is a large shop' heuristic). The description's cost list loosely maps result types (shop, company profile, review) to what the run will produce, adding modest value beyond the schema, which justifies the baseline 3 rather than lower.

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 (Trusted Shops listings) and two distinct modes: shop discovery by keyword/country, and review retrieval for a given shop, plus the fields returned (company, contact, rating, review volume). It does not explicitly contrast with any sibling, but no sibling overlaps this domain, so ambiguity is low.

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 two modes (search by keyword/country vs. fetch reviews for named shops) imply usage, and the 'pay per result' line hints that broad runs are costly, but the description never states when to prefer this tool or which mode to pick for a given goal. The real routing guidance ('export the reviews of your own shop or competitors') lives in the shops parameter schema, not the description.

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

search_uk_companiesUK Companies House API & Scraper: UK Company Data & B2B LeadsA
Read-only

UK companies from Companies House by SIC code, town or incorporation date: profile, registered office, officers, and optionally website, emails and phones. Pay per result on your Apify account: run start $0.003, company $0.004, website & contacts found $0.025.

ParametersJSON Schema
NameRequiredDescriptionDefault
locationNoTown, county or postcode in the registered office address, e.g. "Leeds", "Manchester", "SW1".
maxItemsNoNo 10,000 cap: large searches are split automatically by incorporation date. Default here: 25.
sicCodesNo5-digit UK SIC 2007 codes, e.g. 43220 (plumbing & heating), 62020 (IT consultancy), 56101 (restaurants). Each code is searched separately and results are merged.
statusesNoDefault: active companies only.
findContactsNoFind the company's own website, check it against the company number or the full company name, then extract emails, phones and social links. Billed only when a website is found.
includeOfficersNoName, role, appointment/resignation dates, month of birth, nationality, country of residence, occupation, identity verification status.
companyNameIncludesNoOptional word(s) the company name must contain.
incorporatedInLastDaysNoShortcut for new-business feeds, e.g. 7. Overrides "Incorporated from".

TDQS

A3.9/5.0
Behavior4/5

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

Annotations declare readOnlyHint and openWorldHint, and the description adds genuinely useful non-annotation context: the Apify pay-per-result billing model with concrete prices (run start $0.003, company $0.004, contacts $0.025). It still does not disclose pagination or result-volume limits for a tool that can return 10,000+ items, but the cost transparency is a real addition.

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 dense sentence covering data scope followed by a short pricing sentence; the core scope is front-loaded and there is little filler. Slightly compressed phrasing, but no wasted sentences.

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, the description usefully enumerates what comes back (profile, registered office, officers, and optionally website/emails/phones). For an all-optional 8-parameter search that is largely complete; only return-volume/pagination behavior and the relationship to the new-companies sibling are unaddressed.

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 the schema already documents location, sicCodes, statuses, findContacts, etc. The description only restates the same fields at a high level (SIC code, town, incorporation date, optional website/emails/phones) without adding format or behavioral detail beyond the schema. Baseline 3 applies.

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?

Specific verb ('search') plus resource ('UK companies from Companies House') and explicit filter dimensions (SIC code, town, incorporation date) and returned fields (profile, registered office, officers, contacts). This clearly separates it from siblings such as search_french_companies and find_new_companies_without_website.

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 its use case (bulk B2B lead generation by SIC/location/age) but never states when to prefer it over alternatives, nor does it point to the related sibling find_new_companies_without_website for the 'new company' scenario. Usage is inferable but not guided.

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

search_vintedVinted Scraper & Vinted API: 26 Countries, Deals & AlertsA
Read-only

Vinted listings in up to 26 countries: price with buyer fees, brand, size, condition, seller rating, and a cross-country price summary. Pay per result on your Apify account: run start $0.003, item $0.001, item with full details $0.002, sold listing detected $0.002.

ParametersJSON Schema
NameRequiredDescriptionDefault
orderNonewest = best for alerts and sniping deals.
priceMaxNoIn the currency of each Vinted site.
priceMinNoIn the currency of each Vinted site (€, £, zł…).
searchesNoWhat to look for: plain text ("nike air max 90"), or a Vinted catalog URL copied from your browser with all your filters (brand, size, category, price…).
countriesNoMarkets to search: FR, DE, AT, BE, NL, IT, ES, PT, LU, IE, UK, PL, CZ, SK, HU, RO, SE, DK, FI, LT, LV, EE, GR, HR, SI, US — or "all" for all 26. A pasted URL always uses its own country.
brandNamesNoBrand names, e.g. "Nike", "Zara". Resolved to Vinted's official brand filter.
conditionsNoOnly these conditions. Empty = all.
maxItemsPerSearchNoAcross all countries of the search, after deduplication. Default here: 20.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations declare readOnlyHint and openWorldHint, so safety is covered. The description adds genuine behavioral context beyond structured fields: the pay-per-result model on the agent's Apify account with specific unit prices (run start $0.003, item $0.001/$0.002, sold detection $0.002), which is real cost-relevant information. It still omits return-format and 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.

Conciseness4/5

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

Two sentences, front-loaded with the value proposition, and the pricing sentence is dense but relevant. No filler, though the pricing breakdown is fairly granular for a description slot.

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 an eight-parameter search tool with 100% schema coverage, read-only/open-world annotations, and no output schema, the description covers what comes back and what it costs. The notable gap is usage guidance (when to prefer this over the other second-hand tools), so it is strong but not fully complete.

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 the eight parameters are already fully documented in the schema, setting the baseline at 3. The description's mention of buyer-fee pricing and a cross-country price summary describes outputs rather than clarifying any parameter. It adds little parameter meaning beyond the schema.

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 (Vinted listings) and scope (up to 26 countries) plus the data returned (price with buyer fees, brand, size, condition, seller rating, cross-country comparison). Naming Vinted directly distinguishes it from siblings like search_second_hand_europe and search_kleinanzeigen. It stops short of explicitly contrasting those alternatives, so not a 5.

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?

The description never says when to reach for this tool versus the second-hand siblings, nor any prerequisites for use. The only usage-flavored hint ('newest = best for alerts and sniping deals') lives in the schema, not the description. Context is implied at best.

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

validate_eu_vat_numbersEU VAT Number Validator (VIES): Bulk Check, Proof & AlertsA
Read-only

Checks EU VAT numbers against VIES, the European Commission's registry: valid or not, registered name and address. With requesterVatNumber, each check returns an official consultation number. Pay per result on your Apify account: run start $0.003, vat number checked $0.002.

ParametersJSON Schema
NameRequiredDescriptionDefault
vatNumbersNoOne per line, with the country prefix: FR40303265045, IE 6388047V, PL 526-025-09-95… Spaces, dots and dashes are fine. Greece can be written GR or EL; Northern Ireland is XI.
requesterVatNumberNoWhen set, every check is registered by the European Commission and returns a consultation number — your legal proof towards tax authorities that you verified the customer on that date.

TDQS

A3.9/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 the safety profile is covered. The description adds genuinely new behavior: per-result pricing ($0.003 start, $0.002 per number checked) and the legal-proof semantics of the requesterVatNumber flag — information an agent cannot get from the annotations. It stops short of describing throughput or rate limits for bulk runs.

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?

Two tight sentences, front-loaded with what the tool does before the optional-flag and cost details. The pricing sentence is arguably extra but is decision-relevant for a paid tool, so little is wasted.

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 only two optional params, no nested objects and no output schema, the description covers the return fields, the legal-proof behavior and the cost model. A bulk-call tool could say more about batch size limits or per-item failure handling, but nothing essential to a correct invocation is missing.

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 fully documented in the schema, including the country-prefix formats. The description reinforces the consultation-number semantics of requesterVatNumber but adds no format or syntax detail beyond what the schema already provides — baseline 3.

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?

States a specific verb (checks) and resource (EU VAT numbers) against a named registry (VIES), and spells out the returned fields (valid or not, registered name and address). An agent can distinguish this from unrelated siblings like search_eu_public_tenders or get_run_results without opening any schema.

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 when the optional requesterVatNumber path matters ('each check returns an official consultation number'), which is conditional context, but it never states when to prefer this tool, when not to use it, or how it relates to any alternative. Usage is inferred rather than instructed.

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. 21 tool updatesv0.1.0
    • First observeddetect_website_tech_stack
    • First observedfind_new_companies_without_website
    • First observedfind_ryanair_fares
    • First observedget_app_reviews
    • First observedget_company_behind_website
    • First observedget_electricity_prices
    • First observedget_france_building_permits
    • First observedget_france_energy_ratings
    • First observedget_france_fuel_prices
    • First observedget_france_property_sales
    • First observedget_run_results
    • First observedsearch_eu_public_tenders
    • First observedsearch_flights
    • First observedsearch_french_companies
    • First observedsearch_hotels
    • First observedsearch_kleinanzeigen
    • First observedsearch_second_hand_europe
    • First observedsearch_trusted_shops
    • First observedsearch_uk_companies
    • First observedsearch_vinted
    • First observedvalidate_eu_vat_numbers

TDQS

A3.8/5.0

Scored across 21 tools

Disambiguation4/5

Most tools target clearly distinct data sources and domains (flights, hotels, tenders, VAT, property sales, etc.), making selection straightforward. However, there is genuine overlap: search_kleinanzeigen is a subset of the markets covered by search_second_hand_europe, and find_new_companies_without_website partially overlaps with search_uk_companies/search_french_companies company lookups.

Naming Consistency5/5

All 21 tools use snake_case with a consistent leading verb (search_, get_, find_, validate_, detect_), producing a highly predictable verb_noun or verb_noun_qualifier pattern. No mixing of conventions or vague standalone verbs.

Tool Count4/5

21 tools is on the heavy end of the range, but this is a multi-source data aggregation server where each tool maps to a distinct dataset or registry, so each earns its place. It sits slightly above the comfortable 3-15 band but is justified by the breadth of sources covered.

Completeness4/5

The set covers a wide range of European data domains with an async follow-up tool (get_run_results) to handle long-running runs, avoiding dead ends. Some domains offer only a search entry point without deeper detail/retrieval variants, a minor gap agents can work around.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables AI assistants to interact with the Apify platform to manage actors, monitor runs, and retrieve scraped data from datasets. It supports natural language commands for executing web scrapers, managing tasks, and accessing key-value stores.
    28
    MIT
  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Exposes over 19,000 Apify Actors as MCP tools for web scraping, data extraction, and OSINT automation. It enables AI agents to dynamically discover and execute scrapers to collect structured data and crawl web content.
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents and MCP clients to retrieve company profiles, hiring signals, YC companies, Wikidata enrichment, email validation, OpenStreetMap places, market quotes, and remote jobs via eight tools backed by the user's own Apify account.
    8
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to access fourteen web-data tools for scraping, SEO and site auditing, extraction, validation, enrichment, and screenshots through Apify actors. It runs those tools on the user's own Apify account via an API token.
    MIT