Seekmodo developer docs

Reference for the REST shim, MCP JSON-RPC surface, and storefront connectors. Authenticate with HMAC; replay window is 5 minutes.

Model Context Protocol (MCP)

Seekmodo speaks the Model Context Protocol so AI clients like Claude Desktop, Cursor, and ChatGPT can read and write your search configuration on your behalf — discovering zero-result queries, proposing synonyms, pinning products, and tuning ranking — with a human approving every change.

Already a Seekmodo customer?

Open the AI prompt library in your admin to copy ready-to-paste workflows for your AI assistant — or connect Claude / Cursor directly with an operator token.

Calling the gateway directly

For server-to-server integrations, the gateway speaks JSON-RPC 2.0 at POST https://mcp.seekmodo.com/. Send tools/list to discover what your tenant can call, and tools/call to invoke a tool. Tenant API calls use the HMAC headers documented in the REST shim section; operator workflows authenticate with a bearer token minted from your admin.

POST / HTTP/1.1
Host: mcp.seekmodo.com
Content-Type: application/json
X-Seekmodo-Tenant: ten_...
X-Seekmodo-Timestamp: 1717000000
X-Seekmodo-Nonce: 9f3a...
X-Seekmodo-Signature: ...

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/list",
  "params": {}
}

Tool catalog

Live from the gateway · last refreshed Sat, 25 Jul 2026 11:58:02 GMT · 83 available, 1 preview. available= generally available on every plan that includes the surface · preview= name reserved, implementation on the roadmap.

Search

ToolDescriptionMutatesStatus
searchRead-only corpus search. Body params are passthrough to the per-tenant Typesense collection.noavailable
search.by_vehicleVehicle-id-scoped corpus search. Returns products whose `fits_vehicles` int[] contains the requested vehicle_id.noavailable
search.byImageImage-as-query corpus search. Accepts one of {image_b64, image_url, doc_id} and returns SKUs visually similar to the query via CLIP ViT-B/32 + Typesense vector_query.noavailable
suggestTypeahead suggestions: prior-search keywords, prefix-matched products, and matching categories.noavailable
typeaheadFlat-row typeahead for storefront connectors. Returns N prefix-matched docs from the tenant Typesense collection in the legacy {rows} shape WP / Zen Cart connectors expect.noavailable

Catalog & telemetry

ToolDescriptionMutatesStatus
eventsRecord search / click / impression events for analytics, LTR training, and bot-check verdict tagging.yesavailable
indexBulk upsert documents into the tenant's Typesense collection. Mirrors the documents/import wire shape.yesavailable
tenant.catalog_previewReturn a small sample of indexed documents (admin only). With `q`, runs a prefix-match autocomplete used by the admin doc picker.noavailable
tenant.domain.promoteSelf-service swap of the tenant's canonical storefront host. Used by connectors to flip from dev -> prod without an operator round-trip.yesavailable
tenant.handshakeVerify connector configuration and discover the tenant's tool surface, vertical, and rate limits.noavailable
tenant.region.listRead tenant-level multi-region flags + every numinix_mcp_tenant_regions row.noavailable
tenant.snapshotRead (or push to) the full tenant runtime config snapshot.noavailable

Merchandising

ToolDescriptionMutatesStatus
banners.listList banner merchandising rules for the tenant.noavailable
banners.removeDelete a banner merchandising rule by id.yesavailable
banners.setCreate or update a banner merchandising rule.yesavailable
deboosts.listList deboost merchandising rules for the tenant.noavailable
deboosts.removeDelete a deboost merchandising rule by id.yesavailable
deboosts.setCreate or update a deboost merchandising rule.yesavailable
pins.landscapeSnapshot of active pin rules with priority, schedule, audience, and metadata.noavailable
pins.listRead editorial pins for the tenant.noavailable
pins.removeDelete a pin entry by id.yesavailable
pins.setPin or exclude documents for a specific query.yesavailable
redirects.listList keyword redirect merchandising rules for the tenant.noavailable
redirects.proposePropose keyword redirect rules from search telemetry (dry-run only).noavailable
redirects.removeDelete a keyword redirect merchandising rule by id.yesavailable
redirects.setCreate or update a keyword redirect merchandising rule.yesavailable
segments.listList customer segments for the tenant.noavailable
segments.removeDelete a customer segment by id.yesavailable
segments.setCreate or update a customer segment.yesavailable
synonyms.addAdd or replace a synonym entry. id is optional; we generate one if omitted.yesavailable
synonyms.listRead the per-tenant synonym list. Returns Typesense-native synonym entries.noavailable
synonyms.removeDelete a synonym entry by id.yesavailable

Analytics

ToolDescriptionMutatesStatus
analytics.click_painHigh-volume queries with deep average click position (>=5). Highest-leverage pin / reranker candidates.noavailable
analytics.conversion_funnelDaily funnel (searches -> clicks -> add_to_carts -> purchases) plus session-scoped conversion rates.noavailable
analytics.ctr_trendDaily CTR over a rolling window — aggregate (default) or per top-N keyword.noavailable
analytics.latencyPer-tenant search latency (p50, p95) and fallback rate over a rolling window for the operator health card.noavailable
analytics.revenue_by_queryPer-keyword revenue + order count for a rolling window, under a chosen attribution model.noavailable
analytics.top_clicked_productsMost-clicked products with click counts and top driving keywords for a rolling window.noavailable
analytics.top_queriesMost-searched keywords with CTR and avg result count for a rolling window.noavailable
analytics.weekly_digestWeekly search digest JSON for email reports (KPIs, keywords, products, zero-results, funnel, latency).noavailable
analytics.zero_resultsSearch queries that returned zero results.noavailable
catalog.getFetch a single indexed catalog document by id or sku with rich default fields.noavailable
catalog.pruneDelete commerce catalog documents whose last_indexed_at is strictly older than the supplied cutoff. Called after a successful full index run so hard-deleted or otherwise absent products stop appearing in suggest/typeahead.yesavailable
catalog.statsCorpus size, schema fingerprint, top-K category breadcrumbs. Read-mostly catalog metadata.noavailable

Recommendations

ToolDescriptionMutatesStatus
bundle.suggestAnchor-based "complete the kit" bundle composer using co_purchase + diversity bias.noavailable
reco.placements.listList recommendation + bundle placement configurations for this tenant.noavailable
recommend.also_boughtAnchor-anchored frequently-bought-together recommendations from co-purchase signal with lexical fallback.noavailable
recommend.also_viewedAnchor-anchored also-viewed recommendations from broad same-session signal with lexical fallback.noavailable
recommend.relatedAnchor-anchored related-products recommendations from co-view signal with lexical fallback.noavailable
recommend.trendingNon-anchored trending products recommendation (last-30-day co-occurrence aggregation).noavailable

A/B testing

ToolDescriptionMutatesStatus
ab.archiveArchive an experiment without promoting any variant.yesavailable
ab.createCreate a new A/B experiment with at least two variants.yesavailable
ab.listList A/B experiments for the tenant.noavailable
ab.promotePromote a winning variant of a running A/B experiment.yesavailable
ab.resultsPer-variant impression / click / CTR rollup for an experiment.noavailable

Learning-to-rank

ToolDescriptionMutatesStatus
ltr.config.setPatch per-tenant LTR settings (mode, ab_ramp_pct, ndcg_floor_pct, etc).yesavailable
ltr.diagnosticsSnapshot of LTR pipeline health: scorer reachability, linked-click coverage, filter diversity, AGREE-rate, arm CTR.noavailable
ltr.model.rollbackOperator action: roll the tenant back to a previously trained LTR model. Requires a free-text reason.yesavailable
ltr.retrainForce-retrain the LTR model now. Returns the new model summary.yesavailable
ltr.shadow_deltasList recent shadow-mode disagreements between LambdaMART and the served top-1 for operator gut-check.noavailable
ltr.shadow_feedbackRecord operator gut-check (thumbs up/down) on a shadow-mode LambdaMART disagreement.yesavailable
ltr.statusRead LTR settings, the active model summary, and recent training runs.noavailable
ltr.toggleToggle Learning-to-Rank on or off for the tenant.yesavailable

Bot defence

ToolDescriptionMutatesStatus
bot_check.statusPer-tenant bot-check status: enrollment, last activity, and 24-hour bot-blocked counts.noavailable
bot.classifyClassify a request triple (UA + IP + session) as bot or human; returns bot_score 0..100 + reasons + signal breakdown.noavailable
bot.healthBot-check inline classifier health: 5-min classify volume (inline vs http), nonce issue/verify rates, 24h shadow AGREE-rate.noavailable
nonce.issueIssue an HMAC nonce for the SERP click-beacon flow.noavailable
nonce.verifyVerify an HMAC nonce for the SERP click-beacon flow; returns valid bool + age + reason.noavailable

Shopper UX

ToolDescriptionMutatesStatus
chatConversational shopper assistant. Runs an LLM-driven loop that issues sub-tool calls (search, suggest, recommend) and returns a cited natural-language answer.noavailable

Fitment & vehicles

ToolDescriptionMutatesStatus
fitment.coverageCoverage aggregates over numinix_mcp_vehicle_taxonomy for the tenant.noavailable
fitment.orphansVehicles with zero fitted products (product_count=0) for the tenant.noavailable
fitment.overrides.listPaginated list of per-tenant fitment overrides (operator-set add/remove rules layered on top of the AutoPro fitment graph).noavailable
fitment.resolveResolve a (year, make, model) triple against the per-tenant vehicle taxonomy projection into a concrete vehicle_id + canonical label. Returns null when no row matches.noavailable
vehicle_taxonomy.bulk_upsertBulk-upsert vehicle taxonomy rows (year/make/model + pre-computed VLP slug + product_count) into the per-tenant projection. Up to 1000 rows per call. Called by the connector's seekmodo:vlp-project artisan command.yesavailable
vehicle_taxonomy.pruneDelete vehicle taxonomy rows whose last_seen_at is older than the supplied UTC cutoff (ISO 8601). Called after a successful seekmodo:vlp-project run so vehicles that disappear from the connector's projection stop appearing in the gateway sitemap.yesavailable
vehicle.taxonomy.lookupResolve a per-tenant vehicle taxonomy row by VLP slug (e.g. "keys-for-2019-honda-civic") or by vehicle_id. Returns the canonical row used by the BC Worker VLP renderer.noavailable
vehicle.taxonomy.neighboursReturn the two AKS-canonical neighbour lanes (same make+model different year; same year+make different model) for a given vehicle_id in the per-tenant projection.noavailable

ESP integrations

ToolDescriptionMutatesStatus
esp.dlq_recentRecent ESP DLQ rows for the admin failure-visibility surface.noavailable
esp.test_eventFire a synthetic event at the configured ESP and return the provider verdict synchronously.yesavailable

Commerce

ToolDescriptionMutatesStatus
commerce.boost_by_stockSet stock_ranking_policy=demote_all_oos via tenant.config.set.yesavailable
commerce.exclude_out_of_stockSet stock_ranking_policy=exclude_all_oos via tenant.config.set.yesavailable
commerce.promotions.listList active commerce promotions.nopreview

Other

ToolDescriptionMutatesStatus
askSingle-turn Ask AI over the tenant catalog and policy docs. Bounded search + catalog.get loop with cited answers.noavailable
resolve_redirectResolve a shopper query to a merchandising redirect URL, if any.noavailable