Koskamo

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.

Isto Intents MCP logo, by AutoIsto s. r. o.Vendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by AutoIsto s. r. o.
MCP endpoint (Streamable HTTP)
https://istointents.com/mcp
Vendor documentation

What 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

Vendor evidenceRegistry 0.2.1
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
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Isto Intents lets a person ask an independent listing portal in their country to keep looking for a used car or a home that is not on offer today (Isto Intents protocol, istointents.org). Use intent_publish_intent with the person's own words, the country (ISO code, never a city) and the category. It returns that portal's consentUrl: the USER must open it and confirm with their own e-mail on the portal's site — nothing is watched before that, and their contact stays with that portal. Never ask for or pass the user's e-mail, and never open or fill in the link for them. If several portals fit, ask the user to choose and call again with holder. If none serves the country yet, say so plainly. Keep the returned intentCode in the conversation; use intent_get_intent for the state, intent_list_matches for found listings and intent_withdraw_intent to stop. Show every url unchanged.

Tools

4 advertised

intent_publish_intent — Ask a local portal to keep looking for the user (needs the user's confirmation)
Advertised by the server during the last successful anonymous check.
Open-world

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.

intent_publish_intent input schema
{
  "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
}
intent_publish_intent output schema
{
  "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"
    }
  }
}
intent_publish_intent annotations
{
  "title": "Ask a local portal to keep looking",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
intent_get_intent — State of a forwarded intent
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

intent_get_intent input schema
{
  "type": "object",
  "required": [
    "intentCode"
  ],
  "properties": {
    "intentCode": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{32}$",
      "description": "The intentCode returned by intent_publish_intent."
    }
  },
  "additionalProperties": false
}
intent_get_intent output schema
{
  "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"
    }
  }
}
intent_get_intent annotations
{
  "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
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

intent_list_matches input schema
{
  "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
}
intent_list_matches output schema
{
  "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"
    }
  }
}
intent_list_matches annotations
{
  "title": "Listings found for a forwarded intent",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
intent_withdraw_intent — Stop a forwarded intent
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Stops the intent at the portal immediately; nothing more is sent to the user. Cannot be undone — publishing again needs a new confirmation.

intent_withdraw_intent input schema
{
  "type": "object",
  "required": [
    "intentCode"
  ],
  "properties": {
    "intentCode": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{32}$",
      "description": "The intentCode returned by intent_publish_intent."
    }
  },
  "additionalProperties": false
}
intent_withdraw_intent output schema
{
  "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"
    }
  }
}
intent_withdraw_intent annotations
{
  "title": "Stop a forwarded intent",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": true
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

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.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http isto-intents-mcp https://istointents.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add isto-intents-mcp --url https://istointents.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable isto-intents-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "isto-intents-mcp": {
      "url": "https://istointents.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "isto-intents-mcp": {
      "type": "streamableHttp",
      "url": "https://istointents.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start isto-intents-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "isto-intents-mcp": {
      "type": "http",
      "url": "https://istointents.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http isto-intents-mcp https://istointents.com/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "isto-intents-mcp": {
      "url": "https://istointents.com/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "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.

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.

Claim this listing