Title: Isto Intents Holder
Author: autoisto
Published: <strong>November 3, 2026</strong>
Last modified: November 3, 2026

---

Search plugins

![](https://s.w.org/plugins/geopattern-icon/isto-intents-holder.svg)

# Isto Intents Holder

 By [autoisto](https://profiles.wordpress.org/autoisto/)

[Download](https://downloads.wordpress.org/plugin/isto-intents-holder.1.0.6.zip)

 * [Details](https://wordpress.org/plugins/isto-intents-holder/#description)
 * [Reviews](https://wordpress.org/plugins/isto-intents-holder/#reviews)
 *  [Installation](https://wordpress.org/plugins/isto-intents-holder/#installation)
 * [Development](https://wordpress.org/plugins/isto-intents-holder/#developers)

 [Support](https://wordpress.org/support/plugin/isto-intents-holder/)

## Description

People increasingly ask an AI assistant — ChatGPT, Claude and others — to find them
a used car or a flat. **Isto Intents Holder** lets such an assistant ask _your_ 
listing site to keep looking for that person, under an open interface (Isto Intents,
consent-link profile).

 1. The assistant sends your site the wish in the person’s own words (“estate car, 
    petrol, up to 15 000 EUR”) — and nothing else: no name, e-mail or phone.
 2. Your site answers with a link to its own confirmation page. The person enters their
    e-mail there, ticks the consent and confirms it from the e-mail (double opt-in).
 3. Once an hour the plugin compares every confirmed wish with your newest listings
    and e-mails those that fit, each once, with a link to stop. The assistant can show
    the same listings, and every link leads to your listing page.

The person stays your visitor and your subscriber. Contact data is entered only 
on your site.

**Features**

 * MCP server (Streamable HTTP) with the four tools of the consent-link profile:`
   intent_publish_intent`, `intent_get_intent`, `intent_list_matches`, `intent_withdraw_intent`.
 * Confirmation page (shortcode `[isto_intents_consent]`, created on activation)
   with double opt-in; a link opened by a mail scanner confirms nothing.
 * Holder descriptor at `/.well-known/isto-intents.json`, so assistants and the 
   Isto Intents Registry can find you by country and category.
 * Matching against any post type, with an optional price field; replace it with
   your own search through the `isto_intents_holder_find_matches` filter.
 * No setup for the listings of Motors, Car Dealer (Potenza), Auto Listings, Houzez,
   RealHomes, WP Residence, WP Pro Real Estate 7, Estatik, Essential Real Estate
   and Easy Property Listings: the plugin recognises their post type, price and 
   address fields, and the currency where the theme or plugin states one. Where 
   they let a seller withhold the price, a withheld price is never passed on; where
   they mark a listing as sold, it is not sent.
 * A private price limit is sealed the moment it arrives (libsodium secretbox, under
   a key of your site) and opened only in memory to filter your listings: it is 
   never returned to the assistant, never shown on a page and never stored as a 
   number.
 * Limits per network, and a separate limit for the signed calls of the Isto Intents
   forwarder.
 * Privacy tools: export and erasure of a person’s wishes; the e-mail address is
   deleted as soon as a wish ends; deactivating the plugin ends every wish (nothing
   would run to stop or expire them); deleting the plugin deletes all its data.
 * The confirmation page sends `Referrer-Policy: no-referrer`, because its address
   carries a one-time token. Keep analytics and tracking scripts off that page: 
   tools that record the full page address would record the token.
 * E-mails through `wp_mail()`, so your SMTP plugin applies.
 * Translations: English, Slovak, Czech, German, Hungarian, Polish.

### External services

This plugin connects to the **Isto Intents Registry** at istointents.org, operated
by AutoIsto s. r. o., and only when an administrator presses one of two buttons 
on **Settings  Isto Intents**:

 * **Check readiness** sends your site’s host name to `https://istointents.org/registry/
   v0/check`. The registry then reads your public descriptor and calls your public
   MCP server once with a test wish, which it withdraws at once.
 * **Submit to the registry** sends your site’s host name to `https://istointents.
   org/registry/v0/submit`. The registry lists your host and re-checks your public
   descriptor and MCP server about every six hours.

Nothing else is sent: no data about people, wishes, users or visitors. Registry 
terms: https://istointents.org/registry/terms/ · Privacy: https://istointents.com/
privacy/

AI assistants and the Isto Intents forwarder (istointents.com) call your site’s 
public MCP endpoint on their own; the plugin answers them but does not contact them.
Forwarding terms: https://istointents.org/forwarding/terms/

## Installation

 1. Upload the plugin and activate it. It creates its tables, a published confirmation
    page (kept out of the sitemap, noindex, empty without a link) and an hourly task.
    Nothing is published in the descriptor or the MCP server yet.
 2. Go to **Settings  Isto Intents**: your name, a role contact address, country, categories,
    languages and the post type of your listings (and the price field, if you have 
    one). With one of the themes or plugins named above, the post type and price are
    recognised and the settings page says so. Contact and country are required and 
    never filled in for you; until you save them, the descriptor and the MCP server
    answer 404 and the settings page says what is missing.
 3. Press **Check readiness (with a trial run)**, then **Submit to the registry**.

Requirements: HTTPS; for `/.well-known/isto-intents.json` pretty permalinks and 
WordPress at the root of the domain (otherwise the settings page links the descriptor,
which you save as a file).

## FAQ

### Does the AI assistant get the person’s e-mail?

No. The tools take no contact data and refuse any argument they do not declare. 
The person types the e-mail on your confirmation page.

### How does it decide which listings fit?

By default a listing fits when its title, text and categories contain enough words
of the wish — all of them for one or two words, otherwise at least half — none of
the words the wish rules out (“without diesel”) and its price is within the stated
limit. Listings that contain more of the words are sent first. Numbers it cannot
place (a year, a mileage) are reported to the assistant as not understood. Developers
replace the matching with the `isto_intents_holder_find_matches` filter.

### How is the private price limit protected?

It is sealed on receipt with libsodium’s secretbox (XSalsa20-Poly1305), which WordPress
ships, and the database holds only the sealed value. The key is created on activation
and stored apart from the settings, never autoloaded. To keep it out of the database
altogether, put `define( 'ISTO_INTENTS_HOLDER_SEAL_KEY', '<64 hex characters>' );`
in wp-config.php before you activate the plugin: a copy of the database then opens
no limit. Changing the key later makes the limits sealed before unreadable; those
wishes are then not searched at all (nothing above a limit is ever sent), and the
settings page says how many.

### Does the plugin contact any outside service?

Only when an administrator presses one of the two buttons on the settings page. 
See “External services” below.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Isto Intents Holder” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ autoisto ](https://profiles.wordpress.org/autoisto/)

[Translate “Isto Intents Holder” into your language.](https://translate.wordpress.org/projects/wp-plugins/isto-intents-holder)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/isto-intents-holder/),
check out the [SVN repository](https://plugins.svn.wordpress.org/isto-intents-holder/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/isto-intents-holder/)
by [RSS](https://plugins.trac.wordpress.org/log/isto-intents-holder/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.6

 * The package in the WordPress.org directory now contains the bundled PHP library(
   lib/). Version 1.0.5 from the directory stopped with a fatal error on activation;
   the ZIP from istointents.org was not affected.

#### 1.0.5

 * A private price limit is sealed on receipt, as the Isto Intents specification
   requires (§4.2): the database holds only a sealed value (libsodium secretbox),
   and the number exists only in memory while your listings are filtered. Limits
   stored by earlier versions are sealed on the first request after the update, 
   and their plain columns are dropped.
 * The seal key is created once and stored apart from the settings, never autoloaded;
   or define `ISTO_INTENTS_HOLDER_SEAL_KEY` in wp-config.php so that a copy of the
   database alone opens no limit. A wish whose limit can no longer be opened (because
   the key changed) is not searched, and the settings page says how many.
 * The personal-data export still contains the limit, unsealed for that export only.
   Deleting the plugin deletes the seal key too.

#### 1.0.4

 * The listings of ten widely used themes and plugins for car dealers and estate
   agencies are recognised without any setting: Motors, Car Dealer (Potenza), Auto
   Listings, Houzez, RealHomes, WP Residence, WP Pro Real Estate 7, Estatik, Essential
   Real Estate and Easy Property Listings. The plugin reads their post type, the
   price (the sale price where there is one), the address fields and the currency
   where they state one (an ISO code, or a sign that names one currency: “$” alone
   is not guessed); the settings page shows what was recognised, and a post type
   or price field you choose still wins.
 * A price the seller withholds (WP Pro Real Estate 7, Estatik, Essential Real Estate,
   Easy Property Listings) is never read, so it is never e-mailed or returned to
   an assistant. Listings that Motors or Easy Property Listings mark as sold, let
   or withdrawn are not sent.
 * The price-field help text says what an empty field now means.

#### 1.0.3

 * A private price limit is described truthfully: it is used only to filter your
   listings, never returned to the assistant and never shown on a page, and it is
   stored in your database (it is not encrypted, and the word “sealed” is gone).
 * Deactivating the plugin ends every active wish and forgets drafts: after deactivation
   nothing would expire them or let people stop them.
 * The confirmation page sends `Referrer-Policy: no-referrer` and is left out of
   the core sitemap (wp-sitemap.xml).
 * The personal-data export contains everything stored with the address (also the
   nice-to-have, the buy-by date, the private limit, when the wish was created and
   when consent was given); erasure deletes the wishes completely instead of keeping
   their text for another day.
 * The MCP server refuses calls whose Origin header is another site (MCP Streamable
   HTTP requirement); assistants and the forwarder send none.
 * The MCP server names itself `isto-intents-holder` (with your site name as title
   and your address as websiteUrl) instead of a name built from the host, which 
   read “127.0.0.1.nip.io-intents” on a local install.
 * IPv6 addresses are limited per /48 instead of /64, and expired drafts and wishes
   are cleaned up at most once a minute instead of on every request.
 * The confirmation e-mail no longer quotes the wish: it names your site and carries
   the link, and the wish itself is shown on the page the link opens. Whoever creates
   a draft can no longer put their own text into an e-mail sent from your domain.
 * Confirmation e-mails are capped per address (3 a day) and in total (100 an hour),
   on top of the cap per network, so rotating networks cannot turn the confirmation
   page into a way to mail strangers.
 * The plugin no longer prints any inline styles: the standalone HTML document (
   only for sites without WordPress) moved to its own class, which the plugin does
   not ship.
 * Files are located with `plugin_dir_path()` only; the fallback to the source repository’s
   directory layout is gone.

#### 1.0.2

 * Nothing is published until the settings are saved: the descriptor and the MCP
   server answer 404 until a contact and a country are entered. The contact is no
   longer filled in with the administrator’s e-mail, there is no default country,
   and the registry listing is opt-in.
 * The visitor address comes from REMOTE_ADDR, or from CF-Connecting-IP behind Cloudflare.
   X-Forwarded-For and X-Real-IP are no longer accepted (any caller can write them);
   a stored choice of either falls back to REMOTE_ADDR.
 * Matching: a listing needs all words of a one- or two-word wish, otherwise at 
   least half of them, instead of every word; listings with more of the words are
   sent first. A word after “not / without / bez / ohne …” excludes a listing instead
   of being required.

#### 1.0.1

 * Passes the WordPress.org Plugin Check: the plugin loads the library with its 
   own autoloader and no longer ships the plain-PHP entry points (autoload.php, 
   the PDO adapter, the front controller); translations load through WordPress itself,
   so WordPress 6.7 or newer is required.

#### 1.0.0

 * First release: consent-link profile 1.0 of Isto Intents.

## Meta

 *  Version **1.0.6**
 *  Last updated **14 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.7 or higher **
 *  Tested up to **7.1.4**
 *  PHP version ** 8.1 or higher **
 * Tags
 * [AI](https://wordpress.org/plugins/tags/ai/)[car dealer](https://wordpress.org/plugins/tags/car-dealer/)
   [classifieds](https://wordpress.org/plugins/tags/classifieds/)[mcp](https://wordpress.org/plugins/tags/mcp/)
   [real-estate](https://wordpress.org/plugins/tags/real-estate/)
 *  [Advanced View](https://wordpress.org/plugins/isto-intents-holder/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/isto-intents-holder/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/isto-intents-holder/reviews/)

## Contributors

 *   [ autoisto ](https://profiles.wordpress.org/autoisto/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/isto-intents-holder/)