HirePulse: Jobs, Ads, SEO, YouTube & AliExpress Data Tools
Server Details
Jobs, ads, SEO, keywords, YouTube and AliExpress data for AI agents. Runs on Apify.
- Status
- Healthy
- Uptime
- 86.3% over 23 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- edtool79-collab/hirepulse-tools
- GitHub Stars
- 0
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 12 tools
The Actor tools are mostly distinct (AliExpress, YouTube transcripts, SEO audit, ads transparency, keyword volume), but ats-job-pulse and google-jobs-scraper both return job postings and could easily be confused. company-intent-radar also overlaps with ats-job-pulse and google-ads-transparency-scraper since it aggregates their signals. Descriptions help differentiate them, but boundaries are blurry.
Two conventions are mixed: the generic Apify infrastructure tools use verb_noun kebab-case (abort-actor-run, get-dataset-items), while the scraper tools use a namespaced double-hyphen resource pattern (hirepulse--aliexpress-search-scraper). The namespacing is readable and arguably intentional, but the set as a whole does not follow one predictable pattern.
12 tools is a reasonable, well-scoped count: 8 domain scrapers plus 4 supporting infrastructure tools for run/dataset/record access. Nothing feels redundant enough to be excessive, and the set is not thin.
The scraper surface covers the advertised domains (jobs, ads, SEO, YouTube, AliExpress) well, and infrastructure supports aborting/getting runs and reading datasets and key-value records. Minor gaps remain (no run-listing or dataset-listing tools), but core workflows are workable.
Available Tools
12 toolsabort-actor-runAbort Actor runADestructiveIdempotentInspect
Abort an Actor run that is currently starting or running. For runs with status SUCCEEDED, FAILED, ABORTING, ABORTED, or TIMED-OUT, this call has no effect. The results will include the updated run details after the abort request.
USAGE:
Use when you need to stop a run that is taking too long or misconfigured.
USAGE EXAMPLES:
user_input: Abort run y2h7sK3Wc
user_input: Gracefully abort run y2h7sK3Wc
| Name | Required | Description | Default |
|---|---|---|---|
| runId | Yes | The ID of the Actor run to abort. | |
| gracefully | No | If true, the Actor run will abort gracefully with a 30-second timeout. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tip | No | Advisory guidance RAG Web Browser wrote to its key-value store under the reserved "TIP" key |
| runId | Yes | Actor run ID |
| stats | No | Run statistics |
| status | Yes | Run status: READY | RUNNING | TIMING-OUT | TIMED-OUT | ABORTING | ABORTED | SUCCEEDED | FAILED |
| actorId | Yes | Stable Apify Actor ID from the run record |
| summary | Yes | Past-tense summary of the run state |
| exitCode | No | Actor process exit code; populated for terminal states (especially FAILED) |
| nextStep | Yes | One primary follow-up action with identifiers interpolated |
| storages | Yes | Dataset and key-value store metadata, keyed by alias. "default" is always the primary entry. |
| actorName | No | "username/actor-name" |
| startedAt | No | ISO timestamp when the run started |
| finishedAt | No | ISO timestamp when the run finished (terminal states only) |
| statusMessage | No | Pass-through from Apify run.statusMessage |
| apifyConsoleUrl | No | Personalized Apify Console link to the run; present only for Console sessions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, readOnlyHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: the no-effect-on-terminal-states rule, which is exactly what makes the idempotent hint meaningful, plus the fact that updated run details come back. It omits auth/permission requirements and any 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and the state constraint, and every prose sentence earns its place. The 'USAGE EXAMPLES' block of raw user_input lines is mostly decorative and pads the definition slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be spelled out, and the description still notes that updated run details are returned. For a two-parameter mutation with full annotation coverage, only auth requirements are unaddressed, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters and the 30-second graceful-abort timeout are already documented in the schema. The description only gestures at 'gracefully' via an example, adding no syntax or semantic meaning beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (Abort) plus resource (Actor run) and a state qualifier ('currently starting or running'), which immediately distinguishes it from siblings like call-actor and get-actor-run. An agent can select it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('stop a run that is taking too long or misconfigured') and an explicit no-op condition (terminal statuses such as SUCCEEDED, FAILED, ABORTED, TIMED-OUT). It does not name an alternative tool or describe prerequisites, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-actor-runGet Actor runARead-onlyIdempotentInspect
Get detailed information about a specific Actor run.
Returns run result: status, storages (datasets/keyValueStores alias map), stats, summary, nextStep.
summary describes the past (e.g. "SUCCEEDED in 22s. 47 items; 3 fields available.").
nextStep prescribes one primary follow-up action with identifiers interpolated (e.g. "Use get-dataset-items with datasetId=...").
waitSecs (0–45, default 30) waits up to that many seconds for terminal status before returning.
USAGE:
Use to check the status of a run started by any Actor-running tool.
Pass waitSecs > 0 to block until terminal (or until the cap elapses).
USAGE EXAMPLES:
user_input: Show details of run y2h7sK3Wc
user_input: Wait for run y2h7sK3Wc to finish
| Name | Required | Description | Default |
|---|---|---|---|
| runId | Yes | The ID of the Actor run. | |
| waitSecs | No | Maximum seconds to wait for the run to reach a terminal state (SUCCEEDED, FAILED, ABORTED, TIMED-OUT). 0 returns immediately with the current status. Cap: 45. Default: 30. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tip | No | Advisory guidance RAG Web Browser wrote to its key-value store under the reserved "TIP" key |
| runId | Yes | Actor run ID |
| stats | No | Run statistics |
| status | Yes | Run status: READY | RUNNING | TIMING-OUT | TIMED-OUT | ABORTING | ABORTED | SUCCEEDED | FAILED |
| actorId | Yes | Stable Apify Actor ID from the run record |
| summary | Yes | Past-tense summary of the run state |
| exitCode | No | Actor process exit code; populated for terminal states (especially FAILED) |
| nextStep | Yes | One primary follow-up action with identifiers interpolated |
| storages | Yes | Dataset and key-value store metadata, keyed by alias. "default" is always the primary entry. |
| actorName | No | "username/actor-name" |
| startedAt | No | ISO timestamp when the run started |
| finishedAt | No | ISO timestamp when the run finished (terminal states only) |
| statusMessage | No | Pass-through from Apify run.statusMessage |
| apifyConsoleUrl | No | Personalized Apify Console link to the run; present only for Console sessions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, but the description adds real behavioral context beyond them: the summary vs. nextStep semantics, and that waitSecs blocks for up to 45s (default 30) before returning the current state. This is substantive added value, though it doesn't cover error/failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then segmented into Returns/USAGE/EXAMPLES blocks. Every line carries information, though the two usage examples are somewhat redundant with the USAGE prose, adding minor length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and 100% parameter coverage, the description need only orient the agent, which it does fully: purpose, when to use, wait semantics, and concrete invocation examples. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes further by framing waitSecs as a blocking/wait mechanism with its cap and default, and by describing what runId's run produces. Slight above-baseline value over the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get detailed information about a specific Actor run') and enumerates the returned result fields (status, storages, stats, summary, nextStep). It does not explicitly distinguish itself from siblings like call-actor or abort-actor-run, so it falls just short of the 5 benchmark.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The USAGE block names the condition ('check the status of a run started by any Actor-running tool') and explains when to pass waitSecs > 0 to block until terminal. It gives clear context but stops short of explicit exclusions or naming the sibling to use for other run operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-dataset-itemsGet dataset itemsARead-onlyIdempotentInspect
Get items (rows) from a dataset — the output/results produced by an Actor run. Returns the rows themselves, not dataset metadata, counts, or a schema. When the user provides a datasetId and asks to retrieve results, output, data, or rows, call this tool directly. Default limit is 20. Use clean=true to skip empty items and hidden fields.
USAGE:
Use when you need to read data from a dataset (all items or only selected fields).
USAGE EXAMPLES:
user_input: Retrieve results from dataset abc123
user_input: Get only metadata.url and title from dataset username~my-dataset
| Name | Required | Description | Default |
|---|---|---|---|
| desc | No | If true, results are returned in reverse order (newest to oldest). | |
| omit | No | Comma-separated list of fields to exclude from results. | |
| clean | No | If true, returns only non-empty items and skips hidden fields (starting with #). Shortcut for skipHidden=true and skipEmpty=true. | |
| limit | No | Maximum number of items to return. Default is 20. | |
| fields | No | Comma-separated list of fields to include in results. Fields in output are sorted as specified. Use dot notation for nested objects (e.g. "metadata.url"); the server auto-flattens parent prefixes. | |
| offset | No | Number of items to skip at the start. Default is 0. | |
| flatten | No | Comma-separated list of fields to flatten (e.g. flatten="metadata" turns {"metadata":{"url":"x"}} into {"metadata.url":"x"}). Normally derived automatically from dot-notation in `fields`; specify only as a diagnostic override. | |
| datasetId | Yes | Dataset ID, name (resolved against your own datasets), or full name as username~name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | Dataset items |
| limit | Yes | Limit used for pagination |
| offset | Yes | Offset used for pagination |
| summary | Yes | Summary of the result |
| nextStep | Yes | One follow-up action with tool name |
| datasetId | Yes | Dataset ID |
| itemCount | Yes | Number of items returned |
| totalItemCount | Yes | Total items in dataset |
| apifyConsoleUrl | No | Personalized Apify Console link to the dataset; present only for Console sessions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive), so the description adds value by disclosing the default limit of 20, what clean=true does, and that results are the raw rows. Return-shape details are largely deferred to the existing output schema, which 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and the anti-scope sentence, followed by short usage notes and examples. Slightly redundant in repeating the limit default and the clean flag across sections, but nothing wasteful enough to hurt.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read tool with full schema coverage and an output schema, the description supplies the purpose, trigger, and key defaults an agent needs. Pagination interaction (offset/limit) and flatten behavior are left to the schema, which is reasonable given the output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all eight parameters in depth. The description only restates the default limit and clean=true semantics, adding little beyond the structured fields; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get items (rows) from a dataset') and immediately delimits scope by saying it returns rows themselves, not metadata, counts, or schema. An agent can distinguish the intent without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear trigger ('When the user provides a datasetId and asks to retrieve results, output, data, or rows, call this tool directly') plus a usage section and two concrete examples. It lacks explicit when-not guidance relative to any alternative, but the sibling list contains no competing dataset-read tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-key-value-store-recordGet key-value store recordARead-onlyIdempotentInspect
Get the value stored under a specific key in a key-value store — a single record, not a listing of all keys. Requires the exact key name. The response preserves the original Content-Encoding; most clients handle decompression automatically.
USAGE:
Use when you need to retrieve a specific record (JSON, text, or binary) from a store.
USAGE EXAMPLES:
user_input: Get record INPUT from store abc123
user_input: Get record data.json from store username~my-store
| Name | Required | Description | Default |
|---|---|---|---|
| recordKey | Yes | Key of the record to retrieve. | |
| keyValueStoreId | Yes | Key-value store ID, name (resolved against your own key-value stores), or full name as username~name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| key | Yes | Record key |
| value | Yes | The stored value (JSON, text, or binary) |
| summary | Yes | Summary of the result |
| contentType | No | MIME type of the stored value |
| keyValueStoreId | Yes | Key-value store ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive, so the safety profile is covered elsewhere. The description earns credit for adding behavioral context beyond that: the 'requires the exact key name' precondition and the note that the response preserves the original Content-Encoding, which most clients decompress automatically — a real return-value trait callers would otherwise trip over.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The key facts — scope, exact-key requirement, encoding caveat — are front-loaded in three tight sentences. The subsequent USAGE and USAGE EXAMPLES blocks are somewhat redundant with the first paragraph, costing a little efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A two-parameter read tool whose annotations, 100% schema coverage, and output schema already cover safety, inputs, and return shape. The description closes the remaining gap with the Content-Encoding behavior, which is exactly the non-obvious detail an agent needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including the keyValueStoreId resolution rules (name vs. username~name) and minLength constraints in the schema itself. The description only reinforces that the key must be exact, adding little semantics beyond what the schema already documents, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the value stored under a specific key in a key-value store') and preemptively scopes it against a listing tool: 'a single record, not a listing of all keys.' An agent can immediately tell this is a point lookup, not an enumeration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It says when to use it ('when you need to retrieve a specific record (JSON, text, or binary)') and includes two concrete usage examples showing the store identifier formats. However, it never states when NOT to use it or names an alternative/sibling for enumeration, so the guidance is implied rather than comparative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hirepulse--aliexpress-search-scraperhirepulse/aliexpress-search-scraperBDestructiveInspect
This tool calls the Actor "hirepulse/aliexpress-search-scraper" and retrieves its output results. Actor description: Search AliExpress by keyword to extract products, sale prices, original prices, discounts, exact orders, ratings, shipping signals, delivery estimates, SKU IDs and image galleries. Built for e-commerce research, dropshipping, n8n workflows and AI agents.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | best_match for relevance; orders for source-reported cumulative units sold; price_low or price_high for listing prices. Sold counts are not sales in a fixed time period. Example values: "best_match" | best_match |
| queries | No | AliExpress search keywords, one per item, up to 20 per run. Also accepts singular "query", "keyword", or "search". Example: ["yoga mat", "usb c cable"]. Example values: ["yoga mat"] | |
| ship_to | No | Delivery country as a two-letter ISO code. Prices and availability follow it, as on the website. Example: "DE". Default: "US". Example values: "US" | US |
| currency | No | Currency of all prices, one of the listed codes. Example: "EUR". Default: "USD". Example values: "USD" | USD |
| waitSecs | No | Max seconds (0–45, default 30) to cap the wait for the Actor run to reach terminal state. For long-running Actors the response returns at the cap with the current run status; follow `nextStep` to poll via get-actor-run. Set to 0 to fire-and-forget. | |
| max_price | No | Only products priced at or below this value, as a whole number. Example: 50. Optional; must not be below min_price. | |
| min_price | No | Only products priced at or above this value, as a whole number. Example: 5. Optional. | |
| use_paid_upstream | No | Off by default. Supported paid sources also require the owner-controlled HIREPULSE_ALLOW_PAID_UPSTREAM=1 environment setting. Keep false for all quality and smoke checks. | |
| max_results_per_query | No | Maximum products per keyword: 1–1,200, over at most 20 pages. Start with 5 to inspect relevance. Free-plan preview is capped at 100 products total per run. Source limits, repeated pages or blocking can produce fewer results; inspect the run summary. Example values: 5 |
Output Schema
| Name | Required | Description |
|---|---|---|
| tip | No | Advisory guidance RAG Web Browser wrote to its key-value store under the reserved "TIP" key |
| runId | Yes | Actor run ID |
| stats | No | Run statistics |
| status | Yes | Run status: READY | RUNNING | TIMING-OUT | TIMED-OUT | ABORTING | ABORTED | SUCCEEDED | FAILED |
| actorId | Yes | Stable Apify Actor ID from the run record |
| summary | Yes | Past-tense summary of the run state |
| exitCode | No | Actor process exit code; populated for terminal states (especially FAILED) |
| nextStep | Yes | One primary follow-up action with identifiers interpolated |
| storages | Yes | Dataset and key-value store metadata, keyed by alias. "default" is always the primary entry. |
| actorName | No | "username/actor-name" |
| startedAt | No | ISO timestamp when the run started |
| finishedAt | No | ISO timestamp when the run finished (terminal states only) |
| statusMessage | No | Pass-through from Apify run.statusMessage |
| apifyConsoleUrl | No | Personalized Apify Console link to the run; present only for Console sessions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare openWorldHint=true and destructiveHint=true, so the agent knows this touches external state, yet the description adds nothing about that: no billing/cost note for an Actor run, no runtime expectations, no mention that results are snapshots that vary by region and time. Those caveats live only in the input schema's description, not the tool description. The description merely restates that it calls the Actor and retrieves results, which is close to what the annotations and name already convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: the wrapper statement first, then the actor capability blurb. There is no filler or marketing padding, and the substantive data list is front-loaded after the boilerplate. The 'This tool calls the Actor ... and retrieves its output results' lead-in is slightly redundant given the tool name, keeping it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and the input schema is fully documented, so return values and parameter formats need not be explained. What is missing is behavioral context the schemas don't supply: expected run duration, cost implications of running an Actor, and freshness/snapshot caveats for price data. For a 9-parameter open-world scraping tool, the description is adequate but thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with 9 well-documented parameters including sort enums, ship_to ISO codes, currency enums and a detailed waitSecs polling note. The description itself adds zero parameter meaning beyond that. Baseline 3 is correct: the schema does all the work and the description neither helps nor misleads.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource and verb twice over: it runs the 'hirepulse/aliexpress-search-scraper' Actor and returns its results, and the actor blurb names the exact fields extracted (products, sale and original prices, discounts, orders, ratings, shipping signals, delivery estimates, SKU IDs, image galleries). That is far more specific than a generic 'scraper' label. It stops short of distinguishing this from sibling scrapers (google-jobs, google-ads-transparency) beyond the AliExpress domain, so a 4 rather than a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage signal is the audience list 'built for e-commerce research, dropshipping, n8n workflows and AI agents', which implies context but gives no when-to-use conditions, prerequisites, or exclusions. Nothing tells the agent when to prefer this over a sibling scraper or when it is the wrong tool. Usage is implied, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hirepulse--ats-job-pulsehirepulse/ats-job-pulseBDestructiveInspect
This tool calls the Actor "hirepulse/ats-job-pulse" and retrieves its output results. Actor description: Job postings from Greenhouse, Lever, Ashby, Workable, Recruitee and SmartRecruiters by company domain. Apply links, hiring summaries, and a job postings monitor for new and closed jobs across runs: hiring signals for lead enrichment. JSON for n8n, Make and Apify MCP.
| Name | Required | Description | Default |
|---|---|---|---|
| state_id | No | Name of the saved history for change tracking. Runs with the same state_id are compared with each other; history is kept per company. Use one value per watchlist or schedule. Example: "eng-watchlist". Default: "default_state". Example values: "default_state" | default_state |
| waitSecs | No | Max seconds (0–45, default 30) to cap the wait for the Actor run to reach terminal state. For long-running Actors the response returns at the cap with the current run status; follow `nextStep` to poll via get-actor-run. Set to 0 to fire-and-forget. | |
| companies | Yes | **REQUIRED** Required. Company website domains or job-board slugs, one per item. Example: ["stripe.com", "linear.app"]. The job board is detected automatically on Greenhouse, Lever, Ashby, Workable, Recruitee and SmartRecruiters (not Workday). To force a board, prefix the slug: "greenhouse:stripe", "lever:spotify", "ashby:linear", "workable:huggingface", "recruitee:bunq", "smartrecruiters:BoschGroup". Charged once per company found, whatever its job count. Example values: ["ashby:linear"] | |
| locations | No | Keep only jobs whose location contains any of these words (case-insensitive). Example: ["london", "new york", "germany"]. | |
| track_diff | No | Compare with the previous run that used the same state_id and set each job's status to NEW, EXISTING or CLOSED. The first run marks every job NEW (is_first_run = true). When false, every job is ACTIVE and nothing is saved. Default: false. | |
| departments | No | Keep only jobs whose department contains any of these words (case-insensitive). Example: ["engineering", "sales"]. | |
| output_mode | No | Which records to return. "summary_only": one company_summary per company (job counts, new and closed counts, departments, locations, technologies); the smallest output, best for AI agents. "jobs_and_summary": the summary plus every job record. "jobs_only": job records only. Default: "jobs_and_summary". For a cheap agent check use output_mode="summary_only" and max_jobs_per_company=20. This keeps returned data small; the per-company charge is unchanged. Example values: "jobs_and_summary" | jobs_and_summary |
| remote_only | No | Keep only jobs marked or described as remote. Default: false. | |
| only_changes | No | Return only jobs whose status is NEW or CLOSED. Use it on scheduled runs with a fixed state_id to get just what changed since the last run. Default: false. | |
| technologies | No | Keep only jobs that mention any of these technologies, using the names returned in detected_technologies (case-insensitive). Example: ["Python", "Kubernetes", "LLMs"]. | |
| title_keywords | No | Keep only jobs whose title contains any of these words or phrases (case-insensitive). Example: ["engineer", "data scientist"]. Filters reduce the job records only; the summary always counts all jobs. | |
| use_paid_upstream | No | Off by default. Supported paid sources also require the owner-controlled HIREPULSE_ALLOW_PAID_UPSTREAM=1 environment setting. Keep false for all quality and smoke checks. | |
| max_jobs_per_company | No | Maximum job records per company, after the other filters. 0 = no limit. When the limit applies, NEW jobs are kept first, then CLOSED, then the rest; the summary's matching_jobs gives the full count. Example: 20. Default: 5. For a cheap agent check use output_mode="summary_only" and max_jobs_per_company=20. This keeps returned data small; the per-company charge is unchanged. Example values: 5 | |
| extract_tech_keywords | No | Detect core technologies (Python, AWS, React, Kubernetes, LLMs, ...) in each job title and description, and return them in detected_technologies and in the summary's top_technologies. Default: true. Example values: true |
Output Schema
| Name | Required | Description |
|---|---|---|
| tip | No | Advisory guidance RAG Web Browser wrote to its key-value store under the reserved "TIP" key |
| runId | Yes | Actor run ID |
| stats | No | Run statistics |
| status | Yes | Run status: READY | RUNNING | TIMING-OUT | TIMED-OUT | ABORTING | ABORTED | SUCCEEDED | FAILED |
| actorId | Yes | Stable Apify Actor ID from the run record |
| summary | Yes | Past-tense summary of the run state |
| exitCode | No | Actor process exit code; populated for terminal states (especially FAILED) |
| nextStep | Yes | One primary follow-up action with identifiers interpolated |
| storages | Yes | Dataset and key-value store metadata, keyed by alias. "default" is always the primary entry. |
| actorName | No | "username/actor-name" |
| startedAt | No | ISO timestamp when the run started |
| finishedAt | No | ISO timestamp when the run finished (terminal states only) |
| statusMessage | No | Pass-through from Apify run.statusMessage |
| apifyConsoleUrl | No | Personalized Apify Console link to the run; present only for Console sessions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true and openWorldHint=true, and the schema documents the per-company charge and waitSecs polling behavior. The description adds that runs are compared across executions for NEW/CLOSED tracking, which is useful context, but it never explains why a scraper is flagged destructive (it launches an Actor run and bills per company found) and its phrase 'retrieves its output results' understates the run-and-charge behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is boilerplate about calling an Actor, and the second is a dense, comma-heavy list that ends in platform filler ('JSON for n8n, Make and Apify MCP') which does not help tool selection. The substantive content (sources, hiring signals, change monitoring) is present but not front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema, full parameter coverage and annotations, the definition is workable, and it does convey sources and the cross-run monitoring concept. It omits material facts an agent should know before invoking: that Workday is unsupported, that a run is created and billed per company, and that first-run velocity signals are meaningless.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across all 14 parameters, so the schema already explains state_id, track_diff, output_mode, filters and max_jobs_per_company in detail. The description adds essentially nothing parameter-specific beyond 'by company domain', so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (job postings) and the exact sources it covers (Greenhouse, Lever, Ashby, Workable, Recruitee, SmartRecruiters) plus the access path (company domain), so an agent knows what the tool returns. It does not differentiate itself from the sibling hirepulse--google-jobs-scraper, which is a very similar job-scraping tool, so an agent must infer the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied through phrases like 'hiring signals for lead enrichment' and 'a job postings monitor for new and closed jobs across runs'. There is no explicit when-to-use versus when-not guidance, no mention of the Google Jobs sibling as an alternative, and no stated prerequisites (e.g., that a fixed state_id is needed for monitoring).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hirepulse--company-intent-radarhirepulse/company-intent-radarADestructiveInspect
This tool calls the Actor "hirepulse/company-intent-radar" and retrieves its output results. Actor description: Research B2B companies by domain: combine ATS hiring, Google Ads Transparency records, website technologies and email DNS signals in one JSON report. Includes source availability and an explainable intent estimate for account qualification, AI sales agents and n8n.
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | Two-letter ISO country code used for the organic SEO traffic estimate. Example: "GB". Default: "US". Example values: "US" | US |
| domains | Yes | **REQUIRED** Required. Company websites, one per item, up to 100 per run. Full URLs are fine too. Example: ["stripe.com", "notion.so"]. Returns one report per domain. Example values: ["linear.app"] | |
| waitSecs | No | Max seconds (0–45, default 30) to cap the wait for the Actor run to reach terminal state. For long-running Actors the response returns at the cap with the current run status; follow `nextStep` to poll via get-actor-run. Set to 0 to fire-and-forget. | |
| include_jobs | No | Add the 5 newest job titles to each report. Default: false, which keeps reports short. | |
| use_paid_upstream | No | Off by default. Supported paid sources also require the owner-controlled HIREPULSE_ALLOW_PAID_UPSTREAM=1 environment setting. Keep false for all quality and smoke checks. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tip | No | Advisory guidance RAG Web Browser wrote to its key-value store under the reserved "TIP" key |
| runId | Yes | Actor run ID |
| stats | No | Run statistics |
| status | Yes | Run status: READY | RUNNING | TIMING-OUT | TIMED-OUT | ABORTING | ABORTED | SUCCEEDED | FAILED |
| actorId | Yes | Stable Apify Actor ID from the run record |
| summary | Yes | Past-tense summary of the run state |
| exitCode | No | Actor process exit code; populated for terminal states (especially FAILED) |
| nextStep | Yes | One primary follow-up action with identifiers interpolated |
| storages | Yes | Dataset and key-value store metadata, keyed by alias. "default" is always the primary entry. |
| actorName | No | "username/actor-name" |
| startedAt | No | ISO timestamp when the run started |
| finishedAt | No | ISO timestamp when the run finished (terminal states only) |
| statusMessage | No | Pass-through from Apify run.statusMessage |
| apifyConsoleUrl | No | Personalized Apify Console link to the run; present only for Console sessions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The framing 'calls the Actor and retrieves its output results' usefully signals that this spawns an external run rather than reading stored data, and it discloses that source availability plus an intent estimate come back. However, annotations declare destructiveHint=true and openWorldHint=true for what reads like a pure research call, and the description never explains that tension, nor mentions credit cost, run persistence, or the waitSecs cap / nextStep polling path documented only in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no padding, and the informative content is front-loaded in the second sentence. The opening sentence ('This tool calls the Actor ... and retrieves its output results') is scaffolding that restates the tool name and earns little of its space, keeping this below a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is not required, and annotations plus the schema description carry safety and scope caveats. What is missing from the description is only the operational picture — that a run may return before completion at the waitSecs cap and that results must be polled — which the schema partially covers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each parameter (domains, country, waitSecs, include_jobs, use_paid_upstream) carries its own detailed documentation, so the schema does the work. The description adds only the loose phrase 'by domain' and no additional semantics about batching, per-domain reporting, or cost of the paid-upstream flag, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Second sentence states a specific verb+resource: consolidate ATS hiring, Google Ads Transparency, website tech and email DNS signals into one JSON report per company domain. That is materially more specific than siblings like ats-job-pulse or google-ads-transparency-scraper, though the description never names those siblings to make the 'combined radar vs. single-source scraper' distinction explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Use cases are named (account qualification, AI sales agents, n8n), which implies when to reach for it, but there is no when-not guidance and no reference to the single-signal siblings that are the obvious alternatives. The explicit exclusions ('Public mode does not measure SEO traffic or ad spend') live in the schema description, not here, so the tool description alone leaves the agent to infer scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hirepulse--domain-seo-overviewhirepulse/domain-seo-overviewCDestructiveInspect
This tool calls the Actor "hirepulse/domain-seo-overview" and retrieves its output results. Actor description: Instant technical SEO audit, homepage metadata, canonical URLs, sitemaps, robots.txt, /llms.txt AI readiness and Chrome popularity tier for any website. Fast, zero-cost native mode with actionable findings. Perfect for n8n, Python, and AI agents.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Convenience alias for a full website URL. Used if domains is omitted. | |
| domain | No | Convenience alias for a single domain (e.g. "linear.app" or "https://stripe.com"). Used if domains is omitted. | |
| country | No | Country as a two-letter ISO code (e.g. US, GB, DE, AE). 94 countries are supported; the 20 most used are listed first. Default: "US". Example values: "US" | US |
| domains | No | Required. Websites to analyze, one per item, up to 100 per run. Full URLs are reduced to the domain. Example: ["stripe.com", "adyen.com"]. Example values: ["linear.app"] | |
| language | No | Two-letter language code. Leave empty for the country's main language. Example: "es" with country "US". Countries with more than one language: US: en/es; CA: en/fr; IN: en/hi; DZ: fr/ar; BE: fr/nl/de; CY: el/en; EG: ar/en; GR: el/en; HK: en/zh-TW; ID: en/id; IL: he/ar; MY: en/ms; MA: ar/fr; PK: en/ur; PH: en/tl; SG: en/zh-CN; CH: de/fr/it; UA: uk/ru; AE: ar/en; VN: en/vi. | |
| waitSecs | No | Max seconds (0–45, default 30) to cap the wait for the Actor run to reach terminal state. For long-running Actors the response returns at the cap with the current run status; follow `nextStep` to poll via get-actor-run. Set to 0 to fire-and-forget. | |
| competitors | No | Default: 0. Disabled in public mode. Measured SEO data requires a separately enabled paid provider; keep 0 for public-only research. | |
| top_keywords | No | Default: 0. Disabled in public mode. Measured SEO data requires a separately enabled paid provider; keep 0 for public-only research. | |
| use_paid_upstream | No | Off by default. Supported paid sources also require the owner-controlled HIREPULSE_ALLOW_PAID_UPSTREAM=1 environment setting. Keep false for all quality and smoke checks. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tip | No | Advisory guidance RAG Web Browser wrote to its key-value store under the reserved "TIP" key |
| runId | Yes | Actor run ID |
| stats | No | Run statistics |
| status | Yes | Run status: READY | RUNNING | TIMING-OUT | TIMED-OUT | ABORTING | ABORTED | SUCCEEDED | FAILED |
| actorId | Yes | Stable Apify Actor ID from the run record |
| summary | Yes | Past-tense summary of the run state |
| exitCode | No | Actor process exit code; populated for terminal states (especially FAILED) |
| nextStep | Yes | One primary follow-up action with identifiers interpolated |
| storages | Yes | Dataset and key-value store metadata, keyed by alias. "default" is always the primary entry. |
| actorName | No | "username/actor-name" |
| startedAt | No | ISO timestamp when the run started |
| finishedAt | No | ISO timestamp when the run finished (terminal states only) |
| statusMessage | No | Pass-through from Apify run.statusMessage |
| apifyConsoleUrl | No | Personalized Apify Console link to the run; present only for Console sessions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and openWorldHint=true, so the description should explain what makes this destructive or what it costs; instead it asserts 'Fast, zero-cost native mode' without acknowledging that the call spawns an Actor run, may wait up to 45s (waitSecs), or that paid upstream data exists behind owner opt-in. No run lifecycle, polling/nextStep behavior, or per-run limits (100 domains) are disclosed in the description. With a destructive annotation in play, this leaves the agent materially under-informed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, but the first is boilerplate ('calls the Actor ... and retrieves its output results') and the second mixes useful capability detail with filler ('Perfect for n8n, Python, and AI agents'). It is short but not front-loaded on what an agent actually needs to decide and call.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the schema description already covers the public-mode caveats (no traffic/ranking/volume data). However, for a destructive, open-world actor-run tool the description omits cost/credit implications, run-lifecycle behavior and sibling routing, leaving real gaps at the description level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all 9 parameters carry detailed descriptions, including the domains/url/domain aliasing, the 94-country enum, waitSecs semantics and the paid-upstream opt-in. The description adds nothing beyond that, so the baseline 3 applies — the schema does all the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource and output set: technical SEO audit covering homepage metadata, canonical URLs, sitemaps, robots.txt, /llms.txt AI readiness and Chrome popularity tier. An agent can tell this is a site-audit tool rather than a keyword-volume or job-scraper sibling. It loses a point because the opening sentence is a generic 'calls the Actor and retrieves its output' wrapper that adds no distinguishing information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description itself contains no when-to-use or when-not-to-use guidance; 'Perfect for n8n, Python, and AI agents' is marketing, not routing criteria. It never mentions the sibling tools (e.g. keyword-search-volume, company-intent-radar) or the public-vs-paid mode choice that would change which tool/params an agent picks. Only the separate schema description hints at usage ('inspect a site before a technical SEO audit'), and that is not in the description field.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hirepulse--google-ads-transparency-scraperhirepulse/google-ads-transparency-scraperBDestructiveInspect
This tool calls the Actor "hirepulse/google-ads-transparency-scraper" and retrieves its output results. Actor description: Scrape Google Ads Transparency Center records by company domain: ad creatives, formats, advertisers and first/last shown dates when available. Export JSON for competitor ad research, brand monitoring, n8n, Make and Apify MCP. Includes bulk domains and summary options.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | "ads": one record per ad (advertiser, format, first and last shown dates, preview and transparency links). "summary": one compact record per domain (runs_google_ads, total_ads, formats, advertisers, latest ad), charged per domain only, and domains without ads are free; best for lead lists and AI agents. Default: "ads". For a cheap agent check use mode="summary" with one domain. For an ad sample use mode="ads" and max_ads_per_domain=1. Example values: "ads" | ads |
| format | No | Only ads of this format: "all", "text", "image" or "video". Default: "all". Example values: "all" | all |
| country | No | Only ads shown in this country, as a two-letter ISO code. Example: "US", "GB" or "DE". Leave empty for ads shown in any country. | |
| date_to | No | Only ads shown on or before this date, YYYY-MM-DD. Example: "2026-09-30". Optional. | |
| domains | Yes | **REQUIRED** Required. Company websites, one per item, up to 100 per run. Full URLs are fine too. Example: ["nike.com", "adidas.com"]. Results include every advertiser whose ads lead to the domain, not only the brand itself. Example values: ["nike.com"] | |
| platform | No | Only ads shown on this Google platform: "all", "google_search", "youtube", "google_shopping", "google_play" or "google_maps". Default: "all". Example values: "all" | all |
| waitSecs | No | Max seconds (0–45, default 30) to cap the wait for the Actor run to reach terminal state. For long-running Actors the response returns at the cap with the current run status; follow `nextStep` to poll via get-actor-run. Set to 0 to fire-and-forget. | |
| date_from | No | Only ads shown on or after this date, YYYY-MM-DD. Example: "2026-09-01". Set together with date_to. Optional. | |
| only_new_ads | No | Return only ads that your earlier runs did not return yet, for the same domain and filters (remembered in your own Apify account). Use it with a daily or weekly schedule to monitor new competitor ads. The per-domain fee still applies when the domain runs ads, even if none of them is new. Default: false. | |
| use_paid_upstream | No | Off by default. Supported paid sources also require the owner-controlled HIREPULSE_ALLOW_PAID_UPSTREAM=1 environment setting. Keep false for all quality and smoke checks. | |
| max_ads_per_domain | No | Ads mode only: most recent ads to return per domain, 1 to 120. Each returned ad is one charged result. Default: 3. For a cheap agent check use mode="summary" with one domain. For an ad sample use mode="ads" and max_ads_per_domain=1. Example values: 3 |
Output Schema
| Name | Required | Description |
|---|---|---|
| tip | No | Advisory guidance RAG Web Browser wrote to its key-value store under the reserved "TIP" key |
| runId | Yes | Actor run ID |
| stats | No | Run statistics |
| status | Yes | Run status: READY | RUNNING | TIMING-OUT | TIMED-OUT | ABORTING | ABORTED | SUCCEEDED | FAILED |
| actorId | Yes | Stable Apify Actor ID from the run record |
| summary | Yes | Past-tense summary of the run state |
| exitCode | No | Actor process exit code; populated for terminal states (especially FAILED) |
| nextStep | Yes | One primary follow-up action with identifiers interpolated |
| storages | Yes | Dataset and key-value store metadata, keyed by alias. "default" is always the primary entry. |
| actorName | No | "username/actor-name" |
| startedAt | No | ISO timestamp when the run started |
| finishedAt | No | ISO timestamp when the run finished (terminal states only) |
| statusMessage | No | Pass-through from Apify run.statusMessage |
| apifyConsoleUrl | No | Personalized Apify Console link to the run; present only for Console sessions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true and openWorldHint=true, and the description is consistent with them (it triggers an Actor run, so not a pure read). Beyond that it adds only the generic framing 'calls the Actor ... and retrieves its output results'; it omits the cost model (per-result/per-domain charges), run duration, and the polling path — details that appear only inside parameter descriptions or not at all.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence, but the second sentence's tail — 'for competitor ad research, brand monitoring, n8n, Make and Apify MCP' — is channel marketing that adds no decision value for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the schema carries the parameter detail. However, for a paid, destructive, long-running scrape with 11 parameters, the description says nothing about billing, run lifecycle, or that an empty result is not evidence a brand never advertises — that caveat is buried in the schema description instead of the tool description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 11 parameters (including enum values, waitSecs cap, only_new_ads semantics and paid-upstream gating) are already documented in the schema. The description adds no parameter meaning of its own, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: scraping Google Ads Transparency Center records by company domain, listing the returned fields (creatives, formats, advertisers, first/last shown dates). It does not differentiate from sibling scrapers (aliexpress-search, youtube-transcript, domain-seo-overview), so an agent must infer from the domain topic alone which scraper to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It offers use contexts ('competitor ad research, brand monitoring') but no when-to-use/when-not guidance relative to siblings, and no routing to get-actor-run or get-dataset-items despite the tool being an Actor invocation. The mode-selection guidance (summary vs ads) lives in the schema parameter descriptions, not the tool description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hirepulse--google-jobs-scraperhirepulse/google-jobs-scraperADestructiveInspect
This tool calls the Actor "hirepulse/google-jobs-scraper" and retrieves its output results. Actor description: Google Jobs alternative for job research: search public job feeds by keyword or fetch company ATS jobs by domain. Export titles, employers, locations and apply links as JSON. Use with n8n, Make or Apify MCP. Default results come from public feeds, not Google Jobs SERPs.
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | Two-letter ISO country code, for example US, GB or DE. Public results must explicitly match this country or be confirmed remote roles available worldwide. Unknown geography is omitted; coverage is incomplete. Example values: "US" | US |
| queries | Yes | **REQUIRED** Required. Job searches as you would type them into Google, one per item, up to 50 per run. Example: ["data engineer", "nurse night shift"]. To get every job of one company, hirepulse/ats-job-pulse is the better fit. Example values: ["software engineer remote"] | |
| language | No | Two-letter language code. Leave empty for the country's main language. Example: "es" with country "US". Countries with more than one language: US: en/es; CA: en/fr; IN: en/hi; DZ: fr/ar; BE: fr/nl/de; CY: el/en; EG: ar/en; GR: el/en; HK: en/zh-TW; ID: en/id; IL: he/ar; MY: en/ms; MA: ar/fr; PK: en/ur; PH: en/tl; SG: en/zh-CN; CH: de/fr/it; UA: uk/ru; AE: ar/en; VN: en/vi. | |
| location | No | Optional city or region inside the country, such as Austin,Texas. Public results must mention the requested city or region; worldwide remote roles alone do not satisfy a city filter. Leave empty to search the country. | |
| waitSecs | No | Max seconds (0–45, default 30) to cap the wait for the Actor run to reach terminal state. For long-running Actors the response returns at the cap with the current run status; follow `nextStep` to poll via get-actor-run. Set to 0 to fire-and-forget. | |
| radius_km | No | Distance filtering, 1 to 300 km around location, requires an explicitly enabled paid source. Rejected on the default public-feed path; never silently ignored. | |
| employment_types | No | Optional fulltime, partime, contractor or intern filters. Requires an explicitly enabled paid source. Rejected on the default public-feed path; never silently ignored. The provider spelling for part-time is partime. | |
| use_paid_upstream | No | Off by default. Supported paid sources also require the owner-controlled HIREPULSE_ALLOW_PAID_UPSTREAM=1 environment setting. Keep false for all quality and smoke checks. | |
| max_jobs_per_query | No | Jobs to return per search, 1 to 200. Each returned job is one charged result. Example: 100. Default: 5. Example values: 5 | |
| include_descriptions | No | Add the full description text for jobs whose apply link is on a Workday, Greenhouse, Lever or Ashby job board; other jobs keep only apply_url. No extra charge; turn off for faster runs. Default: false. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tip | No | Advisory guidance RAG Web Browser wrote to its key-value store under the reserved "TIP" key |
| runId | Yes | Actor run ID |
| stats | No | Run statistics |
| status | Yes | Run status: READY | RUNNING | TIMING-OUT | TIMED-OUT | ABORTING | ABORTED | SUCCEEDED | FAILED |
| actorId | Yes | Stable Apify Actor ID from the run record |
| summary | Yes | Past-tense summary of the run state |
| exitCode | No | Actor process exit code; populated for terminal states (especially FAILED) |
| nextStep | Yes | One primary follow-up action with identifiers interpolated |
| storages | Yes | Dataset and key-value store metadata, keyed by alias. "default" is always the primary entry. |
| actorName | No | "username/actor-name" |
| startedAt | No | ISO timestamp when the run started |
| finishedAt | No | ISO timestamp when the run finished (terminal states only) |
| statusMessage | No | Pass-through from Apify run.statusMessage |
| apifyConsoleUrl | No | Personalized Apify Console link to the run; present only for Console sessions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, destructiveHint=true and openWorldHint=true, but the description never addresses mutation/state impact, cost, or credential requirements. It does add genuine non-schema context: results come from public feeds rather than Google SERPs, and paid upstream sources are off by default. Per-result charging and wait/poll behavior are disclosed only in the schema, so the added value is moderate rather than strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, reasonably front-loaded, with the SERP-vs-public-feed caveat placed early where it matters most. The integration sentence ('Use with n8n, Make or Apify MCP') is filler that does not help an agent decide or invoke, keeping it out of the top band.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and all 10 parameters are fully described in the schema. The description supplies the crucial coverage caveat (public feeds, not Google Jobs SERPs) that an agent needs to avoid overpromising results. What is missing is cost/charging disclosure and explicit routing to alternatives, which are relevant given destructiveHint=true and a large sibling set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across all 10 parameters, including detailed enum, language-per-country, and paid-source caveats, so the schema carries the burden. The description adds essentially no parameter-level detail beyond restating that output is JSON. Baseline 3 applies when the schema already documents everything.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete resource and mode of operation: search public job feeds by keyword or fetch company ATS jobs by domain, returning titles, employers, locations and apply links. That is specific enough to distinguish it from generic scrapers in the sibling list. The opening wrapper sentence ('calls the Actor ... and retrieves its output results') is boilerplate, and the claim of 'fetch company ATS jobs by domain' is partly walked back by the schema note pointing to ats-job-pulse for per-company coverage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies research use and warns that default results come from public feeds rather than Google Jobs SERPs, which is a useful scoping cue. But it gives no explicit when-to-use/when-not guidance and never names an alternative tool; the only routing advice ('ats-job-pulse is the better fit') lives in the queries parameter schema, not the description. 'Use with n8n, Make or Apify MCP' is integration marketing, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hirepulse--keyword-search-volumehirepulse/keyword-search-volumeBDestructiveInspect
This tool calls the Actor "hirepulse/keyword-search-volume" and retrieves its output results. Actor description: Generate Google Autocomplete keyword suggestions from seed phrases for SEO, content planning and keyword research. Export keywords, source and availability fields as JSON for n8n, Make and Apify MCP. Public mode returns no measured search volume, CPC or difficulty.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Default: "suggestions". Public mode returns autocomplete suggestions with metrics_available=false and null volume/CPC. Measured metrics and ideas require a separately enabled paid provider. Example values: "suggestions" | suggestions |
| country | No | Country as a two-letter ISO code (e.g. US, GB, DE, AE). 94 countries are supported; the 20 most used are listed first. Default: "US". Example values: "US" | US |
| keywords | Yes | **REQUIRED** Required. Seed phrases as an array; one phrase per item. Example: ["web scraping"]. Public suggestions use autocomplete and do not include measured search volume or CPC. No target is supplied automatically to API callers. Example values: ["web scraping"] | |
| language | No | Two-letter language code. Leave empty for the country's main language. Example: "es" with country "US". Countries with more than one language: US: en/es; CA: en/fr; IN: en/hi; DZ: fr/ar; BE: fr/nl/de; CY: el/en; EG: ar/en; GR: el/en; HK: en/zh-TW; ID: en/id; IL: he/ar; MY: en/ms; MA: ar/fr; PK: en/ur; PH: en/tl; SG: en/zh-CN; CH: de/fr/it; UA: uk/ru; AE: ar/en; VN: en/vi. | |
| waitSecs | No | Max seconds (0–45, default 30) to cap the wait for the Actor run to reach terminal state. For long-running Actors the response returns at the cap with the current run status; follow `nextStep` to poll via get-actor-run. Set to 0 to fire-and-forget. | |
| max_results | No | Only for "ideas" and "suggestions": maximum keywords to return (per seed in "suggestions" mode), 1 to 1,000. Each returned keyword with metrics is one charged result. Example: 30. Default: 5. Example values: 5 | |
| min_search_volume | No | Return only keywords with at least this many monthly searches. Keywords below it are not returned and not charged. Example: 100. Default: 0 (no minimum). | |
| use_paid_upstream | No | Off by default. Supported paid sources also require the owner-controlled HIREPULSE_ALLOW_PAID_UPSTREAM=1 environment setting. Keep false for all quality and smoke checks. | |
| include_ai_search_volume | No | Also return ai_search_volume, an estimate of how often each keyword is used in AI assistants per month. Costs one extra lookup per batch plus one result for every keyword with AI data; where the data is not available, the field stays null and nothing extra is charged. Default: false. | |
| include_monthly_searches | No | Add a monthly_searches array with the search volume of each of the last 12 months. Default: false, which keeps the output small. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tip | No | Advisory guidance RAG Web Browser wrote to its key-value store under the reserved "TIP" key |
| runId | Yes | Actor run ID |
| stats | No | Run statistics |
| status | Yes | Run status: READY | RUNNING | TIMING-OUT | TIMED-OUT | ABORTING | ABORTED | SUCCEEDED | FAILED |
| actorId | Yes | Stable Apify Actor ID from the run record |
| summary | Yes | Past-tense summary of the run state |
| exitCode | No | Actor process exit code; populated for terminal states (especially FAILED) |
| nextStep | Yes | One primary follow-up action with identifiers interpolated |
| storages | Yes | Dataset and key-value store metadata, keyed by alias. "default" is always the primary entry. |
| actorName | No | "username/actor-name" |
| startedAt | No | ISO timestamp when the run started |
| finishedAt | No | ISO timestamp when the run finished (terminal states only) |
| statusMessage | No | Pass-through from Apify run.statusMessage |
| apifyConsoleUrl | No | Personalized Apify Console link to the run; present only for Console sessions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true and openWorldHint=true, and the description is consistent with them (it triggers an Actor run). It adds a genuinely useful behavioral caveat — public mode returns no measured volume/CPC/difficulty and null fields — but omits the cost/billing implications of running the Actor and the async wait/poll behavior that the schema documents.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is a reasonable length and the substantive actor description is present, but the opening sentence ('This tool calls the Actor ... and retrieves its output results') is reusable boilerplate that restates the title and eats front-loaded space. The useful scoping caveat lands in the final sentence rather than early.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering the safety profile, the description needn't explain returns or safety. It adequately conveys purpose and the metrics limitation, but for a 10-parameter, credit-consuming Actor call it omits the run lifecycle (waitSecs/polling) and cost context an agent should weigh before invoking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all ten parameters are already documented in the schema, and the description adds no syntax or format detail beyond it. Its one semantic contribution is reinforcing that 'suggestions' mode yields no metrics, which loosely relates to the mode parameter. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The actor description states a specific verb+resource: 'Generate Google Autocomplete keyword suggestions from seed phrases'. This distinguishes it from the sibling scrapers (aliexpress, google-jobs, youtube-transcript). However, the leading sentence is boilerplate meta ('calls the Actor ... retrieves its output results') and the tool name misleadingly implies search volume, which the description must then walk back.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names use cases ('for SEO, content planning and keyword research') but gives no when-to-use/when-not guidance and names no alternative sibling tools. The mode/limitation notes are constraints rather than routing guidance, so an agent gets no help choosing between this and the other hirepulse scrapers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hirepulse--youtube-transcript-scraperhirepulse/youtube-transcript-scraperADestructiveInspect
This tool calls the Actor "hirepulse/youtube-transcript-scraper" and retrieves its output results. Actor description: Extract YouTube transcripts in bulk from videos, Shorts and live replays with accessible captions. Export clean text, caption language and optional timestamps for RAG, summaries and content research. No YouTube API key; works with n8n, Make and Apify MCP.
| Name | Required | Description | Default |
|---|---|---|---|
| videos | Yes | **REQUIRED** Required. YouTube video URLs or 11-character video IDs, one per item, up to 1,000 per run. Regular links, youtu.be links, Shorts, embeds and live links all work. Example: ["https://youtu.be/jNQXAC9IVRw"]. Each delivered transcript is one charged result; videos without captions are not charged. Example values: ["https://youtu.be/jNQXAC9IVRw"] | |
| language | No | Preferred caption language as a two-letter code. Example: "es". If the video has captions in it they are used; otherwise the main captions are returned and the language field says which. Leave empty for the main captions. | |
| waitSecs | No | Max seconds (0–45, default 30) to cap the wait for the Actor run to reach terminal state. For long-running Actors the response returns at the cap with the current run status; follow `nextStep` to poll via get-actor-run. Set to 0 to fire-and-forget. | |
| use_paid_upstream | No | Off by default. Supported paid sources also require the owner-controlled HIREPULSE_ALLOW_PAID_UPSTREAM=1 environment setting. Keep false for all quality and smoke checks. | |
| include_timestamps | No | Add a segments array with the start time, duration and text of every caption line. Default: false, which keeps the output small. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tip | No | Advisory guidance RAG Web Browser wrote to its key-value store under the reserved "TIP" key |
| runId | Yes | Actor run ID |
| stats | No | Run statistics |
| status | Yes | Run status: READY | RUNNING | TIMING-OUT | TIMED-OUT | ABORTING | ABORTED | SUCCEEDED | FAILED |
| actorId | Yes | Stable Apify Actor ID from the run record |
| summary | Yes | Past-tense summary of the run state |
| exitCode | No | Actor process exit code; populated for terminal states (especially FAILED) |
| nextStep | Yes | One primary follow-up action with identifiers interpolated |
| storages | Yes | Dataset and key-value store metadata, keyed by alias. "default" is always the primary entry. |
| actorName | No | "username/actor-name" |
| startedAt | No | ISO timestamp when the run started |
| finishedAt | No | ISO timestamp when the run finished (terminal states only) |
| statusMessage | No | Pass-through from Apify run.statusMessage |
| apifyConsoleUrl | No | Personalized Apify Console link to the run; present only for Console sessions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnly=false, destructive=true, openWorld=true, but the description adds context annotations cannot: no YouTube API key required, it does not transcribe audio, captions are not guaranteed, and unavailable/blocked/captionless videos return explained outcomes. That sets accurate expectations for output failures. It does not address the surprising destructiveHint=true or the fact that a run is started, which leaves a small gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The lead sentence is pure boilerplate about invoking an Actor, and the tail includes marketing filler ('No YouTube API key; works with n8n, Make and Apify MCP'). The useful content — bulk extraction scope and the no-transcription caveat — is buried mid-text rather than front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a full input schema, an output schema, and annotations already supplied, the description only needs to frame purpose and limits — which it does, including the caption-availability caveat and error outcomes. Only the run-lifecycle/polling implication is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the `videos` array, `language`, `waitSecs`, `use_paid_upstream` and `include_timestamps` all documented in detail including examples and charging semantics. The description adds nothing parameter-specific beyond 'optional timestamps,' so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The second sentence gives a specific verb and resource: 'Extract YouTube transcripts in bulk from videos, Shorts and live replays.' That is enough for an agent to distinguish it from siblings like google-jobs-scraper or ats-job-pulse. The first sentence is boilerplate ('calls the Actor ... and retrieves its output results') and does no differentiating work, but the net purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names target scenarios ('for RAG, summaries and content research') and mentions integration contexts (n8n, Make, Apify MCP), which implies when to reach for it. However, there is no explicit when-not guidance and no routing between this tool and siblings such as get-dataset-items or get-actor-run, which a caller may also need for long runs.
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 tool update
- Changed
hirepulse--company-intent-radar3 fields changed- changed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / latest_job_posted / typePrevious value: -[ - "null", - "string" -]New value: +"string" - added
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / top_departments / itemsAdded value: +{ + "type": "string" +} - added
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / top_departments / typeAdded value: +"array"
1 tool update
- Changed
hirepulse--company-intent-radar3 fields changed- changed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / latest_job_posted / typePrevious value: -"string"New value: +[ + "null", + "string" +] - removed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / top_departments / itemsRemoved value: -{ - "type": "string" -} - removed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / top_departments / typeRemoved value: -"array"
1 tool update
- Changed
hirepulse--company-intent-radar3 fields changed- changed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / latest_job_posted / typePrevious value: -[ - "string", - "null" -]New value: +"string" - added
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / top_departments / itemsAdded value: +{ + "type": "string" +} - added
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / top_departments / typeAdded value: +"array"
1 tool update
- Changed
hirepulse--company-intent-radar1 field changed- changed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / latest_job_posted / typePrevious value: -[ - "null", - "string" -]New value: +[ + "string", + "null" +]
1 tool update
- Changed
hirepulse--company-intent-radar3 fields changed- changed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / latest_job_posted / typePrevious value: -"string"New value: +[ + "null", + "string" +] - removed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / top_departments / itemsRemoved value: -{ - "type": "string" -} - removed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / top_departments / typeRemoved value: -"array"
1 tool update
- Changed
hirepulse--company-intent-radar3 fields changed- changed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / latest_job_posted / typePrevious value: -[ - "string", - "null" -]New value: +"string" - added
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / top_departments / itemsAdded value: +{ + "type": "string" +} - added
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / top_departments / typeAdded value: +"array"
1 tool update
- Changed
hirepulse--company-intent-radar1 field changed- changed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / latest_job_posted / typePrevious value: -[ - "null", - "string" -]New value: +[ + "string", + "null" +]
1 tool update
- Changed
hirepulse--company-intent-radar1 field changed- changed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / latest_job_posted / typePrevious value: -[ - "string", - "null" -]New value: +[ + "null", + "string" +]
1 tool update
- Changed
hirepulse--company-intent-radar3 fields changed- changed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / latest_job_posted / typePrevious value: -"string"New value: +[ + "string", + "null" +] - removed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / top_departments / itemsRemoved value: -{ - "type": "string" -} - removed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / top_departments / typeRemoved value: -"array"
1 tool update
- Changed
hirepulse--company-intent-radar3 fields changed- changed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / latest_job_posted / typePrevious value: -[ - "null", - "string" -]New value: +"string" - added
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / top_departments / itemsAdded value: +{ + "type": "string" +} - added
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / top_departments / typeAdded value: +"array"
2 tool updates
- Changed
hirepulse--aliexpress-search-scraper17 fields changed- added
Input schema / properties / queries / defaultAdded value: +[ + "yoga mat" +] - changed
Input schema / properties / queries / descriptionPrevious value: -"**REQUIRED** Required. AliExpress search keywords, one per item, up to 20 per run. Example: [\"yoga mat\", \"usb c cable\"]. Keyword searches only; product page URLs are not supported.\nExample values: [\"yoga mat\"]"New value: +"AliExpress search keywords, one per item, up to 20 per run. Also accepts singular \"query\", \"keyword\", or \"search\". Example: [\"yoga mat\", \"usb c cable\"].\nExample values: [\"yoga mat\"]" - changed
Input schema / properties / queries / items / descriptionPrevious value: -"**REQUIRED** Required. AliExpress search keywords, one per item, up to 20 per run. Example: [\"yoga mat\", \"usb c cable\"]. Keyword searches only; product page URLs are not supported."New value: +"AliExpress search keywords, one per item, up to 20 per run. Also accepts singular \"query\", \"keyword\", or \"search\". Example: [\"yoga mat\", \"usb c cable\"]." - changed
Input schema / requiredPrevious value: -[ - "queries" -]New value: +[] - added
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / badgeAdded value: +{ + "type": [ + "null", + "string" + ] +} - removed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / chargedRemoved value: -{ - "type": "boolean" -} - added
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / gallery_imagesAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +} - removed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / messageRemoved value: -{ - "type": "string" -} - removed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / needs_attentionRemoved value: -{ - "type": "boolean" -} - changed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / original_price / typePrevious value: -[ - "number", - "null" -]New value: +"number" - changed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / rating / typePrevious value: -[ - "number", - "null" -]New value: +"number" - added
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / shippingAdded value: +{ + "properties": { + "cost": { + "type": "null" + }, + "delivery_estimate": { + "type": "null" + }, + "free_shipping": { + "type": "boolean" + }, + "ship_from": { + "type": "string" + } + }, + "type": "object" +} - added
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / sku_idAdded value: +{ + "type": "string" +} - changed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / sold / typePrevious value: -[ - "number", - "null" -]New value: +"number" - changed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / sold_text / typePrevious value: -[ - "string", - "null" -]New value: +"string" - removed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / statusRemoved value: -{ - "type": "string" -} - added
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / tagsAdded value: +{ + "items": {}, + "type": "array" +}
- Changed
hirepulse--company-intent-radar3 fields changed- changed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / latest_job_posted / typePrevious value: -"string"New value: +[ + "null", + "string" +] - removed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / top_departments / itemsRemoved value: -{ - "type": "string" -} - removed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / top_departments / typeRemoved value: -"array"
1 tool update
- Changed
hirepulse--aliexpress-search-scraper2 fields changed- changed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / original_price / typePrevious value: -[ - "null", - "number" -]New value: +[ + "number", + "null" +] - changed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / rating / typePrevious value: -[ - "null", - "number" -]New value: +[ + "number", + "null" +]
1 tool update
- Changed
hirepulse--aliexpress-search-scraper2 fields changed- changed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / original_price / typePrevious value: -[ - "number", - "null" -]New value: +[ + "null", + "number" +] - changed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / rating / typePrevious value: -[ - "number", - "null" -]New value: +[ + "null", + "number" +]
2 tool updates
- Changed
hirepulse--aliexpress-search-scraper2 fields changed- changed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / original_price / typePrevious value: -[ - "null", - "number" -]New value: +[ + "number", + "null" +] - changed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / rating / typePrevious value: -[ - "null", - "number" -]New value: +[ + "number", + "null" +]
- Changed
hirepulse--company-intent-radar3 fields changed- changed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / latest_job_posted / typePrevious value: -[ - "string", - "null" -]New value: +"string" - added
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / top_departments / itemsAdded value: +{ + "type": "string" +} - added
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / top_departments / typeAdded value: +"array"
2 tool updates
- Changed
hirepulse--aliexpress-search-scraper2 fields changed- changed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / original_price / typePrevious value: -[ - "number", - "null" -]New value: +[ + "null", + "number" +] - changed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / rating / typePrevious value: -[ - "number", - "null" -]New value: +[ + "null", + "number" +]
- Changed
hirepulse--company-intent-radar1 field changed- changed
Output schema / properties / storages / properties / datasets / properties / default / properties / itemsSchema / properties / latest_job_posted / typePrevious value: -[ - "null", - "string" -]New value: +[ + "string", + "null" +]
Publisher details
- Operator
- Unknown
- Operator website
- Unknown
- Vendor relationship
- Unknown
- Documentation
- Unknown
- Trust center
- Unknown
- Restrictions
- Unknown
Related MCP Connectors
Web scraping, search, crawling, structured extraction and research for AI agents.
Public web data for AI agents: scrape any page, plus Google, TikTok, Instagram and Amazon as JSON.
Hiring, SEC, research papers, GitHub & Hacker News as JSON for AI agents. Pay-per-result on Apify.
Public web data as clean JSON for AI agents: Google, Amazon, TikTok, Instagram, YouTube, LinkedIn, Google Maps, Reddit, Zillow and hundreds more websites. One API key, pay per call, failed calls are free.
Related MCP Servers
AlicenseAqualityCmaintenanceWeb data for AI agents: scrape, crawl, search, deep research, site monitoring, browser automation2268 npm3Apache 2.0- AlicenseAqualityAmaintenance21 web-data tools for AI agents: jobs, hiring signals, news, research and field trends, reviews, Reddit leads, contacts, property, Shopify, events.44329 npm1MIT
- AlicenseAqualityAmaintenance17 data tools for AI agents: Google Flights, Hotels, Shopping, News, Images, Videos, Jobs and Trends, Google Maps leads, Ads Transparency, YouTube transcripts, app reviews and AI visibility. Each tool runs an AutomationNation Actor on your own Apify account.18MIT

subimpact-data-mcpofficial
AlicenseAqualityBmaintenance19 public-data tools for AI agents: Google SERP with full AI Overviews, Google AI Mode, Southeast Asia + global news mentions, Google Maps, Jobs, Trends, Ads Transparency, website contacts, YouTube, TikTok and more. Each tool runs a pay-per-result Apify actor on your own Apify token, with a per-call spending cap.20702 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.