Back to Directory
Syntalic — Data Analytics for Agentic Commerce

Syntalic — Data Analytics for Agentic Commerce

Commerce
Competitive pricing data across US and Canadian e-commerce retailers (Amazon, Walmart, Target, Best Buy, Home Depot, etc.). Serves price comparisons, deal alerts, brand tracking, promotional intelligence, and market analytics to AI agents via x402 and MPP micropayments.
MPPx402

About Syntalic — Data Analytics for Agentic Commerce

Review the Service identity, supported languages, protocol versions, and source metadata discovered by the directory.

Service details

Service Id
7d29592f-f43c-4c09-bc6e-eb1991f3014b
Service origin
https://api.syntalic.com
ListedSeptember 24, 2026, 6:58 PM
Last checkedNovember 9, 2026, 5:45 AM

Protocol details

SourceOpenAPI

Endpoints

Endpoint details are saved from the OpenAPI document. Authentication requirements and prices are advertised information, not a verified payment or access guarantee. The document may contain additional endpoints.Open OpenAPI document
GET/v1/analyst/category-concentration

Measure how concentrated a category is

How concentrated or fragmented a category is: HHI on the standard 0-10,000 scale, CR4 (the combined share of the four largest brands), the effective number of brands, and a plain-language label. Answers 'is this category competitive or dominated', 'how many real players are there', and 'what is the market structure'. Computed over the same brand vector share-of-shelf returns, so the two answers can never disagree about who is on the shelf. The HHI bands follow the US DOJ/FTC Horizontal Merger Guidelines (under 1,500 competitive; 1,500-2,500 moderately concentrated; above 2,500 highly concentrated). Effective brands is 1/HHI expressed as a count and is fractional by nature - fifty brands where one holds 90% is not a fifty-brand market, and this reports roughly 1.2. Every metric is withheld together (all null) below five brands, because a concentration figure over three brands describes who happens to be in the catalog rather than who competes.0.020000 USD
GET/v1/analyst/category-summary

High-level summary statistics for a category or department

High-level category statistics - product/brand/retailer counts, pricing (avg/min/max/median), promo rate, in-stock rate, and top brands. Headline stats are representativeness-filtered (no refurb/used, no accessory/parts subtrees, category-aware price floor) with exclusion counts disclosed in `excluded`; brand_count and top_brands merge brand variants on the canonical key and exclude placeholders.0.020000 USD
GET/v1/analyst/inflation

Track price inflation trends in a category or department

Track category-level price inflation with configurable daily, weekly, or monthly granularity. PREFER lfl_change_pct: the like-for-like change over the whole window, computed per product between the first and last period and summarised as a trimmed mean, with lfl_matched / lfl_rising / lfl_stable / lfl_falling beside it. It is the SAME definition the Syntalic dashboards report, so an API answer and a dashboard answer agree, and it is withheld (null, with lfl_note) rather than estimated when fewer than 10 products match. The legacy chained fields remain for compatibility and are DEPRECATED: overall_change_pct chains per-period Jevons matched-pairs changes, and naive_overall_change_pct is an average-vs-average fallback that moves when the basket composition changes even if no price moved — do not treat it as inflation. The catalog refresh cadence is monthly, so granularity=monthly gives the most stable matched baskets.0.020000 USD
GET/v1/analyst/price-bands

Price band and tiers for a category node

The price architecture of one shelf: the comparability window that defines 'similarly priced' there, and the shelf's price tiers. Scoped by ladder NODE (a Shopify taxonomy path like 'electronics/computers'), because a band is a property of one shelf. The window is derived in log space from the shelf's own robust spread over the served shelf at its current prices (the same products the tiers count), so it is relative rather than a fixed dollar range - tight where a shelf clusters (video-game accessories run ±10%), wide where it spreads (car-care tools run ±60%). Tiers are equal-population, so 'premium' means the same thing on a $5-$40 shelf and a $400-$4,000 one. A shelf with too few products to define a distribution inherits a window from its own product type, or failing that from its deepest ancestor that has one (disclosed in band.inherited_from: a node path, or 'type:' followed by the product-type phrase) with the tier ladder re-centred on its own median; a shelf where a fifth of products share one price …0.020000 USD
GET/v1/analyst/price-change-leaders

Rank the biggest price movers in a category or brand

Per-product price-change leaderboard: the biggest droppers and gainers in a category or for a brand. Each product's change is LIKE-FOR-LIKE between two matched bands - the best price now versus the best price a window ago - over win = 7, 30 (default) or 90 days, which is the same comparison the Syntalic dashboards show. Only the two bands are scanned, never the dead middle of the window, so a product observed twice in one day cannot masquerade as a 90-day move. Changes beyond 50% in either direction are dropped as data errors rather than reported as news: a product does not fall 97% in a month, a mis-keyed price does, and it would otherwise top a list sorted by absolute change. The rising/stable/falling counts describe the WHOLE matched set the movers were drawn from, so a leaderboard can never imply more churn than the shelf actually had. DISTINCT from /v1/analyst/inflation, which is the category-level read over a quarter or longer; this is which individual SKUs moved. Each mover also carries price_changed_…0.020000 USD
GET/v1/analyst/price-dispersion

Analyze price spread across retailers for a category or department

Analyze the spread of current prices within a category - mean, stddev, coefficient of variation, and percentiles (p10..p90) with IQR outlier exclusion. The population is representativeness-filtered: refurbished/used listings, accessory/parts subtrees, and rows under a category-aware price floor are excluded from headline stats, with the counts disclosed in `excluded`.0.020000 USD
GET/v1/analyst/retailer-index

Price index for a specific retailer over time

Compute a normalized price index (retailer avg / category avg) for a specific retailer day-by-day versus its category baseline. Points report insufficient_sample below sample_threshold products plus stable_avg_price over the products priced every day — read trends from the stable series.0.020000 USD
GET/v1/marketing/availability-index

Measure out-of-stock rates by retailer or category

Out-of-stock rate by retail chain or by category root - an on-shelf availability read rather than a pricing one. Answers 'which retailers are running out of stock', 'what is the stockout rate in this category', and 'is my brand actually on shelf'. Pivot with aggregate_by: 'seller' (default) ranks chains, 'category_root' ranks categories. The denominator is rows where availability was actually OBSERVED, never all rows: roughly 40% of listings carry no availability signal, and counting those as in-stock would report a healthy shelf whenever coverage is poor. availability_coverage reports what share of the scoped shelf carried a signal, so you can tell a genuine 5% stockout rate from one computed over a tenth of the listings. Groups with fewer than five observed rows are dropped rather than shown with a caveat - a rate from two rows is noise wearing a percentage sign. Unlike the pricing endpoints this one does NOT exclude price-flagged rows: the flag marks an untrustworthy price, not an untrustworthy listing, a…0.010000 USD
GET/v1/marketing/brand-breakdown

Break a brand's assortment down by category

What a brand actually sells: a count of its distinct priced products under each category root, ranked. Answers 'what is this brand's product mix' and 'which categories does it really compete in' - useful before a positioning or shelf question, so the comparison targets the category the brand is densest in rather than whichever one was guessed. Brand input matches case-insensitively and across normalization variants (jbl == JBL, tplink == TP-Link); placeholder brands are excluded. Counts only products carrying a current price in the requested country, so a brand present in the catalog but unpriced reads as empty coverage rather than as absent. Carries the coverage and freshness envelope: coverage.products is the total counted, and coverage.reason (`no_match`) explains an empty result rather than leaving an empty list to imply the brand sells nothing.0.010000 USD
GET/v1/marketing/brand-tracker

Track a brand's pricing and presence over time

Track a brand's average/min/max price, product count, in-stock count, and promo count day-by-day across a date range. Brand input matches case-insensitively and across normalization variants (jbl == JBL, tplink == TP-Link). Each point reports insufficient_sample when its basket is under sample_threshold products, plus stable_avg_price computed over only the products priced on every day of the series — use stable_avg_price for trend reads; the all-products average moves with basket composition.0.010000 USD
GET/v1/marketing/competitive-landscape

View all products and pricing in a category

View every product and its current pricing within a category across retailers. Sortable by price (rating/review sorts are accepted for compatibility and fall back to price ordering). Each item carries a condition label (new/refurbished/used) so refurb listings are distinguishable, plus a nullable gpc block (fail-soft). Each item also carries price_observed_at, last_read_at, age_days and current: an offer last read out of stock longer ago than its listing's own window (1.5 times its refresh interval, at least 7 days; Shopify and Google Shopping not judged yet) is not a current price, sorts after every current offer whatever the sort, and is left out of the mean the representative sort centres on; stale_offers counts them across the category. Offset-cursor paginated. Every product row also carries the shared product block: `store` (the chain's key, the same value retailer_id=retailer:<store> takes), `seller` (its display name, e.g. nativecos.com), `store_basis` (`seller`, or `url` when a Shopify listing's stor…0.010000 USD
GET/v1/marketing/price-positioning

Analyze a brand's price positioning vs competitors

Place a brand on a category's price ladder. PREFER `tier`: the brand's median current price placed on the shelf's equal-population ladder (entry | value | mid | premium | luxury, so premium always means the shelf's fourth fifth), read from the category's published price band or its nearest banded ancestor (`tier_node`). It is the same reading the Syntalic dashboards report, and it is null without a category or when no band is published. `positioning` is DEPRECATED and kept for compatibility: a ratio of averages (brand avg / category avg, above 1.15 premium, below 0.85 value), which uses the words premium and value with a different meaning from `tier`. Prices the pipeline flagged as incoherent, and offers that are not current (an out-of-stock reading older than the listing's own cadence window, the published latest_prices.current), are excluded. category_median_price is THE category median: the exact median of the shelf's current prices, nothing trimmed, the same number /v1/analyst/price-bands reports as pric…0.010000 USD
GET/v1/marketing/promo-intelligence

Analyze promotional activity in a category

Analyze promotional activity within a category - promo frequency, average and max discount depth - over a date range. Pivot the breakdown with `aggregate_by`: default `brand` ranks brands within the category; `retailer` ranks retailers across the whole category, or, with `brand=<name>`, on one brand ('which retailers run the deepest promos on Brand X in Category Y'). `brand` is optional in both modes. Read the rows from `results`: one key whatever the pivot, each row naming its brand or retailer in `name` (the response echoes `aggregate_by`). `brands: [...]` / `retailers: [...]` carry the same rows under a key that follows the pivot, kept for existing callers.0.010000 USD
GET/v1/marketing/retailer-assortment

Find which retail chains carry a brand or category

Which retail CHAINS carry a brand or a category, ranked by how many distinct priced products each lists, with that chain's average and median price. Answers 'who stocks this brand', 'where can I find it', and 'which retailers carry the most of this category'. Grouped on the retailer chain, never on the scrape lane - a lane like 'shopify' spans hundreds of storefronts, so grouping by it would answer 'which retailer' with 'shopify'. At least one of brand or category is required. Price statistics exclude rows the pipeline flagged as incoherent while the COUNTS keep them: a chain that genuinely carries the brand should not disappear because one of its prices is wrong. The same holds for offers that are not current (last read out of stock longer ago than 1.5 times the listing's refresh interval, at least 7 days; Shopify and Google Shopping not judged yet): they stay in product_count, are counted in each chain's stale_offers, and never enter its average or median. Each chain carries last_read_at (its most recent r…0.010000 USD
GET/v1/marketing/share-of-shelf

See brand market share within a category

Measure each brand's market share within a category by product count. Shows digital shelf dominance. Brand rows are merged across source variants ('JBL'/'jbl', 'TP-Link'/'tplink') with one canonical display label; placeholder brands (null, 'no', 'Generic') are excluded. When the category is one node of the taxonomy and no retailer filter is given, the count is of store product pages (not Shopify variants) seen in the last 30 days at retailers: a brand's own store, and any storefront of fewer than three brands, are left out of both the brand's count and the shelf's. `shelf` says whether that shelf can be read as a share: at least 3 retailers whose assortment was read (not looked up for one brand), at least 100 pages and at least 10 other brands. When it cannot, `share_pct` is null on every brand and `shelf.failing` names the floors missed; the counts stay. When the per-node facts are not available (`shelf.readable` null, with `shelf.reason`), the count is of variant listings at any store, whatever their age, …0.010000 USD
GET/v1/public/brands

List brands in the catalog

Zero-cost aggregate discovery endpoint. One row per normalized brand with a display label and served listing count (product_count; see grain); optional q prefix-matches the normalized key (JBL == jbl).
GET/v1/public/categories

Browse public category taxonomy

Zero-cost aggregate category discovery endpoint. Returns category path nodes and rolled-up listing counts (product_count is retailer listings, not unique products; see grain); row-level product data remains on paid endpoints.
GET/v1/public/coverage

Catalog coverage map (depth/quality per cell)

Zero-cost aggregate discovery endpoint. Coverage + freshness per (platform, country, category_root): priced/recent/known-brand product counts and quality_status (serving/thin/stale — computed from shelf volume and 90-day freshness, never from how the data is acquired), so an agent can gauge whether a paid query will hit deep data. Row-level product data remains on paid endpoints.
GET/v1/public/retailers

List retailers (platforms) in the catalog

Zero-cost aggregate discovery endpoint. One row per platform with its served listing count (product_count; see grain), countries seen, and freshest observation; row-level product data remains on paid endpoints.
GET/v1/public/stats

Catalog coverage and freshness stats

Zero-cost aggregate discovery endpoint with catalog coverage, category tree counts, retailer count, and latest priced-data timestamp.
GET/v1/reference/brick-attributes

GS1 GPC attribute schema for one or more bricks

Return the GPC attribute schema for one or more bricks - attribute names and their allowed value sets. Accepts up to 100 comma-separated gpc_code values. Use this to discover which attributes GS1 defines for a product category (for example Formation, If Organic) and the controlled vocabulary each one permits. An empty attributes array means GS1 defines none only when gpc.attributes_defined is false. When it is null, GS1 defines attributes this API does not serve yet, so the list is unknown rather than empty; true with an empty list means they were lost in ingest. Every node of the GS1 publication resolves, including bricks no browse node maps to.0.010000 USD
GET/v1/reference/classify

Map Amazon browse node ids to GS1 GPC codes

Map Amazon browse node ids or product-type phrases to GS1 GPC codes. Accepts up to 100 comma-separated browse_id values or q phrases per request (not both). Each browse result carries GPC ancestry, match_precision (SKOS-style), match_source (self | inherited), assurance_state, and browse_node { name, path, in_serving_catalog }. Unmapped ids come back with gpc: null so the response lines up 1:1 with the request. Phrase results are certain-or-blank: a hit is always curated. A class-level hit (e.g. coffee → 50202600) includes forms[] — the child bricks; ask the user which form if they need a leaf, or pass the class code as category= (it matches every brick beneath). An empty gpc list always includes miss { reason, detail, hint, try, candidates }. reason is unmatched_phrase, or ambiguous when several GPC types share the head (fish → prepared vs raw). hint is built from this query; try is nearby lexicon phrases; candidates are competing type identities (code + title), not keyword hits like fish oil. Do not treat …0.010000 USD
GET/v1/reference/reverse

Map GS1 GPC codes back to Amazon browse nodes

Reverse the crosswalk: given GS1 GPC codes, return the Amazon browse nodes mapped onto them. Accepts up to 100 comma-separated gpc_code values. browse_node_count is the true total per code; browse_ids is capped per code (see ids_per_code_cap in the response) because a coarse segment can carry thousands of nodes and an uncapped batch would be enormous. browse_nodes is the same list with name, path, and in_serving_catalog when taxonomy_nodes is published (null name/path until the next serving swap). Codes with no mapped nodes return an empty list rather than being omitted.0.010000 USD
GET/v1/shopper/best-price

Find the best price for a product across retailers

Returns a nullable `gpc` block identifying the resolved product's GS1 GPC product type (code, title, full ancestry, and how exact the mapping is) — null when the product's category has no GPC mapping. Find the lowest current price for a product across retailers in US and Canada. Cross-retailer comparison is entity-matched (barcode-anchored resolution links the same physical product across platforms). Returns the cheapest option plus other retailer prices for comparison. For a named listing (product_uid, or a q that resolves to one) the comparison is that listing's own offer and other stores' offers for the same entity: the listing's own store's other listings (its sizes and variants, which an entity can group by name) are not offers for it and are left out, so best_price is never a sibling variant's price; entity_uid alone still compares the whole entity. Every price row is labeled match_type: 'entity' (verified same product) or 'title' (text match — may be a variant on broad queries); pass strict=true to re…0.010000 USD
GET/v1/shopper/deal-finder

Find discounted products in a category

Discover discounted in-stock products in a category above a minimum discount threshold (discount = current price below the retailer's list price). Quality-gated: unbranded listings, sub-$5 items, and discounts above 70% (the inflated-list-price spam signature) are excluded. Ranked by discount depth weighted by log(price), so meaningful discounts on real products outrank deep cuts on trinkets. Each deal carries observed_at (when its price was seen) and a nullable gpc block (fail-soft). Each deal also carries pack_count, unit_size, unit_measure and unit_price where the listing states a pack, null where it does not. Every product row also carries the shared product block: `store` (the chain's key, the same value retailer_id=retailer:<store> takes), `seller` (its display name, e.g. nativecos.com), `store_basis` (`seller`, or `url` when a Shopify listing's store is read from its own URL because the Shopify lane writes no seller), `url` (the listing page), `lane` (the scrape lane; `retailer` keeps its value on the…0.010000 USD
GET/v1/shopper/price-drop-alert

Check for recent price drops on a product

Check whether a product's current price is below its rolling average within a configurable lookback window. Returns current price vs. the average across the window plus the lowest-seen price and date. Response field `avg_price_last_30d` is a fixed name for backwards compatibility; the value is always computed across the configured `lookback_days` window. Includes a nullable gpc block for the resolved product (fail-soft). price_changed_at and previous_price say when the selected product's current price began (the first reading at it) and what it was before; the lowest-seen and average figures are over the lookback window, these are not. Every product row also carries the shared product block: `store` (the chain's key, the same value retailer_id=retailer:<store> takes), `seller` (its display name, e.g. nativecos.com), `store_basis` (`seller`, or `url` when a Shopify listing's store is read from its own URL because the Shopify lane writes no seller), `url` (the listing page), `lane` (the scrape lane; `retailer`…0.010000 USD
GET/v1/shopper/price-history

Get price history for a product over time

Get historical price observations for a product within a date range. Returns current price, period low/high/avg, trend (rising/falling/stable), good-deal flag, and an observation time-series for charting. Also returns `series`, one row per day at that day's lowest price across the product's entity-matched listings, and `series_summary`, which reads that series: the dated low and high (`min_date`, `max_date`), every day-over-day drop of 5% or more (`drops`), and `change_pct`, the banded like-for-like change over `win` days (best price in the last few days vs best price around `win` days ago; null when the queried range does not reach back that far). These are the numbers the Syntalic dashboards report. Includes a nullable gpc block for the resolved product (fail-soft). Every product row also carries the shared product block: `store` (the chain's key, the same value retailer_id=retailer:<store> takes), `seller` (its display name, e.g. nativecos.com), `store_basis` (`seller`, or `url` when a Shopify listing's s…0.010000 USD
GET/v1/social/attention-vs-shelf

Rank brands by share-of-conversation vs share-of-shelf gap

Brands ranked by the GAP between share of social conversation and share of shelf inside one category. Over-indexed attention with under-distribution is the ranging signal a retail buyer wants and the deck slide a challenger brand wants - one endpoint, two customer types. Requires BOTH corpora bound to the same category axis and the same brand key, which is why nobody holding one of them can reproduce it. The join is on brand KEY, never on name: a row whose key is absent from the other side is dropped and COUNTED in `unmatched`, because matching by name mislabels a real brand as under-distributed. Carries TWO coverage blocks and TWO freshness values - social counts mention subjects on a weekly refresh, shelf counts products on a daily one, and merging either pair would be a lie with a familiar shape. `shelf_brands_not_in_conversation` is the mirror finding: stocked and unspoken of.0.050000 USD
GET/v1/social/brand-momentum

Rank brands by conversation momentum in a category

Brands ranked by MOVEMENT in a category's conversation — new entrants first, then the biggest risers and fallers by mention growth. This is the trend view over the same rows brand-share ranks by volume: one dataset, two questions, deliberately not two copies. Each row carries its prior-window base and a `thin_base` flag; `thin_base_rows` on the response counts them, because a 900% rise from two mentions is arithmetic, not a trend. Pass `status=new` for emerging-brand detection (brands appearing in the conversation with no prior-window presence), `rising` or `falling` to filter direction.0.030000 USD
GET/v1/social/brand-share

Share of social conversation by brand

Share of social conversation by brand inside a category, with movement. `mentions` is the event count and is the comparison currency; `views` is view-weighted reach and is reported SEPARATELY. share_pct is computed on mentions, never on views - Instagram stills report no plays, so view-weighting renders active subcategories as 0%. `category` is required: there is no default aisle, because inheriting one would sell a department-wide number under an aisle-shaped label. Each row carries `rank`, its position in the category by mentions - emitted ONLY on an unfiltered request, because with `brand` set the page is one row and any ordinal on it would be meaningless. A row may also carry `tied_with`, the 1-based positions of other rows within 5% of its mention count: that is PAIRWISE proximity, not an equivalence class, so A near B and B near C does not make A near C. `organic_only` filters to posts the provider did not mark as an ad (`isAd` on TikTok, `paidPartnership` on Instagram); each slice is its own denominat…0.030000 USD
GET/v1/social/category-structure

Show which subcategories own a category's conversation

Which subcategories own a category's conversation, and how concentrated it is: mentions, share, growth, the leading brand, top-2 concentration, and the share of mentions carried by a single creator. A subcategory is a CHILD node of `category` in the Shopify taxonomy, so send the parent whose split you want: a leaf node has no children and returns an empty `subcategories` list. `share_pct` is a child's share of the parent's mentions, so the shares need not sum to 100. A creator_top_pct at or above 60 means one voice carries the subcategory, which is a different fact from a brand leading it. `thin_base` marks rows whose prior-period base was too small for the growth figure to mean anything - a 900% rise from two mentions is arithmetic, not a trend, and the flag says so rather than letting the number stand alone.0.030000 USD
GET/v1/social/creator-index

Rank creators by mention volume in a category

Creators ranked by mention volume within a CPG category, with follower tier, reach, organic share and momentum. Answers 'who is talking about this category', 'which creators drive the conversation', 'who is new this window', and with `brand` set 'which creators carry this brand'. `brand` keeps only creators whose `brands` list carries it; that list is each creator's 8 most-mentioned brands, and `mentions`, `views` and `share_pct` stay the creator's totals for the category, not their mentions of that brand. `engagement_rate_pct` is the median of per-post rates, (likes + comments + shares + saves) / views, over the creator's posts in the scope that report views, with `engagement_posts` saying how many; it is null below 3 such posts and is not comparable across platforms (Instagram stills report no views, and only TikTok reports saves). `saves_median`, `sponsored_posts` and `formats` (posts per format) come from the same posts. Handles are public identifiers; no contact details, no post links, no captions or tr…0.030000 USD
GET/v1/social/launch-buzz

New shelf arrivals vs the conversation around their brand

New shelf arrivals in the window set against the conversation around their brand: which launches landed with traction and which landed in silence. SILENT LAUNCHES ARE RETURNED, FLAGGED - most launches are silent, so filtering them out answers a different and much less useful question. Mentions are BRAND-level in the window, not per SKU: the corpus resolves conversation to brands, and the field is named so the number cannot be read as proof anyone discussed that specific product. First-seen is the earliest observation of the product in the requested country - so rows flagged `new_store` are first observations of a STORE that entered observation inside the window (stores onboard in waves, and a new store's whole catalog gets a first observation at once). Those are catalog backfill wearing the shape of a launch: flagged rather than filtered, counted in `new_store_launches`, and not to be reported as product launches. Every product row also carries the shared product block: `store` (the chain's key, the same val…0.050000 USD
GET/v1/social/product-type-trends

Attention by product type within a category

Attention by product type within a category: which types own the conversation and how that mix is shifting. `share_pct` is the type's share of MENTION COUNTS in scope — the same mention-not-view rule every social endpoint holds, because Instagram stills report no plays. Movement fields (growth, is_new, thin_base) follow the same conventions as brand-momentum.0.030000 USD
GET/v1/social/series

Weekly mentions/views time series for one subject

Weekly mentions and views time series for one subject — a brand or a category — for charting and modelling. Weeks, not days: the corpus refresh is weekly, and a daily grain would imply precision the pipeline does not have. Coverage counts the WEEKS the series actually has and says so; a 4-week series answering a 26-week request is disclosed, never padded.0.030000 USD
GET/v1/social/topic-trends

Emerging conversation topics in a category

Emerging and shifting conversation topics inside a category: theme, the product types it spans, post volume, view-weighted reach, growth against the prior window, and a status of new, rising, falling or flat. Topics come from the corpus enrichment's theme extraction — market fact, not a tenant view. Ranked emergence-first: new themes, then the biggest movers, then volume. `thin_base` discloses rows whose prior base is too small for the growth figure to mean anything.0.030000 USD

Agent payments

These payment protocols and options are advertised by the Service for agent purchases.

MPP

Advertises MPP payments for one or more endpoints. Check the endpoint documentation for authentication requirements.

x402

Advertises x402 payments for one or more endpoints. Check the endpoint documentation for authentication requirements.