Product Features

Monid signal source

Add lower-cost, curated market-data endpoints without giving campaigns an open marketplace or bypassing GTM governance.

Monid is a first-class, optional Signal V2 provider alongside Apollo. GTM Brain adopts Monid's useful discover → inspect → run lifecycle, usage-based pricing, asynchronous runs, and workspace controls. It does not let a production campaign dynamically discover and execute arbitrary endpoints.

Production boundary

Rendering diagram...

The organization owns its sealed, workspace-scoped API key. The deployment owns the endpoint allowlist. Paid execution runs inside a Temporal activity; accepted domain mutations use the existing gtm.ingest_signal_v2 Fabric action. Full provider output never enters workflow history, and every result starts as unverified_public until separately verified or corroborated.

Connect Monid

  1. In Monid, create an API key in the workspace GTM Brain should use.
  2. Open Settings → Integrations → Monid.
  3. Enter the key, then select Connect & test.

The connection test calls only the documented, read-only GET /v1/wallet/balance endpoint. It verifies the workspace-scoped key and does not execute a paid endpoint. A configured account remains inactive until the deployment has a curated binding.

Curate an endpoint

MONID_API_KEY="monid_live_..." \
pnpm --filter @repo/gtm monid:curate -- apify /approved/company-signals

The command prints the input schema, pricing, an inspectHash, and a shadow binding template. Review provider terms, provenance, result fields, and maximum possible charge before filling it in.

Record that review in a versioned decision document with a stable approval ID. The approval must name the exact provider endpoints, pinned inspect hashes, input and result ceilings, permitted data classes, retention/provenance rules, and maximum canary charge. A placeholder or invented approval ID is not an approval. The production decision template is docs/decisions/gtm-monid-endpoint-approval-v1.md in the repository.

[
	{
		"id": "company-intent",
		"version": "2026-07-15.1",
		"mode": "shadow",
		"provider": "apify",
		"endpoint": "/approved/company-signals",
		"inspectHash": "sha256:<hash from monid:curate>",
		"maxCostMicrodollars": 5000,
		"maxResults": 10,
		"legalApprovalId": "legal-review-2026-0715",
		"input": { "limit": 10 },
		"mapping": {
			"resultPath": "items",
			"companyDomain": "company.domain",
			"companyName": "company.name",
			"summary": "event.summary",
			"occurredAt": "event.occurredAt",
			"sourceId": "event.id",
			"sourceUrl": "event.sourceUrl"
		},
		"bucket": "company",
		"subtype": "databricks_adoption_expansion",
		"confidence": 0.4
	}
]

Set the reviewed array as GTM_MONID_CURATED_ENDPOINTS_JSON. For a Databricks Asset Bundle, pass it through monid_curated_endpoints_json. The default [] makes paid Monid runs impossible.

Shadow, canary, then active

shadow performs POST /v1/inspect, validates identity/schema/pricing, emits compact diagnostics, and stops. It never calls the paid POST /v1/run endpoint.

An active binding is inspected again before every run. GTM Brain fails closed on identity, schema, pricing, quoted-budget, actual-cost, provider-status, result-count, or field-mapping violations. Async runs are polled by run ID. Because Monid does not document an idempotency key for POST /v1/run, that paid POST is never blindly retried: V2 sensing uses a single-attempt Temporal activity. A worker failure surfaces for operator reconciliation by run ID instead of risking a second charge.

Production deliberately excludes campaign-time discovery, tenant-supplied endpoint names or mappings, private evidence URLs, results without stable provenance, and raw payloads in Temporal history.

Next: Signals, Integrations, and Governance.

On this page