{"schema_version":"1.8.0","reviewed_on":"2026-09-30","scope":"public_discovery_only","tenant_availability":"Check authenticated workspace and tenant catalogs, selected-project status, then product-specific readiness","authenticated_discovery":{"workspaces":{"method":"GET","path_template":"/api/platform/agent-workspaces","authentication":"current_user_session","scope":"current_actor","openapi":"/openapi/workspaces.json","next":"select_exact_tenant_and_project"},"tenant_catalog":{"method":"GET","path_template":"/api/platform/agent-catalog?tenant_id={tenant_id}","authentication":"current_user_session","scope":"selected_tenant","openapi":"/openapi/catalog.json","next":"read_selected_project_status"},"project_status":{"method":"GET","path_template":"/api/platform/project-status?tenant_id={tenant_id}&project_id={project_id}","authentication":"current_user_session","scope":"selected_project","openapi":"/openapi/project-status.json","next":"verify_product_and_provider_operation_readiness"}},"admin_verification":{"connection_status":{"method":"GET","path_template":"/api/platform/agent-connection-status?tenant_id={tenant_id}&project_id={project_id}","authentication":"current_user_session","actor":"tenant_administrator_or_superadmin","scope":"selected_project","openapi":"/openapi/connections.json","interpretation":"saved_home_connection_topology_only"}},"setup_navigation":{"products":{"path":"/dashboard/products","actor":"signed_in_user","purpose":"inspect_saved_product_access"},"enablement":{"path":"/admin/products","actor":"tenant_administrator","purpose":"enable_requested_product"},"project_roles":{"path":"/admin/product-access","actor":"tenant_administrator","purpose":"assign_exact_project_product_role"},"social_messaging":{"path":"/connections#social-messaging","actor":"tenant_administrator","purpose":"review_instagram_or_messenger_setup_after_scope_selection"}},"delegated_home_reads":{"resource":"https://home.datagran.io/api/mcp","protected_resource_metadata":"https://home.datagran.io/.well-known/oauth-protected-resource/api/mcp","authorization_server_metadata":"https://home.datagran.io/.well-known/oauth-authorization-server","transport":"streamable_http","capability":"read_only_home_discovery"},"resources":{"index":"/llms.txt","full_text":"/llms-full.txt","agent_guide":"/agent.txt","sitemap":"/sitemap.md","openapi":"/openapi.json","workspaces_openapi":"/openapi/workspaces.json","catalog_openapi":"/openapi/catalog.json","project_status_openapi":"/openapi/project-status.json","connections_openapi":"/openapi/connections.json","marketing_read_openapi":"/openapi/marketing.json","creative_openapi":"/openapi/creative.json","intelligence_openapi":"/openapi/intelligence.json","memory_openapi":"/openapi/memory.json","observability_openapi":"/openapi/observability.json","home_delegated_read_metadata":"https://home.datagran.io/.well-known/oauth-protected-resource/api/mcp"},"example_journeys":[{"id":"measurement-to-meeting","title":"From ChatGPT Ads measurement to a confirmed meeting","status":"guidance_only","steps":[{"id":"identity-and-scope","surfaces":[],"actor":"user","action":"Guide signup or sign-in in the browser. The user controls identity, credentials and exact tenant/project selection.","completionEvidence":"A current authenticated session and an unambiguous selected tenant and project.","stopIf":"Identity is incomplete, access is revoked, or the intended tenant/project is ambiguous."},{"id":"product-enablement","surfaces":["voice-agents","crm","inbox-followups","connections"],"actor":"tenant_administrator","action":"Check the selected tenant's requested products in Home. A new signup includes Home/Intelligence, not automatic CRM, Inbox or Voice entitlement. If a product is disabled, use Home's administrator setup page and wait for provisioning and an exact-project grant. If CRM, Inbox or GPT Live needs attention, an administrator can request Retry setup there. Re-read product status after an uncertain response; do not disable a product to force another setup attempt or call an unreviewed write endpoint as an AI tool.","completionEvidence":"Each requested product has a current tenant entitlement and actor/project grant, and provisioning is no longer pending; product runtime readiness is checked separately.","stopIf":"Product setup is not configured, requires Datagran support, remains provisioning or lacks the required project grant."},{"id":"ads-measurement","surfaces":["ads-attribution","connections"],"actor":"tenant_administrator","action":"Connect the authorized marketing source and configure ChatGPT Ads measurement or conversion feedback where supported; do not promise ChatGPT ad creation.","completionEvidence":"The exact project has authorized account assignment, a fresh import or observed measurement evidence, and separately verified conversion-delivery status where requested.","stopIf":"Provider consent, account assignment, fresh import or product entitlement is missing."},{"id":"attribution","surfaces":["ads-attribution","intelligence"],"actor":"authorized_operator","action":"Review project tracking configuration and source provenance, then observe real touch or conversion records.","completionEvidence":"A project-scoped observed event or conversion record with its source and time, not just a saved tracking setting.","stopIf":"Only configuration exists or evidence cannot be tied to the selected project."},{"id":"voice-agent","surfaces":["voice-agents","connections"],"actor":"voice_administrator","action":"Inspect the selected-project agent list. Before creating a new agent, run Voice creation preflight with current user authority. Create or edit only an authorized draft, obtain review before publishing, and verify the intended website or phone channel separately.","completionEvidence":"Published agent version, current project grant, connected channel and an observed test session in that channel.","stopIf":"Creation preflight denies a new agent, only a draft or saved number exists, the channel is not enabled, or provider readiness is unknown."},{"id":"crm-lead","surfaces":["crm","ads-attribution"],"actor":"authorized_operator","action":"Resolve the customer identity in the exact CRM workspace and capture a lead with a stable source-event identity where supported.","completionEvidence":"A scoped CRM person and lead receipt linked to the intended source; Home customer and Funnel IDs are reconciled separately.","stopIf":"The CRM grant is missing, the person belongs to another workspace, or an uncertain person upsert or lead insert has not been inspected."},{"id":"follow-up","surfaces":["inbox-followups","crm"],"actor":"authorized_operator","action":"Prepare a reply or follow-up proposal, check recipient consent and sender/channel readiness, then request the required review before sending or activation.","completionEvidence":"A reviewed draft and, only after approval, the platform's send or automation receipt with its actual status.","stopIf":"Consent, approval, sender readiness or an uncertain-send reconciliation is missing."},{"id":"calendar-meeting","surfaces":["calendar","voice-agents","connections"],"actor":"calendar_owner_and_customer","action":"Approve the exact Calendar/project/agent grant, check current availability, repeat the date and timezone, and request explicit customer confirmation before booking.","completionEvidence":"A provider-backed availability result followed by the original workflow's recorded status: booked receipt for the confirmed time.","stopIf":"Only a saved grant or proposed slot exists, customer confirmation is absent, or the booking outcome is unknown; reconcile the original request rather than inserting another."},{"id":"outcome-review","surfaces":["observability","intelligence"],"actor":"authorized_operator","action":"Review project-scoped receipts and operational evidence for each requested action, then report completed, pending and uncertain steps separately.","completionEvidence":"Every requested outcome has its own authorized receipt or observed status; missing evidence remains explicitly unknown.","stopIf":"Any required write, provider action or cross-service identity link lacks verifiable evidence."}]},{"id":"connected-learning-review","title":"From connected sources to reviewed AI guidance","status":"guidance_only","steps":[{"id":"scope-and-source-consent","surfaces":["connections"],"actor":"user","action":"Confirm the exact tenant and project, the sources the user wants to use, and any provider consent. The user controls sign-in, credentials and consent.","completionEvidence":"A current authenticated session, an unambiguous tenant and project, and a user-approved source list.","stopIf":"The selected scope is ambiguous, access was revoked, or a requested source lacks consent."},{"id":"source-assignment","surfaces":["connections","intelligence"],"actor":"tenant_administrator","action":"Connect only supported sources and assign their allowed capabilities to the selected project. Check saved assignments and provider access separately.","completionEvidence":"The exact project has saved source assignments and a separate current provider check where the product supports one.","stopIf":"Only a tenant-level connection exists, its project assignment is missing, or provider access is unknown."},{"id":"product-and-worker-access","surfaces":["groovy","intelligence","memory-guardrails"],"actor":"authorized_operator","action":"Check Intelligence feature grants, optional Memory access, Groovy product access, license, worker connection and tool grants independently. A Home launch does not make Groovy ready.","completionEvidence":"Current project grants and product-owned preflight evidence for the selected Groovy workspace and worker.","stopIf":"A feature grant, license, worker connection or required tool approval is missing; a recent heartbeat alone is not task execution."},{"id":"knowledge-and-policy-review","surfaces":["memory-guardrails","intelligence"],"actor":"tenant_administrator","action":"Review consented source provenance, Memory access and retention, and Guardrails policy drafts. Ask for review before activation where supported.","completionEvidence":"A scoped source inventory, saved access and retention settings, and the recorded policy review or active status for each requested change.","stopIf":"Source consent or provenance is missing, retention is unresolved, or only a saved policy draft exists."},{"id":"controlled-groovy-task","surfaces":["groovy","observability"],"actor":"licensed_groovy_user","action":"Select a Mind, worker and approved skills for one controlled read or proposal task. Inspect the owned task and its safe diagnostics before any retry.","completionEvidence":"An owned task receipt and product-owned diagnostics showing a completed result, not only a queued or running state.","stopIf":"The task awaits approval, remains queued or running, fails, or has an uncertain outcome that has not been inspected."},{"id":"recursive-learning-review","surfaces":["intelligence","memory-guardrails"],"actor":"authorized_reviewer","action":"Review source-backed recommendations and observed outcomes. Approve, reject or withdraw each proposed learning change through the authorized product flow.","completionEvidence":"A recorded decision tied to source and outcome evidence, followed by an observed result or an explicit pending state.","stopIf":"The recommendation lacks provenance, consent, reviewer authority or a way to reverse a harmful change."},{"id":"scoped-observability-review","surfaces":["observability","groovy","intelligence"],"actor":"authorized_operator","action":"Compare Home project activity with product-owned task and session diagnostics. Keep missing data unknown; do not assume IDs from different services form one trace.","completionEvidence":"Separate authorized receipts or observed statuses for each service, with unresolved gaps reported as unknown.","stopIf":"A required result is missing, a cross-service identity link is unproven, or raw customer logs would be exposed."}]}],"surfaces":[{"id":"ads-attribution","name":"Ads and attribution","summary":"Analyze Meta, Google and ChatGPT Ads performance and connect campaigns to leads and outcomes.","documentation":"/docs/products/ads-attribution.md","human_entry_point":"/attribution","related":["creative","connections","crm","intelligence"],"limits":["ChatGPT Ads integration is measurement and conversion feedback, not ChatGPT ad creation","Attribution is evidence with provenance, not proof that every touch or conversion was observed"],"api_specifications":["/openapi/marketing.json"],"product_owned_resources":[],"product_resource_reachability":"not_checked_by_home"},{"id":"creative","name":"Creative exploration","summary":"Generate and review image, video and carousel variations for existing marketing destinations.","documentation":"/docs/products/creative.md","human_entry_point":"/creative-exploration","related":["ads-attribution","connections"],"limits":["A reviewed Meta-source variation may create a paused ad in an existing ad set","This is not a general self-service campaign-from-scratch or ChatGPT Ads creation flow","Publication and paid spend require explicit human control"],"api_specifications":["/openapi/creative.json"],"product_owned_resources":[],"product_resource_reachability":"not_checked_by_home"},{"id":"voice-agents","name":"Voice agents","summary":"Configure GPT Live agents for website chat, live voice and phone; enterprise voice has a managed setup path.","documentation":"/docs/products/voice-agents.md","human_entry_point":"/dashboard/products","related":["connections","calendar","inbox-followups","observability"],"limits":["Creation preflight is a point-in-time check; a created draft is not published or channel-ready","A saved agent is not automatically published, connected to a number or permitted to book a calendar","Enterprise Voice setup requires Datagran administration"],"api_specifications":[],"product_owned_resources":[{"id":"voice_index","url":"https://dashboard.agents.datagran.io/llms.txt","mediaType":"text/plain"},{"id":"voice_agent_guide","url":"https://dashboard.agents.datagran.io/agent.txt","mediaType":"text/plain"},{"id":"voice_catalog","url":"https://dashboard.agents.datagran.io/agent-resources.json","mediaType":"application/json"},{"id":"voice_core_openapi","url":"https://dashboard.agents.datagran.io/openapi.json","mediaType":"application/json"},{"id":"voice_api_index","url":"https://api.agents.datagran.io/v1/agent-builder/llms.txt","mediaType":"text/plain"}],"product_resource_reachability":"not_checked_by_home"},{"id":"crm","name":"CRM","summary":"Manage customer records, relationships and sales stages in a project-scoped CRM.","documentation":"/docs/products/crm.md","human_entry_point":"/dashboard/products","related":["ads-attribution","inbox-followups","calendar","connections"],"limits":["Home customer identity and Funnel lead IDs are distinct from a CRM record ID","Datagran CRM contact editing is available from the Inbox name and CRM People records; stale edits conflict and saving never starts a call","Inbox edits Datagran CRM people and existing Salesforce Contacts/Leads with provider field permissions; Titan supports contact linking and refresh, while Hibe needs a human contact-editing API extension","Write access and CRM connection must be checked for the exact tenant and project","A person's external_id is an update target and an upsert can replace existing fields; inspect the record before replaying an uncertain write"],"api_specifications":[],"product_owned_resources":[{"id":"crm_index","url":"https://crm.datagran.io/llms.txt","mediaType":"text/plain"},{"id":"crm_agent_guide","url":"https://crm.datagran.io/agent.txt","mediaType":"text/plain"},{"id":"crm_product_guide","url":"https://crm.datagran.io/docs/crm.md","mediaType":"text/markdown"},{"id":"crm_api_guide","url":"https://crm.datagran.io/docs/api.md","mediaType":"text/markdown"},{"id":"crm_cli_guide","url":"https://crm.datagran.io/docs/cli.md","mediaType":"text/markdown"},{"id":"crm_openapi","url":"https://crm.datagran.io/api/v1/openapi.json","mediaType":"application/json"},{"id":"crm_catalog","url":"https://crm.datagran.io/.well-known/datagran-crm.json","mediaType":"application/json"}],"product_resource_reachability":"not_checked_by_home"},{"id":"inbox-followups","name":"Inbox and follow-up automation","summary":"Manage conversations and personal email outreach with researched prospects, reviewed drips, Billing and reply handoffs.","documentation":"/docs/products/inbox-followups.md","human_entry_point":"/dashboard/products","related":["crm","connections","groovy","voice-agents"],"limits":["Inbox owns message scheduling, sending and flow control","Email outreach is enabled across tenants; each project still needs Inbox access, administrator approval, a verified mailbox with send/receive permissions and Billing capacity","Recipient consent, channel readiness and tenant policy must be checked before sending","The Inbox tool gateway is trusted-server only; public documentation is not direct model access","An automation draft is not an active follow-up policy","Email outreach launch is a separately reviewed console workflow, not an extra gateway capability or delegated Home read tool","Follow the [readiness checks](https://api.agents.datagran.io/v1/inbox/docs.md#check-readiness-and-resolve-blockers): Home Product access and Product roles, Connections → Email, Usage & billing, current estimates and recipient review","Research can start before a mailbox is connected, with separate paid-work approval. Sending requires a ready mailbox. Create automation saves setup; Start research for N people begins paid work; Approve N people and queue emails authorizes sending","Approve each batch's recipients, copy, 5–20 distinct email steps, timing and budget; new batches do not restart completed work","The first step can send separately to approved valid alternate addresses; later steps use the primary address, with one person count and tracking per email","Open and click detection can include automated activity; neither proves human reading or buying intent, and acceptance does not prove delivery","Inbox contact cards can link a CRM person and add phone, email, role, notes and extra fields; no accessible CRM shows setup choices with Datagran CRM first","Calling requires the current CRM phone, a matched Home customer and project lead, a ready calling connection, operator readiness, Billing and contact permission","Every reply pauses the drip; high intent or uncertainty goes to Inbox, rejection stops outreach and opt-out suppresses the person and all addresses","Routine AI answers need an approved paid allowance and do not resume the drip; continuation needs a fresh review of replies and remaining steps","Research, verification, drafts, revisions and reply reviews use current Billing quotes and actual usage; shared verifier credit waits are uncharged and never buy credits automatically"],"api_specifications":[],"product_owned_resources":[{"id":"inbox_index","url":"https://api.agents.datagran.io/v1/inbox/llms.txt","mediaType":"text/plain"},{"id":"inbox_agent_guide","url":"https://api.agents.datagran.io/v1/inbox/agent.txt","mediaType":"text/plain"},{"id":"inbox_setup_guide","url":"https://api.agents.datagran.io/v1/inbox/docs.md","mediaType":"text/markdown"},{"id":"inbox_openapi","url":"https://api.agents.datagran.io/v1/inbox/openapi.json","mediaType":"application/json"},{"id":"inbox_catalog","url":"https://api.agents.datagran.io/v1/inbox/agent-resources.json","mediaType":"application/json"}],"product_resource_reachability":"not_checked_by_home"},{"id":"calendar","name":"Calendar","summary":"Connect a calendar, inspect availability and use the separately confirmed booking workflow.","documentation":"/docs/products/calendar.md","human_entry_point":"/connections","related":["connections","voice-agents","crm"],"limits":["Connecting a calendar does not authorize booking","The booking gateway is server-to-server, not a public browser or agent endpoint","A saved grant or published binding does not prove a deployed channel or live provider is ready","Treat uncertain booking outcomes as requiring reconciliation, never an automatic repeat insertion"],"api_specifications":[],"product_owned_resources":[{"id":"calendar_voice_index","url":"https://api.agents.datagran.io/v1/agent-builder/calendar/llms.txt","mediaType":"text/plain"},{"id":"calendar_voice_setup_guide","url":"https://api.agents.datagran.io/v1/agent-builder/calendar/docs.md","mediaType":"text/markdown"},{"id":"calendar_voice_setup_openapi","url":"https://api.agents.datagran.io/v1/agent-builder/calendar/openapi.json","mediaType":"application/json"}],"product_resource_reachability":"not_checked_by_home"},{"id":"connections","name":"Connections","summary":"Connect and assign external sources and channels to the correct tenant and project.","documentation":"/docs/products/connections.md","human_entry_point":"/connections","related":["ads-attribution","voice-agents","inbox-followups","calendar","crm"],"limits":["A connected provider account is not automatically assigned to a product or agent","Existing file or calendar permissions do not authorize email; mailbox setup requires explicit mail consent and current send/receive grants, and sends no test message","Never expose credentials or infer ownership from email or a shared partner account","Some provider adapters and production channels remain gated"],"api_specifications":["/openapi/connections.json"],"product_owned_resources":[],"product_resource_reachability":"not_checked_by_home"},{"id":"groovy","name":"Groovy harness","summary":"Build and operate advanced AI automations with Minds, tools, runs and approval boundaries.","documentation":"/docs/products/groovy.md","human_entry_point":"/dashboard/products","related":["inbox-followups","intelligence","observability"],"limits":["Groovy's multi-agent harness exists in its own product; a Home launch grant does not prove its license, connector, tool authority or runtime readiness","Groovy's external harness API handles restricted conversations, not worker administration or Datagran project grants","A Groovy decision does not take over Inbox scheduling or make unapproved external changes"],"api_specifications":[],"product_owned_resources":[{"id":"groovy_index","url":"https://www.gogroovy.ai/llms.txt","mediaType":"text/plain"},{"id":"groovy_agent_guide","url":"https://www.gogroovy.ai/agent.txt","mediaType":"text/plain"},{"id":"groovy_setup_guide","url":"https://www.gogroovy.ai/ai/groovy-agent-guide.md","mediaType":"text/markdown"},{"id":"groovy_harness_guide","url":"https://www.gogroovy.ai/ai/groovy-harness.md","mediaType":"text/markdown"},{"id":"groovy_datagran_guide","url":"https://www.gogroovy.ai/ai/groovy-datagran.md","mediaType":"text/markdown"},{"id":"groovy_external_harness_openapi","url":"https://www.gogroovy.ai/openapi.json","mediaType":"application/json"},{"id":"groovy_catalog","url":"https://www.gogroovy.ai/.well-known/groovy-agent-resources.json","mediaType":"application/json"}],"product_resource_reachability":"not_checked_by_home"},{"id":"intelligence","name":"Intelligence and recursive learning","summary":"Review project evidence, lead and source insights, knowledge and outcome-driven guidance.","documentation":"/docs/products/intelligence.md","human_entry_point":"/intelligence","related":["ads-attribution","crm","memory-guardrails","observability"],"limits":["Merged implementation does not prove a feature is deployed or enabled for this tenant","Learning and guidance must preserve source provenance and human review boundaries"],"api_specifications":["/openapi/intelligence.json"],"product_owned_resources":[],"product_resource_reachability":"not_checked_by_home"},{"id":"memory-guardrails","name":"Memory and guardrails","summary":"Configure reusable knowledge and policies for authorized product agents.","documentation":"/docs/products/memory-guardrails.md","human_entry_point":"/memory","related":["intelligence","voice-agents","inbox-followups"],"limits":["A saved draft is not an active runtime policy","Memory setup requires the corresponding product and project grants"],"api_specifications":["/openapi/memory.json"],"product_owned_resources":[],"product_resource_reachability":"not_checked_by_home"},{"id":"observability","name":"Tracing, observability and logs","summary":"Inspect activity, traces, usage and operational evidence where authorized.","documentation":"/docs/products/observability.md","human_entry_point":"/activity","related":["intelligence","groovy","voice-agents","inbox-followups"],"limits":["Public discovery never exposes tenant logs, transcripts, credentials or traces","Missing or partial cost and observation data must be labeled unknown, not zero"],"api_specifications":["/openapi/observability.json"],"product_owned_resources":[],"product_resource_reachability":"not_checked_by_home"}]}