Isto Intents MCP
This MCP server allows AI assistants to publish, retrieve, list matches for, and withdraw user intents for used cars or homes. It forwards these wishes to specific listing portals in supported countries (Slovakia and Czechia), where the user confirms the request via email. The server enables agents to monitor listings and notify users when items matching their criteria appear.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://istointents.com/mcpWhat you can do with it
- Publish a wish for a used car or home to a local listing portal
- Check the status of an active intent or wish
- List matching items found by the portal for a specific intent
- Withdraw or cancel an existing intent
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- istointents-forwarder 0.2.0
- MCP protocol
- 2025-06-18
- Tools
- 4 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
4 advertised
intent_publish_intent — Ask a local portal to keep looking for the user (needs the user's confirmation)
Use this when the user wants to be told over time about a used car or a home that is not on offer today, in a given country — e.g. "let me know until March about an estate car in Portugal under 15 000 €, not diesel". The wish goes to an independent listing portal that serves that country and has asked to receive wishes this way (Isto Intents registry, istointents.org). It returns that portal's own consentUrl: the USER must open it, enter their own e-mail there and confirm — nothing is watched before that, and the contact stays with that portal. Never ask the user for their e-mail and never open or fill in the link for them. If several portals fit, the answer is outcome "choose_holder" with their names: ask the user which one, then call again with holder. If none serves the country yet, the answer is outcome "no_holder": tell the user plainly. Send the country only, never a city or address. hiddenLimit is optional and only if the user said it: it is passed once to the portal, sealed there, never stored here or shown to sellers. Matches come from the chosen portal's own aggregation of its national market and may be incomplete.
{
"type": "object",
"required": [
"statement",
"country",
"category"
],
"properties": {
"buyBy": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Date (YYYY-MM-DD) by which the user wants to buy; watching stops after it."
},
"holder": {
"type": "string",
"maxLength": 253,
"description": "Only after a \"choose_holder\" answer: the host of the portal the user chose."
},
"country": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "Country where the user wants to buy, ISO 3166-1 alpha-2 (e.g. PT, SK, CZ). Country only."
},
"category": {
"enum": [
"vehicle",
"property"
],
"type": "string",
"description": "vehicle = cars and other road vehicles; property = homes, flats and land."
},
"statement": {
"type": "string",
"maxLength": 500,
"minLength": 2,
"description": "What it MUST be, in the user's own words and language, e.g. \"estate car under 15000 €, not diesel\"."
},
"niceToHave": {
"type": "string",
"maxLength": 500,
"description": "Wishes that are not required (never filters), e.g. \"tow bar, automatic\"."
},
"hiddenLimit": {
"type": "object",
"required": [
"amount",
"currency"
],
"properties": {
"amount": {
"type": "integer",
"maximum": 1000000000,
"minimum": 1
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "ISO 4217, e.g. EUR, CZK, PLN"
}
},
"description": "Optional private maximum price, only if the user stated it.",
"additionalProperties": false
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"outcome"
],
"properties": {
"holder": {
"type": "object",
"required": [
"host",
"operator"
],
"properties": {
"host": {
"type": "string"
},
"title": {
"type": "string"
},
"operator": {
"type": "string"
}
}
},
"served": {
"type": "array",
"items": {
"type": "object",
"properties": {
"country": {
"type": "string"
},
"category": {
"type": "string"
}
}
},
"description": "With no_holder: where portals can be reached today."
},
"status": {
"type": "string"
},
"holders": {
"type": "array",
"items": {
"type": "object",
"required": [
"host",
"operator"
],
"properties": {
"host": {
"type": "string"
},
"title": {
"type": "string"
},
"operator": {
"type": "string"
},
"languages": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
},
"outcome": {
"enum": [
"forwarded",
"choose_holder",
"no_holder"
],
"type": "string"
},
"consentUrl": {
"type": "string",
"description": "The portal's page where the USER confirms with their own e-mail. Show it unchanged."
},
"intentCode": {
"type": "string",
"description": "Keep it in the conversation; use it with intent_get_intent, intent_list_matches and intent_withdraw_intent."
},
"understood": {
"type": "array",
"items": {
"type": "string"
}
},
"hiddenLimit": {
"enum": [
"none",
"passed",
"currency_not_accepted",
"not_supported"
],
"type": "string",
"description": "What happened to the hidden limit. If not passed, tell the user."
},
"notUnderstood": {
"type": "array",
"items": {
"type": "string"
}
},
"consentExpiresAt": {
"type": "string"
}
}
}{
"title": "Ask a local portal to keep looking",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}intent_get_intent — State of a forwarded intent
Returns the state of an intent published with intent_publish_intent, as the portal that holds it reports it, and which portal that is. Matches come from the chosen portal's own aggregation of its national market and may be incomplete.
{
"type": "object",
"required": [
"intentCode"
],
"properties": {
"intentCode": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{32}$",
"description": "The intentCode returned by intent_publish_intent."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"found"
],
"properties": {
"found": {
"type": "boolean"
},
"holder": {
"type": "object",
"required": [
"host",
"operator"
],
"properties": {
"host": {
"type": "string"
},
"title": {
"type": "string"
},
"operator": {
"type": "string"
}
}
},
"status": {
"type": "string"
}
}
}{
"title": "State of a forwarded intent",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}intent_list_matches — Listings the portal found for a forwarded intent
Returns the listings the portal found for the intent, unchanged — show every url as given. Works once the user has confirmed on the portal's page. Matches come from the chosen portal's own aggregation of its national market and may be incomplete.
{
"type": "object",
"required": [
"intentCode"
],
"properties": {
"since": {
"type": "string",
"description": "Optional ISO time; only matches delivered after it."
},
"intentCode": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{32}$",
"description": "The intentCode returned by intent_publish_intent."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"found"
],
"properties": {
"found": {
"type": "boolean"
},
"holder": {
"type": "object",
"required": [
"host",
"operator"
],
"properties": {
"host": {
"type": "string"
},
"title": {
"type": "string"
},
"operator": {
"type": "string"
}
}
},
"status": {
"type": "string"
},
"matches": {
"type": "array"
}
}
}{
"title": "Listings found for a forwarded intent",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}intent_withdraw_intent — Stop a forwarded intent
Stops the intent at the portal immediately; nothing more is sent to the user. Cannot be undone — publishing again needs a new confirmation.
{
"type": "object",
"required": [
"intentCode"
],
"properties": {
"intentCode": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{32}$",
"description": "The intentCode returned by intent_publish_intent."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"found"
],
"properties": {
"found": {
"type": "boolean"
},
"holder": {
"type": "object",
"required": [
"host",
"operator"
],
"properties": {
"host": {
"type": "string"
},
"title": {
"type": "string"
},
"operator": {
"type": "string"
}
}
},
"status": {
"type": "string"
}
}
}{
"title": "Stop a forwarded intent",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 432 ms
- 95th percentile latency
- 432 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 432 ms · metadata changed · 4 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http isto-intents-mcp https://istointents.com/mcpCodex
codex mcp add isto-intents-mcp --url https://istointents.com/mcpCursor
{
"mcpServers": {
"isto-intents-mcp": {
"url": "https://istointents.com/mcp"
}
}
}Cline
{
"mcpServers": {
"isto-intents-mcp": {
"type": "streamableHttp",
"url": "https://istointents.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"isto-intents-mcp": {
"type": "http",
"url": "https://istointents.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http isto-intents-mcp https://istointents.com/mcpClaude Desktop
{
"mcpServers": {
"isto-intents-mcp": {
"url": "https://istointents.com/mcp"
}
}
}Windsurf
{
"mcpServers": {
"isto-intents-mcp": {
"serverUrl": "https://istointents.com/mcp"
}
}
}Let your agent find its tools
Find servers like Isto Intents MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other commerce servers
Do you run Isto Intents MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.