AutoIsto — car watch
Watches Slovak used-car ads for a buyer. Takes no contact; active only after e-mail opt-in.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"intents": {
"url": "https://www.autoisto.sk/mcp/zamery"
}
}
}Remote endpoints
https://www.autoisto.sk/mcp/zamerystreamable-httpWhat it can do
Tool inventory
Tools (4)
🟡intent_publish_intent(statement, niceToHave, buyBy, hiddenLimitEur)
Use this when the user asks AutoIsto to keep watching Slovak car listings for them over time (e.g. "let me know until March about an estate car under 15 000 €, not diesel"). This does NOT start watching by itself and takes no e-mail address or other personal data: it returns a consentUrl on www.autoisto.sk that the user must open themselves, enter their own e-mail there and confirm by clicking the link AutoIsto e-mails them. Never ask the user for their e-mail in the conversation and never open the link for them. An unconfirmed draft is deleted after 24 hours. Matching cars are e-mailed to the user and can also be read with intent_list_matches using the returned intentCode — keep it in the conversation. hiddenLimitEur is optional: the most the user would pay, stored encrypted and never shown to sellers or returned by any tool; pass it only if the user said it. Matches come from listings AutoIsto aggregates from the Slovak market (its own sellers' listings and public listings from Slovak car portals), so they cover only cars listed on AutoIsto (Slovakia, EUR) and may be incomplete.
Input Schema
{
"type": "object",
"properties": {
"statement": {
"type": "string",
"minLength": 2,
"maxLength": 300,
"description": "What the car MUST be, as one short Slovak or Czech phrase, e.g. \"kombi do 15000 € nie diesel\"."
},
"niceToHave": {
"description": "Wishes that are not required (never filters), e.g. \"ťažné, automat\".",
"type": "string",
"maxLength": 300
},
"buyBy": {
"description": "Date (YYYY-MM-DD) by which the user wants to buy; watching stops after it.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"hiddenLimitEur": {
"description": "Optional private maximum price in EUR; encrypted on receipt and never returned by any tool.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 10000000
}
},
"required": [
"statement"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"intentCode": {
"type": "string",
"description": "Secret code of this intent; use it with intent_get_intent, intent_list_matches and intent_withdraw_intent."
},
"status": {
"type": "string",
"enum": [
"awaiting_consent",
"awaiting_email_confirmation",
"active",
"expired",
"withdrawn"
],
"description": "awaiting_consent = the user has not confirmed on the AutoIsto page yet; awaiting_email_confirmation = the user filled in the page and must click the link in the e-mail; active = AutoIsto is watching; expired = the confirmation link, the buy-by date or the intent's validity ran out; withdrawn = cancelled."
},
"consentUrl": {
"type": "string",
"description": "Page on www.autoisto.sk where the USER confirms the intent with their own e-mail. Show it unchanged."
},
"consentExpiresAt": {
"type": "string",
"description": "ISO time after which the unconfirmed draft is deleted."
},
"statement": {
"type": "string"
},
"niceToHave": {
"type": [
"string",
"null"
]
},
"buyBy": {
"type": [
"string",
"null"
]
},
"hasHiddenLimit": {
"type": "boolean",
"description": "Whether a hidden limit was stored. Its value is never returned."
},
"understood": {
"type": "array",
"items": {
"type": "string"
},
"description": "What AutoIsto will watch for, read from the statement (in Slovak). Tell the person before they confirm."
},
"notUnderstood": {
"type": "array",
"items": {
"type": "string"
},
"description": "Words of the statement that are NOT watched for. Tell the person."
}
},
"required": [
"intentCode",
"status",
"consentUrl",
"consentExpiresAt",
"statement",
"niceToHave",
"buyBy",
"hasHiddenLimit",
"understood",
"notUnderstood"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢intent_get_intent(intentCode)
Use this to check whether an intent created with intent_publish_intent is already confirmed by the user and active, waiting, expired or withdrawn. Requires the intentCode; returns the statement and dates only — never the user's e-mail, the hidden limit or any other personal data.
Input Schema
{
"type": "object",
"properties": {
"intentCode": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{32}$",
"description": "The intentCode returned by intent_publish_intent."
}
},
"required": [
"intentCode"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"found": {
"type": "boolean"
},
"status": {
"description": "awaiting_consent = the user has not confirmed on the AutoIsto page yet; awaiting_email_confirmation = the user filled in the page and must click the link in the e-mail; active = AutoIsto is watching; expired = the confirmation link, the buy-by date or the intent's validity ran out; withdrawn = cancelled.",
"type": "string",
"enum": [
"awaiting_consent",
"awaiting_email_confirmation",
"active",
"expired",
"withdrawn"
]
},
"statement": {
"type": "string"
},
"niceToHave": {
"type": [
"string",
"null"
]
},
"buyBy": {
"type": [
"string",
"null"
]
},
"validUntil": {
"description": "Date (YYYY-MM-DD) until which the intent is watched (before confirmation: until the draft is deleted).",
"type": "string"
},
"activeSince": {
"type": [
"string",
"null"
]
},
"hasHiddenLimit": {
"type": "boolean"
}
},
"required": [
"found"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢intent_list_matches(intentCode, since)
Use this when the user asks what AutoIsto has found for an intent created with intent_publish_intent. These are the same cars AutoIsto e-mails to the user; this server cannot send messages into the conversation by itself. Requires the intentCode; optional since (ISO time) returns only newer matches. Returns at most 20 newest matches with the price and AutoIsto price verdict at the time of the match and a link. Before the user confirms the intent there are no matches. Matches come from listings AutoIsto aggregates from the market, so they cover only cars listed on AutoIsto and may be incomplete; a car may already be sold.
Input Schema
{
"type": "object",
"properties": {
"intentCode": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{32}$",
"description": "The intentCode returned by intent_publish_intent."
},
"since": {
"description": "Only matches found after this ISO time.",
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
}
},
"required": [
"intentCode"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"found": {
"type": "boolean"
},
"status": {
"description": "awaiting_consent = the user has not confirmed on the AutoIsto page yet; awaiting_email_confirmation = the user filled in the page and must click the link in the e-mail; active = AutoIsto is watching; expired = the confirmation link, the buy-by date or the intent's validity ran out; withdrawn = cancelled.",
"type": "string",
"enum": [
"awaiting_consent",
"awaiting_email_confirmation",
"active",
"expired",
"withdrawn"
]
},
"matches": {
"type": "array",
"items": {
"type": "object",
"properties": {
"carId": {
"type": "string"
},
"brand": {
"type": "string"
},
"model": {
"type": "string"
},
"year": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"mileageKm": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"priceEur": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Asking price today."
},
"priceEurAtMatch": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"priceVerdictAtMatch": {
"anyOf": [
{
"type": "string",
"enum": [
"below_market",
"around_market",
"above_market"
]
},
{
"type": "null"
}
]
},
"matchedAt": {
"type": "string"
},
"stillListed": {
"type": "boolean"
},
"url": {
"type": "string",
"description": "Link to the car on www.autoisto.sk — show it unchanged."
}
},
"required": [
"carId",
"brand",
"model",
"year",
"mileageKm",
"priceEur",
"priceEurAtMatch",
"priceVerdictAtMatch",
"matchedAt",
"stillListed",
"url"
],
"additionalProperties": false
}
},
"more": {
"description": "More matches exist than returned; call again with since.",
"type": "boolean"
}
},
"required": [
"found"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🔴intent_withdraw_intent(intentCode)
Use this when the user wants AutoIsto to stop watching for an intent created with intent_publish_intent. Takes effect immediately; nothing more is e-mailed for it. Requires the intentCode.
Input Schema
{
"type": "object",
"properties": {
"intentCode": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{32}$",
"description": "The intentCode returned by intent_publish_intent."
}
},
"required": [
"intentCode"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"found": {
"type": "boolean"
},
"status": {
"type": "string",
"enum": [
"withdrawn"
]
}
},
"required": [
"found"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}Community
Evidence