add_contact
ChatGPTAdd a single contact to a client's CRM. Useful for quickly adding prospects found via Apollo or referral without going through the sheet/Notion sync.
add_contact
ChatGPTAdd a single contact to a client's CRM. Useful for quickly adding prospects found via Apollo or referral without going through the sheet/Notion sync.
add_contact
ChatGPTAdd a single contact to a client's CRM. Useful for quickly adding prospects found via Apollo or referral without going through the sheet/Notion sync.
add_page_module
ChatGPTInsert a new module (section) into a page. Module must be a complete object with _type and _key per SanityPress schema. Check the module catalog for the correct shape.
add_page_module
ChatGPTInsert a new module (section) into a page. Module must be a complete object with _type and _key per SanityPress schema. Check the module catalog for the correct shape.
add_page_module
ChatGPTInsert a new module (section) into a page. Module must be a complete object with _type and _key per SanityPress schema. Check the module catalog for the correct shape.
append_to_array
ChatGPTAppend items to an array field on a Sanity document. Without insertAfter, items are appended at the end (and the array is created via setIfMissing if missing — single transaction). With insertAfter, items are inserted directly after the matching _key. Each item should include its own _key if Sanity's schema expects one; patch_document auto-generates _keys for items missing them. Common uses: adding a CTA to a hero, a stat to a stat-list, or a module to a page.
append_to_array
ChatGPTAppend items to an array field on a Sanity document. Without insertAfter, items are appended at the end (and the array is created via setIfMissing if missing — single transaction). With insertAfter, items are inserted directly after the matching _key. Each item should include its own _key if Sanity's schema expects one; patch_document auto-generates _keys for items missing them. Common uses: adding a CTA to a hero, a stat to a stat-list, or a module to a page.
append_to_array
ChatGPTAppend items to an array field on a Sanity document. Without insertAfter, items are appended at the end (and the array is created via setIfMissing if missing — single transaction). With insertAfter, items are inserted directly after the matching _key. Each item should include its own _key if Sanity's schema expects one; patch_document auto-generates _keys for items missing them. Common uses: adding a CTA to a hero, a stat to a stat-list, or a module to a page.
create_document
ChatGPTCREATE a new Sanity document. Fails with a clear error if the _id already exists (unlike upsert_document which replaces). Use this when you want create-or-fail semantics — adding a new portfolio entry, testimonial, blog post, etc. without risk of overwriting.
create_document
ChatGPTCREATE a new Sanity document. Fails with a clear error if the _id already exists (unlike upsert_document which replaces). Use this when you want create-or-fail semantics — adding a new portfolio entry, testimonial, blog post, etc. without risk of overwriting.
create_document
ChatGPTCREATE a new Sanity document. Fails with a clear error if the _id already exists (unlike upsert_document which replaces). Use this when you want create-or-fail semantics — adding a new portfolio entry, testimonial, blog post, etc. without risk of overwriting.
delete_document
ChatGPTDELETE a Sanity document by _id. Destructive — only restorable via Sanity's revision history within the retention window. Requires confirmDelete: true.
delete_document
ChatGPTDELETE a Sanity document by _id. Destructive — only restorable via Sanity's revision history within the retention window. Requires confirmDelete: true.
delete_document
ChatGPTDELETE a Sanity document by _id. Destructive — only restorable via Sanity's revision history within the retention window. Requires confirmDelete: true.
generate_asset
ChatGPTGenerate an image, logo, icon, or illustration for a client via Creative Studio. Optionally uploads to Sanity. Best for: hero images, service cards, blog covers, favicons, social post imagery.
generate_asset
ChatGPTGenerate an image, logo, icon, or illustration for a client via Creative Studio. Optionally uploads to Sanity. Best for: hero images, service cards, blog covers, favicons, social post imagery.
generate_asset
ChatGPTGenerate an image, logo, icon, or illustration for a client via Creative Studio. Optionally uploads to Sanity. Best for: hero images, service cards, blog covers, favicons, social post imagery.
get_agent_stats
ChatGPTReturn contact count, pending drafts, recent runs, and AI config for a client's agent.
get_agent_stats
ChatGPTReturn contact count, pending drafts, recent runs, and AI config for a client's agent.
get_agent_stats
ChatGPTReturn contact count, pending drafts, recent runs, and AI config for a client's agent.
get_analytics_site
ChatGPTReturn one Insights site's metadata, last 30 days of daily rollups, and last 100 raw events for debug.
get_analytics_site
ChatGPTReturn one Insights site's metadata, last 30 days of daily rollups, and last 100 raw events for debug.
get_analytics_site
ChatGPTReturn one Insights site's metadata, last 30 days of daily rollups, and last 100 raw events for debug.
get_client_details
ChatGPTGet detailed information for a single client including config, contact count, and recent agent runs.
get_client_details
ChatGPTGet detailed information for a single client including config, contact count, and recent agent runs.
get_client_details
ChatGPTGet detailed information for a single client including config, contact count, and recent agent runs.
get_deployment_health
ChatGPTFleet-level health summary across all client deployments. Each entry separates LIVENESS from HEALTH: reachable is the endpoint ping; agentHealthy is derived from the agent's runs (NOT the ping) — a deployment whose syncs complete is healthy even if unreachable. online is a back-compat alias of reachable. Counts (contacts, lastRunAt) come from the same source as get_agent_stats. CRITICAL for unattended use: read statsSource before trusting counts — 'live' = fresh, 'cache' = last-known (also stale:true), 'unavailable' = unknown (contacts is null, NEVER 0 — do not treat as zero). summary buckets: healthy (reachable + agentHealthy), unreachable (syncing but ping failed), failing (agentHealthy=false ONLY), unknown (stats unresolved), siteOnly. Each entry has kind: 'full' | 'site-only'; site-only deployments (no Convex agent) are pinged via their site URL and counted in summary.siteOnly, never failing.
get_deployment_health
ChatGPTFleet-level health summary across all client deployments. Each entry separates LIVENESS from HEALTH: reachable is the endpoint ping; agentHealthy is derived from the agent's runs (NOT the ping) — a deployment whose syncs complete is healthy even if unreachable. online is a back-compat alias of reachable. Counts (contacts, lastRunAt) come from the same source as get_agent_stats. CRITICAL for unattended use: read statsSource before trusting counts — 'live' = fresh, 'cache' = last-known (also stale:true), 'unavailable' = unknown (contacts is null, NEVER 0 — do not treat as zero). summary buckets: healthy (reachable + agentHealthy), unreachable (syncing but ping failed), failing (agentHealthy=false ONLY), unknown (stats unresolved), siteOnly. Each entry has kind: 'full' | 'site-only'; site-only deployments (no Convex agent) are pinged via their site URL and counted in summary.siteOnly, never failing.
get_deployment_health
ChatGPTFleet-level health summary across all client deployments. Each entry separates LIVENESS from HEALTH: reachable is the endpoint ping; agentHealthy is derived from the agent's runs (NOT the ping) — a deployment whose syncs complete is healthy even if unreachable. online is a back-compat alias of reachable. Counts (contacts, lastRunAt) come from the same source as get_agent_stats. CRITICAL for unattended use: read statsSource before trusting counts — 'live' = fresh, 'cache' = last-known (also stale:true), 'unavailable' = unknown (contacts is null, NEVER 0 — do not treat as zero). summary buckets: healthy (reachable + agentHealthy), unreachable (syncing but ping failed), failing (agentHealthy=false ONLY), unknown (stats unresolved), siteOnly. Each entry has kind: 'full' | 'site-only'; site-only deployments (no Convex agent) are pinged via their site URL and counted in summary.siteOnly, never failing.
get_document
ChatGPTFetch a single Sanity document by _id, regardless of type. Returns the full document JSON with image references preserved as _ref strings (not dereferenced URLs) so they can be reused in patch_document.
get_document
ChatGPTFetch a single Sanity document by _id, regardless of type. Returns the full document JSON with image references preserved as _ref strings (not dereferenced URLs) so they can be reused in patch_document.
get_document
ChatGPTFetch a single Sanity document by _id, regardless of type. Returns the full document JSON with image references preserved as _ref strings (not dereferenced URLs) so they can be reused in patch_document.
get_document_at_revision
ChatGPTFetch a point-in-time SNAPSHOT of a Sanity document at a given revision (from list_document_history) or ISO time. Returns the document as it existed then. Returns 'no_history_in_range' when outside the retention window. Read-only — does not modify anything.
get_document_at_revision
ChatGPTFetch a point-in-time SNAPSHOT of a Sanity document at a given revision (from list_document_history) or ISO time. Returns the document as it existed then. Returns 'no_history_in_range' when outside the retention window. Read-only — does not modify anything.
get_document_at_revision
ChatGPTFetch a point-in-time SNAPSHOT of a Sanity document at a given revision (from list_document_history) or ISO time. Returns the document as it existed then. Returns 'no_history_in_range' when outside the retention window. Read-only — does not modify anything.
get_navigation
ChatGPTFetch header, footer, and social navigation for a client via site singleton references. Read-only.
get_navigation
ChatGPTFetch header, footer, and social navigation for a client via site singleton references. Read-only.
get_navigation
ChatGPTFetch header, footer, and social navigation for a client via site singleton references. Read-only.
get_page
ChatGPTFetch a single page's full module content by slug or id. Read-only.
get_page
ChatGPTFetch a single page's full module content by slug or id. Read-only.
get_page
ChatGPTFetch a single page's full module content by slug or id. Read-only.
get_schema
ChatGPTInspect a site's content schema BEFORE writing. With { client }, returns that client's actually-DEPLOYED Sanity schema (source: 'server') or the bundled template (source: 'template-fallback') if none is deployed — field support differs from site to site (e.g. some sites have i18n fields, different module sets). With { client, type }, returns that type's allowed fields and which are multilingual (i18nFields). Without { client }, returns the generic template baseline (advisory only). Use this to learn valid fields before create_document / patch_document so writes aren't rejected by the schema gate.
get_schema
ChatGPTInspect a site's content schema BEFORE writing. With { client }, returns that client's actually-DEPLOYED Sanity schema (source: 'server') or the bundled template (source: 'template-fallback') if none is deployed — field support differs from site to site (e.g. some sites have i18n fields, different module sets). With { client, type }, returns that type's allowed fields and which are multilingual (i18nFields). Without { client }, returns the generic template baseline (advisory only). Use this to learn valid fields before create_document / patch_document so writes aren't rejected by the schema gate.
get_schema
ChatGPTInspect a site's content schema BEFORE writing. With { client }, returns that client's actually-DEPLOYED Sanity schema (source: 'server') or the bundled template (source: 'template-fallback') if none is deployed — field support differs from site to site (e.g. some sites have i18n fields, different module sets). With { client, type }, returns that type's allowed fields and which are multilingual (i18nFields). Without { client }, returns the generic template baseline (advisory only). Use this to learn valid fields before create_document / patch_document so writes aren't rejected by the schema gate.
get_singleton
ChatGPTGeneric singleton fetcher for whitelisted document IDs (site, pricing, shop-settings, etc.). Read-only.
get_singleton
ChatGPTGeneric singleton fetcher for whitelisted document IDs (site, pricing, shop-settings, etc.). Read-only.
get_singleton
ChatGPTGeneric singleton fetcher for whitelisted document IDs (site, pricing, shop-settings, etc.). Read-only.
get_site_settings
ChatGPTFetch the site singleton (title, blurb, logo, announcements, CTAs, copyright) for a client. Read-only.
get_site_settings
ChatGPTFetch the site singleton (title, blurb, logo, announcements, CTAs, copyright) for a client. Read-only.
get_site_settings
ChatGPTFetch the site singleton (title, blurb, logo, announcements, CTAs, copyright) for a client. Read-only.
list_analytics_events
ChatGPTPaginated raw event log for one site (debug / verification). Pass dayBucket (UTC ISO date) to scope.
list_analytics_events
ChatGPTPaginated raw event log for one site (debug / verification). Pass dayBucket (UTC ISO date) to scope.
list_analytics_events
ChatGPTPaginated raw event log for one site (debug / verification). Pass dayBucket (UTC ISO date) to scope.
list_analytics_sites
ChatGPTList every site registered in the webfaCeMEdia Insights Convex deployment, with last-7-day pageview/visitor counts and archive status.
list_analytics_sites
ChatGPTList every site registered in the webfaCeMEdia Insights Convex deployment, with last-7-day pageview/visitor counts and archive status.
list_analytics_sites
ChatGPTList every site registered in the webfaCeMEdia Insights Convex deployment, with last-7-day pageview/visitor counts and archive status.
list_campaigns
ChatGPTList Brevo email campaigns for a client, optionally filtered by status.
list_campaigns
ChatGPTList Brevo email campaigns for a client, optionally filtered by status.
list_campaigns
ChatGPTList Brevo email campaigns for a client, optionally filtered by status.
list_clients
ChatGPTList all managed client deployments with online status, Convex URL, agent domain, and timezone.
list_clients
ChatGPTList all managed client deployments with online status, Convex URL, agent domain, and timezone.
list_clients
ChatGPTList all managed client deployments with online status, Convex URL, agent domain, and timezone.
list_contacts
ChatGPTList contacts for a client, optionally filtered by score bucket or free-text search.
list_contacts
ChatGPTList contacts for a client, optionally filtered by score bucket or free-text search.
list_contacts
ChatGPTList contacts for a client, optionally filtered by score bucket or free-text search.
list_document_history
ChatGPTList the revision history of a Sanity document, NEWEST-FIRST: [{ rev, timestamp, author }]. Use to find a revision to inspect or roll back to. Returns status 'no_history_in_range' (not an error) when the document is older than the plan's history retention window. Read-only.
list_document_history
ChatGPTList the revision history of a Sanity document, NEWEST-FIRST: [{ rev, timestamp, author }]. Use to find a revision to inspect or roll back to. Returns status 'no_history_in_range' (not an error) when the document is older than the plan's history retention window. Read-only.
list_document_history
ChatGPTList the revision history of a Sanity document, NEWEST-FIRST: [{ rev, timestamp, author }]. Use to find a revision to inspect or roll back to. Returns status 'no_history_in_range' (not an error) when the document is older than the plan's history retention window. Read-only.
list_document_types
ChatGPTDiscover which Sanity document types exist in a client's dataset. Returns each _type with a count. Use this first to find non-page types (portfolio, testimonial, blog.post, etc.) before listing or fetching documents.
list_document_types
ChatGPTDiscover which Sanity document types exist in a client's dataset. Returns each _type with a count. Use this first to find non-page types (portfolio, testimonial, blog.post, etc.) before listing or fetching documents.
list_document_types
ChatGPTDiscover which Sanity document types exist in a client's dataset. Returns each _type with a count. Use this first to find non-page types (portfolio, testimonial, blog.post, etc.) before listing or fetching documents.
list_documents_by_type
ChatGPTList documents of a specific Sanity _type with pagination. Returns _id, _type, _updatedAt, title, slug by default (override with fields). Use list_document_types first to discover what types exist.
list_documents_by_type
ChatGPTList documents of a specific Sanity _type with pagination. Returns _id, _type, _updatedAt, title, slug by default (override with fields). Use list_document_types first to discover what types exist.
list_documents_by_type
ChatGPTList documents of a specific Sanity _type with pagination. Returns _id, _type, _updatedAt, title, slug by default (override with fields). Use list_document_types first to discover what types exist.
list_drafts
ChatGPTList outreach drafts for a client, optionally filtered by status.
list_drafts
ChatGPTList outreach drafts for a client, optionally filtered by status.
list_drafts
ChatGPTList outreach drafts for a client, optionally filtered by status.
list_pages
ChatGPTList all pages in a client's SanityPress CMS with module metadata and counts. Read-only.
list_pages
ChatGPTList all pages in a client's SanityPress CMS with module metadata and counts. Read-only.
list_pages
ChatGPTList all pages in a client's SanityPress CMS with module metadata and counts. Read-only.
list_sequences
ChatGPTList Brevo email sequences (automations) for a client with step count and active contact count.
list_sequences
ChatGPTList Brevo email sequences (automations) for a client with step count and active contact count.
list_sequences
ChatGPTList Brevo email sequences (automations) for a client with step count and active contact count.
patch_card_image
ChatGPTSet the image field on a specific card within a card-list module on a page. Convenience over patch_document — handles the image object construction (asset reference + alt). Pass the page _id, the card-list module _key, the card _key, the asset _id (e.g. 'image-abc123-1600x1000-webp'), and the alt text. Atomic single-card update; for batch card image updates use patch_document with multiple set patches.
patch_card_image
ChatGPTSet the image field on a specific card within a card-list module on a page. Convenience over patch_document — handles the image object construction (asset reference + alt). Pass the page _id, the card-list module _key, the card _key, the asset _id (e.g. 'image-abc123-1600x1000-webp'), and the alt text. Atomic single-card update; for batch card image updates use patch_document with multiple set patches.
patch_card_image
ChatGPTSet the image field on a specific card within a card-list module on a page. Convenience over patch_document — handles the image object construction (asset reference + alt). Pass the page _id, the card-list module _key, the card _key, the asset _id (e.g. 'image-abc123-1600x1000-webp'), and the alt text. Atomic single-card update; for batch card image updates use patch_document with multiple set patches.
patch_document
ChatGPTApply surgical patches to any Sanity document. Operations: set, unset, setIfMissing, insert (with numeric index or GROQ selector), splice (numeric-index array insert, recommended for stability). Always validates positional indices against current array length; uses ifRevisionID for optimistic concurrency. Returns 409-style error if the document was modified between fetch and write.
patch_document
ChatGPTApply surgical patches to any Sanity document. Operations: set, unset, setIfMissing, insert (with numeric index or GROQ selector), splice (numeric-index array insert, recommended for stability). Always validates positional indices against current array length; uses ifRevisionID for optimistic concurrency. Returns 409-style error if the document was modified between fetch and write.
patch_document
ChatGPTApply surgical patches to any Sanity document. Operations: set, unset, setIfMissing, insert (with numeric index or GROQ selector), splice (numeric-index array insert, recommended for stability). Always validates positional indices against current array length; uses ifRevisionID for optimistic concurrency. Returns 409-style error if the document was modified between fetch and write.
patch_page_metadata
ChatGPTUpdate a page's SEO metadata — OG image, title, description, noIndex. Use after generate_asset to apply an OG image to a page.
patch_page_metadata
ChatGPTUpdate a page's SEO metadata — OG image, title, description, noIndex. Use after generate_asset to apply an OG image to a page.
patch_page_metadata
ChatGPTUpdate a page's SEO metadata — OG image, title, description, noIndex. Use after generate_asset to apply an OG image to a page.
patch_page_module
ChatGPTPatch one or more fields on a specific module within a page's modules[] array, identified by module _key. Pass the page _id, the module _key, and a flat object of fields to set on that module — the tool builds the GROQ paths internally. Use this instead of patch_document when you only need to update a single module: clearer intent, less syntax noise. Atomic single transaction. Inherits ifRevisionID concurrency handling and 409 conflict surfacing from patch_document.
patch_page_module
ChatGPTPatch one or more fields on a specific module within a page's modules[] array, identified by module _key. Pass the page _id, the module _key, and a flat object of fields to set on that module — the tool builds the GROQ paths internally. Use this instead of patch_document when you only need to update a single module: clearer intent, less syntax noise. Atomic single transaction. Inherits ifRevisionID concurrency handling and 409 conflict surfacing from patch_document.
patch_page_module
ChatGPTPatch one or more fields on a specific module within a page's modules[] array, identified by module _key. Pass the page _id, the module _key, and a flat object of fields to set on that module — the tool builds the GROQ paths internally. Use this instead of patch_document when you only need to update a single module: clearer intent, less syntax noise. Atomic single transaction. Inherits ifRevisionID concurrency handling and 409 conflict surfacing from patch_document.
patch_site_settings
ChatGPTUpdate the site singleton — title, blurb, copyright text. Plain text is automatically converted to Portable Text format.
patch_site_settings
ChatGPTUpdate the site singleton — title, blurb, copyright text. Plain text is automatically converted to Portable Text format.
patch_site_settings
ChatGPTUpdate the site singleton — title, blurb, copyright text. Plain text is automatically converted to Portable Text format.
remove_from_array
ChatGPTRemove items from an array field by their _keys. Common uses: deleting stale modules from a page, removing outdated stats, dropping unused CTAs. Atomic — all removals commit in a single transaction.
remove_from_array
ChatGPTRemove items from an array field by their _keys. Common uses: deleting stale modules from a page, removing outdated stats, dropping unused CTAs. Atomic — all removals commit in a single transaction.
remove_from_array
ChatGPTRemove items from an array field by their _keys. Common uses: deleting stale modules from a page, removing outdated stats, dropping unused CTAs. Atomic — all removals commit in a single transaction.
reorder_page_modules
ChatGPTChange the order of modules on a page. Pass the complete list of _keys in the desired order. Must include every module currently on the page.
reorder_page_modules
ChatGPTChange the order of modules on a page. Pass the complete list of _keys in the desired order. Must include every module currently on the page.
reorder_page_modules
ChatGPTChange the order of modules on a page. Pass the complete list of _keys in the desired order. Must include every module currently on the page.
search_content
ChatGPTFull-text search across all page content for a client. Read-only.
search_content
ChatGPTFull-text search across all page content for a client. Read-only.
search_content
ChatGPTFull-text search across all page content for a client. Read-only.
update_contact
ChatGPTUpdate status, notes, starred flag, or signal fields on an existing contact. Omitted fields are left unchanged.
update_contact
ChatGPTUpdate status, notes, starred flag, or signal fields on an existing contact. Omitted fields are left unchanged.
update_contact
ChatGPTUpdate status, notes, starred flag, or signal fields on an existing contact. Omitted fields are left unchanged.
upsert_document
ChatGPTCREATE or fully REPLACE a Sanity document. REPLACE is destructive: any field on the stored document that is absent from your payload is permanently deleted. For editing specific fields on an existing document, DO NOT use this — use patch_document (or the purpose-built patch_page_module / append_to_array / remove_from_array), which change only the fields you name and cannot drop anything else. Use upsert_document only to create a brand-new document or to deliberately overwrite an entire document. Always fetch the complete current document with get_document first if replacing. Requires confirmDestructive: true. If the payload would drop existing fields, the call is refused unless confirmReplace: true is also set.
upsert_document
ChatGPTCREATE or fully REPLACE a Sanity document. REPLACE is destructive: any field on the stored document that is absent from your payload is permanently deleted. For editing specific fields on an existing document, DO NOT use this — use patch_document (or the purpose-built patch_page_module / append_to_array / remove_from_array), which change only the fields you name and cannot drop anything else. Use upsert_document only to create a brand-new document or to deliberately overwrite an entire document. Always fetch the complete current document with get_document first if replacing. Requires confirmDestructive: true. If the payload would drop existing fields, the call is refused unless confirmReplace: true is also set.
upsert_document
ChatGPTCREATE or fully REPLACE a Sanity document. REPLACE is destructive: any field on the stored document that is absent from your payload is permanently deleted. For editing specific fields on an existing document, DO NOT use this — use patch_document (or the purpose-built patch_page_module / append_to_array / remove_from_array), which change only the fields you name and cannot drop anything else. Use upsert_document only to create a brand-new document or to deliberately overwrite an entire document. Always fetch the complete current document with get_document first if replacing. Requires confirmDestructive: true. If the payload would drop existing fields, the call is refused unless confirmReplace: true is also set.