/tars/mandates/marketing reads from three of these
REST endpoints. It combines search engine visibility, answer-engine visibility,
website journeys, and the existing canonical buyer-lead view. The standalone
marketing admin remains available until a later retirement slice.
Authentication and errors
All REST endpoints use the normal API session or bearer-token authentication and require thesuperAdmin role. Internal MCP tools are listed only for a
directly authenticated SuperAdmin and re-check that access when called.
- Invalid query parameters return
400. - A caller without SuperAdmin access receives
403. - An unavailable marketing database returns
503without exposing connection details. The failure is logged and reported to Sentry. - Journey responses can be
partial: each unavailable tile has{ "status": "unavailable", "data": null }. Treat that state as unknown, not as a zero metric.
YYYY-MM-DD. Custom from and to values are inclusive, must be
provided together, and take precedence over window.
Marketing email creative library
The Email library stores reusable drafts, approved creative, uploaded assets, themes, previews, and immutable version history. It does not choose an audience, enrol recipients, send email, or show delivery and sent-email history. Those operations belong to separate sequence and delivery surfaces. Use the model-visibletars_open_marketing_email_library tool to ask a
compatible TARS host to display the library. Its structured response includes
template, asset, and theme counts plus a bounded summary of the latest template
versions. A tool response confirms only that the host was asked to open the
library; it does not prove that the widget rendered.
The widget uses these app-only tools internally:
tars_get_marketing_email_libraryloads templates, assets, and themes.tars_get_marketing_email_templateloads one template and its version history.tars_preview_marketing_email_versionrenders one saved version with sample merge-token values.tars_create_marketing_email_copy_draftcreates a reusable copy draft or saves a new version of an existing draft. The editor can place one active library image after the copy; older versions remain unchanged.tars_approve_marketing_email_versionapproves a draft version. The author cannot approve their own draft.
tars_open_marketing_email_library; the widget owns the five app-only
calls.
The supporting REST surface is rooted at
/api/v2/admin/marketing/email-library. It is an internal Admin UI contract,
uses the same SuperAdmin boundary, and exposes library reads, template and
version writes, preview rendering, approval, and bounded asset upload. Invalid
input returns 400, unauthenticated calls return 401, and authenticated
callers without SuperAdmin access receive 403.
Prospect proposal preparation
tars_open_prospect_proposal_authoring is the read-only handoff from one TARS
organisation to the existing Commercial Offer authoring view. Supply at least
one of orgRef, orgName, or customerId. When a Harvian handoff must be
checked, also supply its exact customerId, protected userRef, or both under
harvian.
The tool resolves the existing organisation and canonical billing customer. It
returns one authoring URL when the match is safe. Otherwise it returns explicit
not-found, ambiguous Harvian, or missing-billing-customer blockers. It never
creates an account, research question, proposal, offer, Page, or customer, and
does not return contacts, interaction text, or private evidence.
The existing Commercial Offer service provides two matching preview routes:
POST /api/v2/admin/storefront-rate-cards/commercial-offers/previewreturns the resolved preview snapshot as JSON.POST /api/v2/admin/storefront-rate-cards/commercial-offers/preview/document.pdfrenders that same snapshot as a downloadable PDF.
effectiveAt is optional and selects the published plan effective at that ISO
timestamp. The narrative is optional and bounded. Callers cannot submit
evidence through these routes; trusted evidence must come from the existing
Customer Knowledge path.
Previewing is non-mutating. Pricing, payment choices, term, support and
entitlements come from the selected published plan. The response is marked as
unissued, uses Cache-Control: private, no-store, and creates no customer,
offer, entitlement revision or acceptance record. Formal issuance continues
through the existing Commercial Offer authority.
SEO overview
GET /api/v2/admin/marketing/seo
The response contains:
freshness: latest loaded date, row count, and synchronization time;window: the effective and available date bounds;kpis: current and prior impressions, clicks, click-through rate, and average position;trend: daily performance;topPages,topQueries, andpageQueries;opportunities: page/query pairs with at least 10 impressions whose impression-weighted average position is between 4 and 10, ordered by impressions.
Answer-engine visibility
GET /api/v2/admin/marketing/aeo
The response supplies its fetch time and effective range, source status,
prompt/run totals, current and prior primary-brand mention rates, share of
voice by brand, performance by model, and the most-used citation URLs.
Website journeys
GET /api/v2/admin/marketing/journeys
The response supplies its fetch time and effective range, overall source
status, current/prior traffic and conversion KPIs, source breakdowns, homepage
and converting paths, preview/contact/storefront funnels, and storefront signup
attribution. Each tile reports its own availability.
Data-source configuration
The API process owns all credentials. The browser never receives database or PostHog keys.MARKETING_DATABASE_URL: isolatedscope3_marketingconnection. Use a role withSELECT-only grants; the pool also sets PostgreSQL sessions read-only.MARKETING_DB_POOL_MAX,MARKETING_DB_IDLE_TIMEOUT_MS,MARKETING_DB_CONNECTION_TIMEOUT_MS,MARKETING_DB_STATEMENT_TIMEOUT_MS: optional pool limits and timeouts.POSTHOG_API_KEYandPOSTHOG_MARKETING_PROJECT_ID: marketing-site HogQL reads.POSTHOG_API_KEY_INTERCHANGEandPOSTHOG_INTERCHANGE_PROJECT_ID: Apostra signup-attribution reads.