Analyses up to 50 customer reviews with AI
Analyses up to 50 customer reviews with AI: sentiment, star-rating match, complaint and praise themes, urgency, and optionally a ready-to-post owner reply each, plus a business report with top issues. $0.002 per review, $0.005 per reply drafted, $0.03 per business report (output reviews_only skips it). Runs nerolabs/review-analyzer.
Answeringour last check, 2026-10-21
1 of 1checks answered this week
515 msmedian answer time
$0.002listed price per call
$0.002price it asked us
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
POST https://x402-agent-tools.nerolabs.workers.dev/ai/review-analyze
| Category | Everything else |
|---|---|
| Provider host | x402-agent-tools.nerolabs.workers.dev |
| Networks | eip155:8453 |
| Payment schemes | exact |
| Self-reported calls, 30 days | 0 from 0 payers (the provider's figure, not ours) |
Our checks, last 30 days
| Day | Result | HTTP | Asked | Time |
|---|---|---|---|---|
| 2026-10-21 | valid payment request | 402 | $0.002 | 515 ms |
Example input (from the provider)
{
"body": {
"businessName": "Example Bistro",
"output": "reviews_only",
"reviewTexts": [
"Great food but we waited 40 minutes for a table and nobody apologised."
]
},
"bodyType": "json",
"method": "POST",
"type": "http"
}
Promised output schema (from the provider)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"additionalProperties": false,
"properties": {
"businessName": {
"description": "Name to use when your data has no business column (for example pasted review texts or one company's export). Reviews are grouped into one report per business; with no business column and no name they are reported together as 'All reviews'.",
"type": "string"
},
"output": {
"default": "reviews_and_reports",
"description": "What to return. 'Reviews and business reports' gives one analysed row per review plus one report row per business (rowType tells them apart). 'Reviews only' skips the reports. 'Business reports only' returns just the report rows; every review is still analysed and charged, because the report is buil",
"enum": [
"reviews_and_reports",
"reviews_only",
"reports_only"
],
"type": "string"
},
"replyContact": {
"description": "Optional line added, exactly as written, to replies to negative reviews and to mixed reviews of 3 stars or less, for example 'Please call us on 01234 567890 so we can put this right.' Without it, replies to complaints just invite the customer to get in touch, and never invent a phone number or email",
"type": "string"
},
"replyDrafts": {
"default": false,
"description": "Adds a ready-to-post owner reply to each review (charged per reply, on top of the review). Replies thank the customer, respond to their actual points, and never promise refunds, discounts or compensation, never admit fault and never invent facts. A draft that breaks a rule is rewritten once, then wi",
"type": "boolean"
},
"replyLanguage": {
"default": "same",
"description": "Leave as 'same' to reply in each review's own language, or name one language (for example 'English' or 'Spanish') for every reply.",
"type": "string"
},
"replySignOff": {
"description": "Added at the end of every reply, for example 'The Riverside Cafe team' or 'Sam, Owner'. Leave empty for no sign-off.",
"type": "string"
},
"replyTone": {
"default": "warm",
"description": "How the replies should sound.",
"enum": [
"warm",
"professional",
"short"
],
"type": "string"
},
"reviewTexts": {
"description": "A plain list of reviews pasted as text, one per entry, for a quick run with no file. Use a dataset, file or Google Sheet to keep star ratings, dates and your own columns.",
"type": "array"
},
"themes": {
"description": "Leave empty and the AI names each complaint and praise point in a few plain words. Or give your own list (for example 'waiting time', 'staff', 'cleanliness', 'price') and every point is tagged with one of yours, so runs stay comparable month to month.",
"type": "array"
}
},
"required": [
"reviewTexts"
],
"type": "object"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
},
"method": {
"enum": [
"POST"
],
"type": "string"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method",
"bodyType",
"body"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}