Skip to content
Changelog
.md

Changelog

What’s new in the Intuizi API, the MCP server, the CLI, and the console.

Notable changes, newest first, since the first generally available release. This page shows the latest month in full, and every earlier month has a page of its own.

Each change is tagged with what it affects:

  • API the REST API. The MCP server and the CLI call the API, so they get these changes too.
  • MCP the MCP server, its tools, or connecting an MCP client.
  • CLI the Intuizi CLI.
  • Console the Intuizi console.

October 2026

2026-10-24

  • A POI submission’s check is the address against the point, and nothing else API MCP Console

    Intuizi no longer looks up named locations by their name near their point. The check of a location that gives its coordinates and its whole address is unchanged: its point is checked against where its address lies, and a point away from it is flagged for the review. The business block is gone from the geocoding block of the submission read, the submissions read before today included, and the business count from My Data > POI Submissions. A file now gets one limit of its own, the first 10,000 lookups. See Checks of locations.

  • Demographics reads the latest monthly vintage API MCP Console

    A Demographics audience or estimate now reads one monthly vintage of the demographics data, the latest complete one when it runs, where it used to read every monthly vintage at once. It names that month in vintage, and an audience also names the month its demographics data stream reads in demographics_stream_vintage. The audience page and its PDF show the month on the Demographics card. Audiences and estimates made before 2026-10-24 carry no month and keep their numbers. See Get Audience.

2026-10-23

  • A POI file that Excel saves as CSV (Comma delimited) imports with its accented letters API Console

    Excel for Windows writes that format in Windows-1252, not UTF-8. A submission whose file had an accented letter, such as the é of Montréal, could not be staged: it stayed at 4 Importing, and since an earlier fix today it ended at 3 Disabled. Such a file now imports, and its text is stored as UTF-8. Files in UTF-8 read as before. Save a file in any other encoding as CSV UTF-8. See Create Submission by File.

  • Intuizi’s team can stop completing a POI submission’s remaining locations API Console

    The team can now stop the work on the locations past the limit before it ends. The locations in progress are completed first and keep their results. The submission then returns to 1 Waiting, and the state of the pending block is waiting again for the locations not completed yet, in the submission read and in My Data. They wait for the team to complete them or approve without them. See Files past the limit.

  • Credits in the CLI CLI

    CLI v0.1.9 adds intuizi credits, which shows the balance of the current period, and intuizi credits statement, which lists its entries. It also adds intuizi audiences quote and intuizi audiences lookalike quote, which take the same flags or --file body as their create commands and print the price in credits without creating anything. They answer only for an organization billed in credits. See Credits and Quote.

2026-10-22

  • A large POI submission is never refused: the rest waits for Intuizi’s team API MCP Console

    A file or list gets its first 10,000 lookups and 5,000 name lookups by itself, and it is no longer refused when it needs more. The locations past them wait for Intuizi’s team, which decides whether to complete them before the review. The submission read counts them in a new pending block and in the over_limit count of each block, and not_imported_url links a CSV of the locations not imported, with the reason. My Data > POI Submissions shows a summary of every location, with the same CSV. See Files past the limit.

  • POI submissions check each location before the review API MCP Console

    While a submission imports, Intuizi checks each location that gives its coordinates and its whole address against where that address lies, and looks up each named location in the United States, Canada, and Europe by its name near its point. The checks only flag: a location is never moved, changed, or left out. The submission read counts the results in new geocoding.check and geocoding.business blocks, and My Data > POI Submissions shows them. See Checks of locations.

  • A POI location can give an address instead of coordinates API MCP Console

    A submission location may leave out longitude and latitude when it gives address1, plus zip_code (or city and state), plus the country, on every create: by file, by upload, by list, and the MCP create_poi_submission tool. Intuizi geocodes it before the review. A location it cannot place has no point and is not imported, and the submission read reports what was placed, flagged, and not placed in a new geocoding block. With update or remove, such locations cannot be matched on gps-coordinates. In the console, My Data > POI Submissions takes the same files. See Locations without coordinates.

  • A POI location with coordinates may leave out its country and address API MCP Console

    A submission location that gives longitude and latitude may leave out its country and any of address1, city, state, and zip_code, on every create. Intuizi fills the empty fields from the point before the review, never the name or a value you send, and a location left without a country is not imported. The submission read counts what was filled in a new geocoding.reverse block. See Locations without an address.

  • Credits on the API and MCP API MCP

    For an organization billed in credits, Get Credits returns the balance of the current period and Get Credits Statement lists its entries. Quote Audience and Quote Lookalike take the body of their create and return the price in credits, creating nothing. Audiences now carry credits_charged, and Get Usage a credits block. Both are null for any other organization, and the new endpoints return 403 to it. The MCP tools quote_audience and quote_lookalike_audience are listed only for an organization billed in credits.

  • Usage totals count data scans only API

    data_scanned.bytes in Get Usage also counted the POI backfills Intuizi runs, which read stored files and are not data scans. The console and the monthly data-scan limit have left them out since October 19, so the API could report a higher total, and limit.over_limit as true, while builds were still allowed. The total is now the sum of operations, and limit matches the console.

2026-10-21

  • An estimate read can wait for the answer API MCP

    Get Audience Estimate takes wait, from 1 to 15 seconds: the read answers as soon as the estimate is completed, blocked, or failed, and at the latest wait seconds after the request arrived, with the status it has then. At most 5 calls of an organization, and 25 across all organizations, wait at once. Another one answers at once. Only one call waits per estimate: a newer one, such as a retry, takes the wait over. Estimate Audience Size still answers at once. The MCP estimate_audience_size tool now waits up to about 12 seconds and returns the numbers when they are ready, and get_audience_estimate waits up to 15 seconds. A pending answer means calling get_audience_estimate again. Some estimates, such as two combined datasets, still take about as long as a build. An estimate_audience_size replay (the same idempotency_key) answers with the estimate as it is now. See The Async Model.

2026-10-20

  • POI attributes on audiences and size estimates API MCP

    Two new reads list the POI attributes scheduled at locations and their values: Get Attributes and Get Attribute Values. A POI dataset on Create Audience and Estimate Audience Size now takes poi_selection_mode: attributes with the picked values in poi_attributes, and is built from the locations they are scheduled at. Without the mode a POI dataset builds exactly as before. The MCP lookup_reference tool reads the two new catalogs, and create_audience and estimate_audience_size take the new fields. See POI attributes.

    The dates can cover at most five years (1,827 days), and poi_attributes takes up to 50 attributes with up to 500 value ids each. A location’s event windows follow its time_zone (see List POIs), daylight saving time included. Get Audience, List Audiences, and the audience webhooks return poi_selection_mode and poi_attributes on a POI dataset built in attributes mode, the pick it was built from. A POI dataset built from categories, brands, and locations carries neither.

  • Size estimates of a POI attributes dataset carry an info note API

    Get Audience Estimate and the Estimate Audience Size response now carry info. It is null, or, when a POI dataset of the recipe is in attributes mode, a sentence saying the estimate does not account for the event time windows of the selected attributes and the built audience will be materially smaller. The estimate keeps its number.

2026-10-18

  • A delivery without your own keys goes only to a bucket registered for your organization API Console

    Create Activation and Create Schedule now answer 422 when a delivery carries no access keys or service account key of your own and its bucket, or its folder, is not registered for your organization. Intuizi writes such a delivery with its own cloud identity, so your Account Manager registers each bucket it may go to. A delivery with your own access keys or service account key works as before. See Deliveries without access keys. The console’s Activate and Schedule wizards refuse the same deliveries, and a scheduled cycle to a bucket that is not registered creates no activation. Schedules that deliver to a registered bucket keep running.

  • A folder Intuizi reads data from is not a cohort source API Console

    Create Cohort and Preview Cohort File no longer accept a file_uri in a folder of a third-party bucket that Intuizi reads data from, or a path read as a folder that would take in such a folder. The create answers it with a 422 on file_uri, and the preview answers as it does for a file it cannot read (see Errors). Files in your own buckets work as before. In the console, Create Cohort From File, its preview, and its Validate Access buttons follow the same rule.

2026-10-17

  • A one-value query parameter sent as a list now gets 422 API

    The list and reference reads now answer a search sent as a list, such as ?search[]=coffee, with 422 and The search must be a string. in the validation error shape, as the Schedules list already did. The same goes for type on the POI list, and for dataType, group, and key on the reference reads that take them. These used to end in a server error.

  • An MCP request id must be a string, a number, or null MCP

    POST /api/v2/mcp now answers a request whose id is a boolean, a list, or an object with JSON-RPC error -32600 Invalid Request and a null id, before the method runs. Such an id used to be echoed back. An id that is a number too large to write back, such as 1e400, used to end in an HTTP 500 after the method had run, and gets the same error now. A tool argument that holds such a number now gets a tool error that names the argument, and nothing is sent.

  • An OAuth parameter sent as a list now gets invalid_request API MCP

    POST /oauth/token and GET /oauth/authorize now answer a parameter that must be one string, such as client_id, code, redirect_uri, or state, with 400 and error: invalid_request when it is sent as a list. A client_id sent as a list used to end in a server error. See OAuth endpoints.

2026-10-16

  • Create Project refuses a duplicate or symbols-only name API MCP CLI

    Create Project now answers 422 with an error on name when another of your company’s projects already has that name, compared without regard to case, or when the name has no letter or digit. A deleted project’s name can be used again. The create_project MCP tool and intuizi projects create give the same error, and the console’s Projects page applies the same rules. Delete Project now releases everything filed under the project and deletes it in one step, so a failure leaves the project and everything filed under it as they were.

  • Every POI location gets its time zone from its coordinates API Console

    A POI location’s time_zone is now its IANA time zone, such as America/New_York, looked up from its latitude and longitude when the location is created, imported, approved from a submission or moved. Locations that had no time zone got theirs the same way, and a time zone already stored is kept. A location at sea or without a point has none. See List POIs.

  • An MCP tool argument that must be one value now gets an error that names it MCP

    When an argument that becomes part of the request path or a header, such as id, idempotency_key, kind, or catalog, is a list or an object, the tool now answers with a tool error that names the argument, such as Argument 'id' must be a single string or number, not a list or an object. It used to answer with JSON-RPC error -32603 Internal error. A path argument sent as null gets the same kind of error. A list or an object as the tool or prompt name now gets -32602, as an unknown name does, instead of an HTTP 500, and a protocolVersion that is not a string gets the default version. See the Tools Reference.

2026-10-15

  • Saved connection secrets stay hidden in the Activate and Schedule wizards Console

    When you pick a saved endpoint connection, its secrets are no longer filled into the form. Leave a secret blank to use the saved value, or type a new one for that activation only. While a saved secret is used, a field that says where it is sent, such as an SFTP Host, keeps its saved value. A new schedule reads its secrets from a saved connection each time it runs, so the credentials you type for it are saved as a new connection under My Organization, with the Connection Name you give it. Every datastream of a schedule uses that one set of credentials. A service-account key you upload is cleared when you pick another endpoint. The endpoint connection dialogs in My Organization accept a service-account key only as a JSON key file, and now say why a save was refused. Deleting a connection warns only about the active schedules that read their credentials from it.

  • Activations and schedules deliver only to a bucket and folder your organization can use API Console

    Create Activation and Create Schedule now answer 422 with “The delivery bucket or folder is not available to your organization.” when a bucket input names an Intuizi bucket, or a path in an Intuizi delivery bucket outside the delivery folder Intuizi set up for your organization. A new delivery also needs a standard bucket name, with no path, access point alias, or ARN, and a folder prefix with no quote, backslash, control character, or .. segment. See Delivery buckets and folders. The console’s Activate and Schedule wizards refuse the same destinations, and a scheduled cycle that would deliver to an Intuizi bucket, or outside your delivery folder in an Intuizi delivery bucket, creates no activation. Schedules that deliver to your own bucket keep running. The Activate and Schedule wizards also accept a service account only as a JSON key file.

2026-10-14

  • A POI file that starts with a byte order mark imports API Console

    A CSV that a spreadsheet saves as “CSV UTF-8” starts with a UTF-8 byte order mark. The console’s POI imports, Create Submission by File, and Create Submission by Upload now read such a file as they read any other. Its first header used to be refused as an invalid header, although it read correctly on screen.

  • The activation pages describe the delivery inputs correctly API

    Create Activation, Create Schedule, Endpoint Connections & Partners, and the activation guides said that a delivery authenticates with the credentials stored on the endpoint connection, or with the credentials you send. They now say what a delivery reads: when the partner takes a destination or access details, they come from the partner inputs sent with the activation (audience_inputs, and per stream inputs and service_account), which a schedule stores, and a partner that takes none delivers to its own destination. Deliveries are unchanged.

  • Endpoint partners and pricing models follow your company’s setup API MCP CLI Console

    Create Activation and Create Schedule now deliver only through a partner that is set up for your company (see Get Endpoint Partners). An endpoint connection to any other partner answers 404, as an Index Exchange connection already did. Both accept a pricing model for one of the audience’s dataset types: a model of the partner set up for your company when there is one for those types, else one of the partner’s public models. Get Pricing Models lists every model your company can use with the partner, and its new dataset_types field gives the dataset types each one can be used for. Get Pricing Models and Get Datastreams return an empty list for a partner that is not set up for your company. The MCP tools and the CLI quickstart say to pick a pricing model by its dataset_types. In the console, the Activate and Schedule wizards and saved endpoint connections follow the same rules. Existing schedules keep running.

2026-10-13

  • Create Activation checks project_id API Console

    Create Activation now answers 422 with an error on project_id when it is not one of your company’s projects, as Create Audience and Create Cohort do. That includes the id of a deleted project. Use an id from List Projects, or leave project_id out to file the activation under the audience’s project. The console now refuses such a project too when you build an audience, activate one, or move an audience or an activation to another project.

  • Deleting an organization revokes the tokens of its accounts API MCP Console

    When an organization is deleted, every token of every account in it is now revoked: login, API, and MCP tokens and every OAuth connection. The accounts are deactivated, and their console sessions end at the next request. See Revocation.

  • An organization can have 20 open uploads at once API

    Create an Upload now refuses a reservation when your organization already has 20 open uploads: reserved, not yet used up by a create, and not expired. It answers 429 with a Retry-After header, the seconds until the first of them expires, and reserves nothing. A create that uses up one of the open references makes room right away. See Limits & Quotas.

  • Audience creates and estimates check signal providers, analysis availability and the Deidentified look-back API MCP Console

    Create Audience and Estimate Audience Size now accept only what the Audience Manager offers your account. Each signal_providers value must be offered for the dataset type by Get Signal Providers, or already be on one of your organization’s audiences of that type and still be a signal provider, and the list must be a list of distinct strings. An analysis the Audience Manager turns off for the request’s datasets, and a Deidentified start_date earlier than the Audience Manager offers (from the first day of the previous month, unless a longer look-back is enabled for your account), are rejected with 422 (see Errors). A key sent in the query string that is not part of the documented body no longer reaches the build. Create Schedule now refuses an audience whose first cycle your account cannot build. The create_audience MCP tool describes the new rules (estimate_audience_size takes the same body), and the console checks the same rules when it builds an audience or creates a schedule.

  • The paginated reference reads stop at page 10,000 API

    On every paginated reference read, a page above 10,000 is now read as 10,000, and the pagination block reports it. Narrow a longer list with search or a filter (see Limits).

  • The Apps reference reads cap per_page at 500 API

    Get Categories, Get Tags, Get Bundle IDs, and Get Taxonomies now return at most 500 items a page, like the other reference reads. A larger per_page is read as 500, and a per_page that is zero, negative, or not a number as the default of 250. The pagination block reports the page size used (see Limits).

  • Webhook URLs need a plain hostname API Console

    A webhook URL is now rejected when its hostname starts or ends with a dot, or uses characters other than letters, digits, hyphens, and dots. Write an international domain name in its xn-- form. The console refuses such a URL when you save the endpoint, and an endpoint saved earlier with one gets no deliveries until you change its URL. See Webhooks.

  • No OAuth connection while logged in as another user MCP Console

    While you are logged in as another user in the console, the OAuth consent screen and its approval now answer 403 with access_denied, and no connection is made for that user. Return to your own account to connect an application. See OAuth one-click connect.

  • List Webhook Endpoints requires additional permissions API

    List Webhook Endpoints now requires the same additional permissions as the console’s Webhooks tab, which need to be approved by your Account Manager. When they are not enabled for your account, it answers 403 (see Errors).

2026-10-12

  • Create Cohort and Preview Cohort File need the cohorts capability API Console

    Create Cohort, from a file, an upload, or an audience, and Preview Cohort File now answer 403 when cohorts are not enabled for your account (see Errors). Cohorts require additional permissions which need to be approved by your Account Manager. Listing, reading, and deleting cohorts are unchanged. In the console, the Cohorts page, its actions, and the Create Cohort option of a new audience now check the same permissions on the server. The console already offered them only to accounts with the capability.

  • Activations take the price of their pricing model API MCP Console

    Every activation now records the price of its pricing model, and every scheduled activation the price of its schedule’s pricing model when it runs. Create Activation and Create Schedule still accept price and activation.price, but ignore them. The create_activation MCP tool no longer lists price, partner_id, partner_name, or pricing_model. In the console, the Activate and Schedule wizards always record the price of the selected pricing model. Activations created before this change keep the price they recorded.

  • Failed logins are limited per email API

    Login and the endpoints that create or revoke API and MCP tokens now count failed attempts for each email together. After 5 failures in a minute from one IP address, or 20 in an hour from any address, they answer 429 with a Retry-After header for that email until the window ends, whatever the password. Successful logins are never counted, and one clears the per-minute count for its IP address. See Failed logins.

  • Only an active, confirmed account can log in, and deactivating an account revokes its tokens API MCP Console

    Login and the API and MCP token endpoints answer an account that is deactivated or not yet confirmed with the 401 of a wrong password. Such an account also cannot create API or MCP tokens in the console or approve an OAuth connection. Deactivating an account, or withdrawing its confirmation, now revokes every token on it: login, API and MCP tokens, and every OAuth connection. Reactivating the account does not restore them. See Revocation.

  • Create Brand needs a category your company can use API

    Create Brand now requires category_id to be a whole number and the id of one of your company’s categories, a category from Intuizi’s public POI catalog, or a category shared with your company. Get Categories lists them. Any other value is rejected with a 422 on category_id.

  • A POI submission is checked in full when Intuizi reads its file API

    Intuizi now checks every row of a submission’s file when it reads the locations, with the same checks as Create Submission by File. A submission whose file fails them moves from 4 Importing to 3 Disabled, and none of its locations are kept. Create Submission by Upload still checks the start of the file when it is called, and now reads lines as Create Submission by File does. A file whose rows end in a lone carriage return is now rejected when the create is called, and a quoted value that holds a carriage return is accepted.

  • A cohort file in an Intuizi delivery bucket must be in your own folder API Console

    Create Cohort and Preview Cohort File accept a file_uri in an Intuizi delivery bucket only inside the delivery folder Intuizi set up for your organization. Other Intuizi buckets are not a source, and a file_uri needs a standard bucket name and a path with no empty segment (//), no . or .. segment, and no backslash or control character. The create answers anything else with a 422 on file_uri, and the preview answers as it does for a file it cannot read (see Errors). Paths in your own buckets that follow these rules work as before. In the console, Create Cohort From File, its preview and its Validate Access buttons follow the same rules.

  • The Errors page shows where validation errors are API

    The 422 examples on Errors and Envelope now show the messages under data.errors, where every endpoint but the POI category, brand and submission endpoints returns them. Those return the messages in a top-level errors object, as both pages now say. The responses themselves are unchanged.

  • Create Schedule needs an audience built only from your company’s cohorts API

    Create Schedule now requires every cohort the audience was built from to be your company’s own. An audience built from any other cohort is rejected with a 422 on audience_id. Audiences made with Create Audience always qualify, because it accepts only your company’s cohorts.

2026-10-11

  • Client registration accepts only plain redirect URIs MCP

    Dynamic client registration now rejects a redirect URI that contains a backslash, a comma, @, %, #, a space or a control character, whose host is not a plain host name (for example a trailing dot or an empty port), or whose port is outside 1 to 65535. The answer is 400 with invalid_redirect_uri. The redirect URIs that MCP clients register today are unaffected, and clients that are already registered keep working.

2026-10-09

  • Index Exchange: the IX CPM, the visibility and what each pricing model delivers API MCP Console

    An Index Exchange activation now carries the segment’s marketplace CPM (IX CPM USD, required, 0.01 to 99.99) and its visibility (IX Access, public or private, default public). Create Activation and Create Schedule refuse a missing or invalid CPM, an invalid access value or segment id, and a CTV audience with a 422 that names the rule. An Index Exchange connection needs no credentials (requires_credentials: false in Get Endpoint Connections) and can be used only by the organizations Index Exchange is enabled for. Get Pricing Models returns each model’s identifiers and, for Index Exchange, a delivery_label. Get Activation and the activation.completed webhook return delivery.index_exchange: the segment, the delivered file and the publication state (null for every other partner). A scheduled Index Exchange activation refreshes one segment once a cycle has registered it.

2026-10-04

  • Activations can limit by lookalike score, spend and transactions API MCP

    Create Activation takes the limits the Audience Manager offers: a score range for a Lookalike Model audience (score_limit with min_score and max_score), and for an audience of one Transactions dataset, spend and transaction ranges per person (affinity_spend_limit and affinity_txn_limit with their bounds). As with the frequency filter, each limit needs its flag, and a limit the audience cannot take is rejected with 422. The activation’s filters echo them. Create Schedule takes the spend and transaction limits in its activation block, and the create_activation MCP tool lists the new fields.

  • Create Activation sends the audience’s full definition, as the console does API

    Create Activation now builds what it hands to delivery from the audience exactly as the Audience Manager does. Activating a lookalike audience used to return a 500, and a Competitors audience’s activation failed during delivery; both now work. A single cohort’s metadata columns are delivered with it, and every other dataset type carries its full definition instead of only its dates.

  • Attribute groups (All or Any of) for Profile Attributes API MCP Console

    A Profile Attributes dataset can now group its attributes. Each group is All (every attribute in it must match) or Any of (at least one must), and a device must satisfy every group, so “all of these, and at least one of those” fits in one dataset. In the Audience Manager use Add group; on Create Audience and Estimate Audience Size send profile_attribute_groups instead of profile_attributes. Up to 5 groups. profile_attributes keeps working as before, with one change: a group or match key on one of its rows was ignored until now and is rejected with a 422 that names the key.

Earlier months