Isto Intents
Server Details
Ask a local listing portal to keep looking for a used car or home; the user confirms there.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 4 tools
The four tools map cleanly onto publish/status/matches/withdraw phases, and descriptions make the distinctions clear. Minor blur: intent_get_intent's description repeats the 'matches come from the portal's aggregation' caveat, which overlaps with intent_list_matches' purpose.
All four names follow a strict intent_verb_noun pattern (intent_get_intent, intent_list_matches, intent_publish_intent, intent_withdraw_intent). Fully predictable and readable.
Four tools is a tight, well-scoped set for a publish-status-matches-withdraw lifecycle. It is on the small side but each tool earns its place.
The core lifecycle is covered, but there is no way to list or enumerate a user's existing intents, and no update operation (changing criteria requires withdraw + republish with a new confirmation). These gaps could make agents work harder.
Available Tools
4 toolsintent_get_intentState of a forwarded intentARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| intentCode | Yes | The intentCode returned by intent_publish_intent. |
Output Schema
| Name | Required | Description |
|---|---|---|
| found | Yes | |
| holder | No | |
| status | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnly, idempotent, openWorld, and non-destructive behavior. The description adds useful behavioral context beyond the annotations: the state is reported by the holding portal, and results come from that portal's own aggregation and may be incomplete.
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 description is two efficient sentences, front-loading what the tool returns and then adding the important incompleteness caveat. Every clause contributes either purpose, source, or reliability context.
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, rich annotations, and full schema coverage, the description need not explain return fields. It supplies the key caveat that results may be incomplete, though it could say more about operational limits or error conditions.
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%, and the schema already explains that intentCode is the value returned by intent_publish_intent. The description reinforces the connection to intent_publish_intent but adds no syntax or format detail beyond the schema, 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 states a specific verb and resource: it returns the state of an intent published with intent_publish_intent. It also names the source portal, which distinguishes this lookup tool from siblings like intent_list_matches, intent_publish_intent, and intent_withdraw_intent.
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 clearly ties usage to intents previously published via intent_publish_intent, implying this is the follow-up status check. It does not explicitly state when not to use it or name alternative siblings, so it stops short of a full when/when-not guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
intent_list_matchesListings the portal found for a forwarded intentARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | Optional ISO time; only matches delivered after it. | |
| intentCode | Yes | The intentCode returned by intent_publish_intent. |
Output Schema
| Name | Required | Description |
|---|---|---|
| found | Yes | |
| holder | No | |
| status | No | |
| matches | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so the safety profile is covered; the description adds valuable context beyond them — it warns that matches are the portal's own national aggregation and 'may be incomplete,' and instructs the agent to show URLs unchanged. Only return format/ordering details are missing.
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?
Three short sentences, front-loaded with the what, then the precondition, then the critical data caveat. Every sentence carries actionable information with no filler.
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, the description needn't explain return values; combined with annotations and 100% schema coverage, the description supplies exactly the missing runtime context (precondition, data fidelity, incompleteness).
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 'since' semantics and the intentCode origin ('returned by intent_publish_intent'), so the schema does the heavy lifting. The description adds no parameter detail beyond baseline.
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: 'Returns the listings the portal found for the intent.' An agent can distinguish this from the sibling workflow steps (publish/get/withdraw) because the object is explicitly the delivered matches, though no sibling is named directly.
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?
Provides a clear precondition: 'Works once the user has confirmed on the portal's page,' which tells the agent when the call is valid. There is no explicit when-not or named alternative, but the sequencing constraint is a strong usage cue.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
intent_publish_intentAsk a local portal to keep looking for the user (needs the user's confirmation)AInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| buyBy | No | Date (YYYY-MM-DD) by which the user wants to buy; watching stops after it. | |
| holder | No | Only after a "choose_holder" answer: the host of the portal the user chose. | |
| country | Yes | Country where the user wants to buy, ISO 3166-1 alpha-2 (e.g. PT, SK, CZ). Country only. | |
| category | Yes | vehicle = cars and other road vehicles; property = homes, flats and land. | |
| statement | Yes | What it MUST be, in the user's own words and language, e.g. "estate car under 15000 €, not diesel". | |
| niceToHave | No | Wishes that are not required (never filters), e.g. "tow bar, automatic". | |
| hiddenLimit | No | Optional private maximum price, only if the user stated it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| holder | No | |
| served | No | With no_holder: where portals can be reached today. |
| status | No | |
| holders | No | |
| outcome | Yes | |
| consentUrl | No | The portal's page where the USER confirms with their own e-mail. Show it unchanged. |
| intentCode | No | Keep it in the conversation; use it with intent_get_intent, intent_list_matches and intent_withdraw_intent. |
| understood | No | |
| hiddenLimit | No | What happened to the hidden limit. If not passed, tell the user. |
| notUnderstood | No | |
| consentExpiresAt | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare openWorldHint=true and idempotentHint=false, but the description adds the crucial context that matters in practice: the wish goes to a third-party registry, a consentUrl is returned that only the user may open, nothing is watched before confirmation, the contact stays with the portal, and matches may be incomplete. That is behavior beyond what the annotations 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?
There is no filler, and the rules that matter (consent flow, never ask for the e-mail, send the country only) are front-loaded after the trigger. It is, however, one dense paragraph that could be split, which costs it 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, yet the description still conveys the outcome values and privacy constraints an agent needs in order to behave correctly, and it warns that matches may be incomplete. Nothing essential is missing for a 7-parameter, open-world mutation.
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 schema already documents every field. The description still adds meaning the schema lacks: hiddenLimit is passed once, sealed at the portal, never stored locally, and must only be sent when the user volunteered it; holder only applies after a 'choose_holder' answer; country must never be a city or address.
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?
It states a specific action with a specific resource: publishing a standing wish to an independent local listing portal in a given country. The distinction from siblings (get/list/withdraw) is left implicit in the wording rather than naming an alternative, so it stops short of the top band.
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 gives an explicit trigger with a concrete example ('let me know until March about an estate car in Portugal...'), then covers both branches an agent will hit: 'choose_holder' (ask the user, then call again with holder) and 'no_holder'. It also states the confirmation requirement before anything is watched.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
intent_withdraw_intentStop a forwarded intentADestructiveIdempotentInspect
Stops the intent at the portal immediately; nothing more is sent to the user. Cannot be undone — publishing again needs a new confirmation.
| Name | Required | Description | Default |
|---|---|---|---|
| intentCode | Yes | The intentCode returned by intent_publish_intent. |
Output Schema
| Name | Required | Description |
|---|---|---|
| found | Yes | |
| holder | No | |
| status | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered; the description still earns credit by adding the irreversibility warning ('Cannot be undone') and the recovery path (a new confirmation is required to re-publish). It does not cover permissions or the failure mode for an unknown/stale intentCode.
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 short clauses with zero waste; the immediate effect is front-loaded and the irreversibility warning follows. Every sentence carries information the agent needs.
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 the description covers the destructive effect and the re-publish consequence. Minor gap: no mention of what happens if the intentCode is invalid or already withdrawn — relevant given openWorldHint=true.
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?
Single required parameter with 100% schema description coverage and a documented pattern plus provenance ('returned by intent_publish_intent'). The description adds nothing about intentCode, so the schema does all the work — baseline 3.
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 ('Stops the intent') plus the immediate scope ('at the portal'). The effect clause ('nothing more is sent to the user') and the reference to publishing again distinguish it well from get/list/publish siblings, though no sibling is named explicitly.
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 phrase 'Stops the intent at the portal immediately' implies when to use it (to halt forwarding), and 'publishing again needs a new confirmation' hints at the follow-up path. There is no explicit contrast with the alternatives (get_intent, list_matches, publish_intent) or a stated precondition beyond the required intentCode.
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.
4 tool updates
- First observed
intent_get_intent - First observed
intent_list_matches - First observed
intent_publish_intent - First observed
intent_withdraw_intent
Related MCP Connectors
- AssetLogOAuthai.assetlog
Search vehicles, real estate and jobs; manage your listings, alerts, enquiries and viewings.
Search classified ads from European marketplaces: rentals, homes, vehicles, second-hand goods, jobs.
Watches Slovak used-car ads for a buyer. Takes no contact; active only after e-mail opt-in.
Watches Czech used-car ads for a buyer. Takes no contact; active only after e-mail opt-in.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables AI agents to search public classified listings and read individual listing details through a local browser session, with filters for location, radius, price, and sort order. Read-only and user-directed: no login, no account, no messaging, and no bulk scraping.219 npmMIT
- AlicenseBqualityCmaintenanceEnables Claude to monitor Facebook Marketplace car and motorcycle listings, score them against custom criteria, and analyze accumulated listing history to reveal time-on-market, price trends, and sale triggers.9MIT
- AlicenseAqualityCmaintenanceEnables AI assistants to search live used-car inventory, verify whether asking prices are fair market value, estimate annual road tax and running costs, and initiate contact with sellers for the Portuguese market.69 npmMIT
- FlicenseNot gradedqualityCmaintenanceEnables agents to search and analyze used-vehicle listings across multiple Serbian marketplaces, including price statistics, history, and per-user saved-search watches.1-
Glama MCP Gateway
Add one secure layer between your agents and this server.