{"service":"styrar-mcp","mcp":"http://mcp.styrar.com","tools":[{"name":"list_social_accounts","title":"List social accounts","description":"List connected Instagram, X (Twitter), TikTok, LinkedIn, YouTube, Threads, Facebook, and other social accounts. Optional companyId and brandId for company/brand scope. Set includePersonal to also list the user's personal accounts when the workspace allows posting to personal channels."},{"name":"create_link","title":"Create short link","description":"Create a shortened URL with optional title, shortCode, company scope, expiresAt, activeFrom, campaignIds, linkGroupId, tagIds, customDomainId, qrStyle, and custom OG fields (ogTitle, ogDescription, ogImageUrl, ogInterstitialEnabled)."},{"name":"list_links","title":"List short links","description":"List shortened URLs; filter by companyId, campaignId, linkGroupId, tagId, or unassigned (no campaign)."},{"name":"get_link_analytics","title":"Link analytics overview","description":"Aggregated click counts across all short links; optional companyId and date range (from, to)."},{"name":"get_link_analytics_by_id","title":"Link click analytics","description":"Click analytics for a single linkId; optional date range (from, to)."},{"name":"create_post","title":"Create post","description":"Create a DRAFT or SCHEDULED social post across Instagram, LinkedIn, X, TikTok, YouTube, and more. Use scheduledAt to schedule—no separate schedule_post tool. Call list_social_accounts first for socialAccountId in each target."},{"name":"list_posts","title":"List social posts","description":"List posts with optional filters—status (DRAFT, SCHEDULED, PUBLISHED, FAILED), companyId, date range (from, to), page, limit."},{"name":"list_bio_pages","title":"List bio pages","description":"List bio pages for personal or company scope; includes live version and custom domain metadata."},{"name":"get_bio_page","title":"Get bio page","description":"Fetch one bio page by id, including live blocks and custom domain details."},{"name":"create_bio_page","title":"Create bio page","description":"Create a new bio page with title and optional company scope."},{"name":"update_bio_page","title":"Update bio page","description":"Update bio page settings: title, custom tenantSlug, allowCustomSlug, trackingConfig (GA/GTM/pixels), and cookiePolicy banner when tracking is enabled."},{"name":"delete_bio_page","title":"Delete bio page","description":"Delete a bio page and linked sentinel click-tracking link."},{"name":"list_bio_versions","title":"List bio page versions","description":"List versions for a specific bio page id."},{"name":"publish_bio_version","title":"Publish bio page","description":"Publish a specific version id as the live bio page."},{"name":"get_bio_blocks","title":"List bio page blocks","description":"List blocks for a bio page version, optionally filtered by pagePath."},{"name":"replace_bio_blocks","title":"Update bio page blocks","description":"Replace chrome blocks for a bio version (hero, nav, footer). For section content use update_bio_version."},{"name":"get_bio_version","title":"Get bio page version","description":"Fetch a bio version with theme, pages, pageMeta sections, and chrome blocks. Omit versionId for the latest locale draft."},{"name":"update_bio_version","title":"Update bio page version","description":"Save a bio draft in place with theme, pages, pageMeta (sections), and chrome blocks. Use for layout and content edits."},{"name":"get_site_version","title":"Get site version","description":"Fetch a Sites version with theme, pages, pageMeta sections, and chrome blocks. Omit versionId for the latest matching locale draft."},{"name":"update_site_version","title":"Update site version","description":"Save a Sites draft in place with theme, pages, pageMeta (sections), and chrome blocks. Supports responsive, motion, effects, interactions, and canvas styles.frame place/resize."},{"name":"replace_site_blocks","title":"Update site chrome blocks","description":"Replace chrome blocks for a site version (hero, nav, footer). For section content use update_site_version."},{"name":"publish_site_version","title":"Publish site","description":"Publish a specific version id as the live site."},{"name":"list_sites","title":"List sites","description":"List Sites websites for the personal or company workspace (optional companyId)."},{"name":"get_site","title":"Get site","description":"Fetch a site by id including status, tenantSlug, publicUrl, liveVersion, and custom domain."},{"name":"create_site","title":"Create site","description":"Create a new Sites website with title, optional companyId, and optional templateId from list_site_templates."},{"name":"update_site","title":"Update site settings","description":"Update site title, tenantSlug, allowCustomSlug, trackingConfig, or cookiePolicy."},{"name":"delete_site","title":"Delete site","description":"Permanently delete a site and its versions."},{"name":"list_site_templates","title":"List site templates","description":"List starter templates available when creating a site."},{"name":"list_site_versions","title":"List site versions","description":"List draft and published versions for a site (includes blocks)."},{"name":"create_site_version","title":"Create site version","description":"Create a new site version with optional theme, pages, pageMeta, and blocks."},{"name":"delete_site_version","title":"Delete site version","description":"Delete a site version (cannot delete the last remaining version)."},{"name":"get_site_blocks","title":"Get site chrome blocks","description":"Return chrome blocks for a site version; optional pagePath filter. Prefer get_site_version for full layout."},{"name":"list_site_collections","title":"List site CMS collections","description":"List structured CMS collections (and fields) for a Site. Blog remains separate."},{"name":"create_site_collection","title":"Create site CMS collection","description":"Create a CMS collection with name, slug, listPath, and detailPath (must include [slug])."},{"name":"get_site_collection","title":"Get site CMS collection","description":"Fetch one collection with fields and item count."},{"name":"update_site_collection","title":"Update site CMS collection","description":"Update collection name, slug, listPath, or detailPath."},{"name":"delete_site_collection","title":"Delete site CMS collection","description":"Delete a collection and its items."},{"name":"create_site_collection_item","title":"Create site CMS item","description":"Create a draft or published collection item. Bind on templates with {{item.field}} or cmsBindings after adding list/detail paths to pages[]."},{"name":"list_site_collection_items","title":"List site CMS items","description":"List collection items; optional status filter DRAFT or PUBLISHED."},{"name":"get_site_collection_item","title":"Get site CMS item","description":"Fetch one collection item by id."},{"name":"update_site_collection_item","title":"Update site CMS item","description":"Update item slug, status, or data fields."},{"name":"delete_site_collection_item","title":"Delete site CMS item","description":"Delete a collection item."},{"name":"create_site_collection_field","title":"Create site CMS field","description":"Add a field to a collection (key, label, type, required)."},{"name":"update_site_collection_field","title":"Update site CMS field","description":"Update a collection field definition."},{"name":"delete_site_collection_field","title":"Delete site CMS field","description":"Remove a field from a collection."},{"name":"list_site_components","title":"List site components","description":"List reusable SiteComponent library entries for the workspace."},{"name":"get_site_component","title":"Get site component","description":"Fetch one SiteComponent with variants."},{"name":"create_site_component","title":"Create site component","description":"Create a component from section JSON or explicit variants."},{"name":"update_site_component","title":"Update site component","description":"Update component name or variants."},{"name":"delete_site_component","title":"Delete site component","description":"Delete a SiteComponent from the library."},{"name":"create_site_component_from_section","title":"Save section as component","description":"Snapshot a pageMeta section into a new reusable SiteComponent."},{"name":"insert_site_component","title":"Insert site component","description":"Copy-on-insert: returns section JSON for a variant. Merge into pageMeta.sections via update_site_version."},{"name":"list_site_blog_categories","title":"List site blog categories","description":"List blog categories for a site (optional locale)."},{"name":"create_site_blog_category","title":"Create site blog category","description":"Create a blog category on a site."},{"name":"update_site_blog_category","title":"Update site blog category","description":"Update a site blog category name or slug."},{"name":"delete_site_blog_category","title":"Delete site blog category","description":"Delete a site blog category."},{"name":"list_site_blog_posts","title":"List site blog posts","description":"List blog posts for a site; filter by locale, status, or categoryId."},{"name":"get_site_blog_post","title":"Get site blog post","description":"Fetch one site blog post."},{"name":"create_site_blog_post","title":"Create site blog post","description":"Create a site blog post (title, contentHtml, SEO fields, status)."},{"name":"update_site_blog_post","title":"Update site blog post","description":"Update a site blog post fields or publish status."},{"name":"delete_site_blog_post","title":"Delete site blog post","description":"Delete a site blog post."},{"name":"get_site_booking_settings","title":"Get site booking settings","description":"Fetch appointment booking settings for a site (timezone, deposits, calendar)."},{"name":"update_site_booking_settings","title":"Update site booking settings","description":"Update site booking timezone, notice windows, calendar sync, and deposit processor."},{"name":"list_site_booking_services","title":"List site booking services","description":"List bookable services for a site."},{"name":"get_site_booking_service","title":"Get site booking service","description":"Fetch one booking service."},{"name":"create_site_booking_service","title":"Create site booking service","description":"Create a bookable service with duration, capacity, and optional deposit."},{"name":"update_site_booking_service","title":"Update site booking service","description":"Update a booking service."},{"name":"delete_site_booking_service","title":"Delete site booking service","description":"Delete a booking service."},{"name":"list_site_booking_availability_rules","title":"List site booking availability","description":"List weekly and date-override availability rules for site booking."},{"name":"create_site_booking_availability_rule","title":"Create site booking availability","description":"Create a weekly or date_override availability (or blackout) rule."},{"name":"update_site_booking_availability_rule","title":"Update site booking availability","description":"Update an availability rule."},{"name":"delete_site_booking_availability_rule","title":"Delete site booking availability","description":"Delete an availability rule."},{"name":"list_site_booking_appointments","title":"List site booking appointments","description":"List upcoming or past appointments for a site."},{"name":"get_site_booking_appointment","title":"Get site booking appointment","description":"Fetch one appointment."},{"name":"update_site_booking_appointment","title":"Update site booking appointment","description":"Mark an appointment no_show."},{"name":"cancel_site_booking_appointment","title":"Cancel site booking appointment","description":"Cancel an appointment."},{"name":"list_site_form_submissions","title":"List site form submissions","description":"List contact form submissions for a site; optional blockId and export format."},{"name":"list_site_forms","title":"List site forms","description":"List first-class form definitions for a site (name + config). Use form id as translate resourceId when resource is form."},{"name":"get_site_form","title":"Get site form","description":"Fetch one site form by id."},{"name":"create_site_form","title":"Create site form","description":"Create a site form with optional name and contact-form config JSON."},{"name":"update_site_form","title":"Update site form","description":"Update a site form name and/or config."},{"name":"delete_site_form","title":"Delete site form","description":"Delete a site form definition."},{"name":"translate_site_content","title":"Translate site content","description":"AI-translate, copy, or manually save locale strings for a site resource (page_version, blog_post, blog_category, form, booking_service, commerce_product). AI mode uses Orbit AI credits. For pages, resourceId is the version id."},{"name":"get_site_translations","title":"Get site translations workspace","description":"Side-by-side translation workspace for a site: source vs target locale strings. Optional resource + resourceId to focus one entity."},{"name":"export_site_translations_csv","title":"Export site translations CSV","description":"Export site translation rows as CSV for one or more targetLocales."},{"name":"import_site_translations_csv","title":"Import site translations CSV","description":"Import translated CSV rows into a site (csvText body). Optional targetLocales filter."},{"name":"list_site_comments","title":"List site editor comments","description":"List collaboration comments on a site; optional pagePath and includeResolved."},{"name":"create_site_comment","title":"Create site editor comment","description":"Add a PAGE/SECTION/BLOCK comment or reply (parentId)."},{"name":"update_site_comment","title":"Update site editor comment","description":"Edit comment body or set resolved true/false."},{"name":"delete_site_comment","title":"Delete site editor comment","description":"Delete a collaboration comment."},{"name":"list_site_branches","title":"List site branches","description":"List preview branches for a site."},{"name":"get_site_branch","title":"Get site branch","description":"Fetch a branch and its tipVersionId."},{"name":"create_site_branch","title":"Create site branch","description":"Branch from live or sourceVersionId into an editable tip version."},{"name":"update_site_branch","title":"Update site branch","description":"Rename a branch or point tipVersionId at another version."},{"name":"delete_site_branch","title":"Delete site branch","description":"Delete a branch record."},{"name":"merge_site_branch","title":"Merge site branch","description":"Merge branch tip into a new draft version (does not publish live)."},{"name":"get_site_domain","title":"Get site custom domain","description":"Fetch custom domain status and DNS guidance (company workspaces only)."},{"name":"set_site_domain","title":"Set site custom domain","description":"Attach a custom domain to a company site."},{"name":"verify_site_domain","title":"Verify site custom domain","description":"Re-check Cloudflare SaaS hostname verification for the site domain."},{"name":"delete_site_domain","title":"Remove site custom domain","description":"Detach the custom domain from a site."},{"name":"get_site_seo_audit","title":"Site SEO audit","description":"Run SEO checklist on latest or specified version (titles, meta, redirects)."},{"name":"get_site_analytics","title":"Site analytics","description":"Per-site visits, pageviews, link clicks, and funnel (optional from/to)."},{"name":"get_workspace_site_analytics","title":"Workspace site analytics","description":"Roll up Sites analytics for personal or company scope (optional companyId, from/to)."},{"name":"upgrade_bio_to_site","title":"Upgrade bio to site","description":"Create a Site from a bio page snapshot; optional slimBio to LIB-only on the bio."},{"name":"list_site_theme_packages","title":"List site theme packages","description":"List first-party and workspace Sites theme packages (optional companyId, source)."},{"name":"upload_site_theme_package","title":"Upload site theme package","description":"Upload a workspace theme package via zipBase64 or JSON package body (links:write)."},{"name":"install_site_theme_package","title":"Install site theme package","description":"Copy-install a theme package into a site version (mode theme|full). Overwrites draft layout in full mode."},{"name":"export_site_theme_package","title":"Export site theme package","description":"Export a site version as a theme package zip (binary response)."},{"name":"get_site_theme_git","title":"Get site theme Git link","description":"Show GitHub theme source link and last sync status for a site."},{"name":"sync_site_theme_git","title":"Sync site theme from Git","description":"Pull the linked GitHub theme into the draft (optional publish)."},{"name":"get_bio_analytics","title":"Bio page analytics","description":"Fetch click analytics for a bio page id with optional from/to date range."},{"name":"list_bio_form_submissions","title":"List bio form submissions","description":"List leads captured by contact-form blocks on a bio page, with labeled field data, marketing/SMS consent flags, and form definitions. Optional blockId filter, limit, and cursor for pagination."},{"name":"translate_bio_content","title":"Translate bio content","description":"AI-translate, copy, or manually save locale strings for a bio resource (page_version or booking_service). AI mode uses Orbit AI credits. For pages, resourceId is the version id."},{"name":"get_bio_translations","title":"Get bio translations workspace","description":"Side-by-side translation workspace for a bio page: source vs target locale strings. Optional resource + resourceId."},{"name":"export_bio_translations_csv","title":"Export bio translations CSV","description":"Export bio translation rows as CSV for one or more targetLocales."},{"name":"import_bio_translations_csv","title":"Import bio translations CSV","description":"Import translated CSV rows into a bio page (csvText body). Optional targetLocales filter."},{"name":"generate_bio_legal_policies","title":"Generate bio legal policies","description":"Auto-generate privacy policy and cookie policy markdown for a bio page from its tracking/cookie config, with optional businessName and contactEmail."},{"name":"create_bio_version","title":"Create bio version","description":"Save a new bio page version draft with theme, pages, pageMeta, and chrome blocks. Set copyFromSource true to clone the latest locale version."},{"name":"delete_bio_version","title":"Delete bio version","description":"Delete a saved bio version. Cannot delete the only version on a page."},{"name":"get_bio_experiment","title":"Get bio A/B experiment","description":"Fetch the A/B experiment config for a bio page (variants, scope, status, click counts)."},{"name":"update_bio_experiment","title":"Update bio A/B experiment","description":"Create or replace a draft bio experiment with variants (bioPageVersionId + weight). Scope: page, section, or block."},{"name":"delete_bio_experiment","title":"Delete bio A/B experiment","description":"Remove the A/B experiment configuration from a bio page."},{"name":"control_bio_experiment","title":"Control bio A/B experiment","description":"Start, pause, or complete a bio A/B experiment. Pass winningVariantId when completing."},{"name":"list_bio_routing_rules","title":"List bio routing rules","description":"List geo/device routing rules that serve alternate bio versions to visitors."},{"name":"create_bio_routing_rule","title":"Create bio routing rule","description":"Add a geo or device routing rule mapping conditions to a bioPageVersionId."},{"name":"update_bio_routing_rule","title":"Update bio routing rule","description":"Update priority, conditions, target version, or active state on a bio routing rule."},{"name":"delete_bio_routing_rule","title":"Delete bio routing rule","description":"Remove a geo/device routing rule from a bio page."},{"name":"get_bio_domain","title":"Get bio custom domain","description":"Fetch the custom domain attached to a bio page (company workspaces only)."},{"name":"set_bio_domain","title":"Set bio custom domain","description":"Attach a custom hostname to a bio page. Returns DNS records to configure."},{"name":"verify_bio_domain","title":"Verify bio custom domain","description":"Re-check Cloudflare verification status for a bio page custom domain."},{"name":"delete_bio_domain","title":"Remove bio custom domain","description":"Detach and delete the custom domain from a bio page."},{"name":"get_bio_booking_settings","title":"Get bio booking settings","description":"Fetch appointment booking settings for a bio page: timezone, notice windows, deposit processor (Stripe or Shopify), calendar sync, and notification email."},{"name":"update_bio_booking_settings","title":"Update bio booking settings","description":"Configure bio booking: IANA timezone, notifyEmail, minNoticeMinutes, maxAdvanceDays, depositProcessor with stripeConnectAccountId or shopifyStoreId, and optional calendar sync fields."},{"name":"list_bio_booking_services","title":"List bio booking services","description":"List bookable services on a bio page with duration, buffer, capacity, custom fields, and optional deposit amounts."},{"name":"get_bio_booking_service","title":"Get bio booking service","description":"Fetch one bio booking service by bioPageId and serviceId."},{"name":"create_bio_booking_service","title":"Create bio booking service","description":"Add a bookable service with name, durationMinutes, optional description, buffer, capacity, custom intake fields, and optional depositAmountCents."},{"name":"update_bio_booking_service","title":"Update bio booking service","description":"Update service name, duration, deposits, custom fields, active state, or sort order."},{"name":"delete_bio_booking_service","title":"Delete bio booking service","description":"Remove a bookable service from a bio page."},{"name":"list_bio_booking_availability_rules","title":"List bio booking availability","description":"List weekly hours and date-override availability or blackout rules for bio booking."},{"name":"create_bio_booking_availability_rule","title":"Create bio booking availability rule","description":"Add weekly hours or a date_override rule. Use ruleType weekly with weekday 0-6, or date_override with YYYY-MM-DD (optional endDate for multi-day / week blackouts). Set isBlackout for blocked days."},{"name":"update_bio_booking_availability_rule","title":"Update bio booking availability rule","description":"Update startMinute/endMinute, blackout flag, or date on an availability rule."},{"name":"delete_bio_booking_availability_rule","title":"Delete bio booking availability rule","description":"Remove a weekly or date-override availability rule."},{"name":"list_bio_booking_appointments","title":"List bio booking appointments","description":"List upcoming or past appointments for a bio page with optional limit and cursor pagination."},{"name":"get_bio_booking_appointment","title":"Get bio booking appointment","description":"Fetch one appointment with service, slot times, guest details, and status."},{"name":"update_bio_booking_appointment","title":"Update bio booking appointment","description":"Mark a confirmed past appointment as no_show via action no_show."},{"name":"cancel_bio_booking_appointment","title":"Cancel bio booking appointment","description":"Cancel a confirmed appointment and notify the guest when configured."},{"name":"list_bio_theme_presets","title":"List bio theme presets","description":"List workspace-saved custom bio theme presets for personal or company scope."},{"name":"create_bio_theme_preset","title":"Create bio theme preset","description":"Save a reusable bio theme preset with label and theme JSON for the active workspace."},{"name":"delete_bio_theme_preset","title":"Delete bio theme preset","description":"Delete a saved custom bio theme preset by presetId."},{"name":"get_workspace_bio_analytics","title":"Workspace bio analytics","description":"Overview analytics across all bio pages in personal or company scope."},{"name":"list_campaigns","title":"List campaigns","description":"List campaigns for personal or company scope with optional brand and click totals filters."},{"name":"get_campaign","title":"Get campaign","description":"Fetch one campaign by id including counts and brand metadata."},{"name":"create_campaign","title":"Create campaign","description":"Create a campaign with name and optional company, brand, destination, UTM, and dynamic link settings."},{"name":"update_campaign","title":"Update campaign","description":"Update a campaign by campaignId. Editable fields: name, description, defaultDestinationUrl, dynamicSourceEnabled, dynamicLinkMode, utmDefaults, brandId."},{"name":"delete_campaign","title":"Delete campaign","description":"Permanently delete a campaign by campaignId."},{"name":"get_campaign_plan","title":"Get campaign plan","description":"Load the campaign plan hub payload: Sites/bio slots, short links, and posts with planRef badges (S/B/L/P), status, and schedule."},{"name":"seed_campaign_plan","title":"Seed campaign plan","description":"Create a full campaign pack in one call: optional Sites/bio web slots, short links (with destinationPlanRef), and draft/scheduled posts (linkPlanRefs). commitMode is drafts|schedule|publish. Prefer this over many create_post calls."},{"name":"web_search","title":"Search the web","description":"Search the live internet for campaign research (competitors, trends, news). Returns titles, URLs, and snippets. Requires BRAVE_SEARCH_API_KEY on the API."},{"name":"fetch_url","title":"Fetch URL text","description":"Fetch a public http(s) page and return extracted plain text for research. Blocks private/local hosts (SSRF-safe)."},{"name":"bulk_create_posts","title":"Bulk create posts","description":"Create many draft or scheduled posts in one request. Prefer seed_campaign_plan when building a full campaign funnel."},{"name":"get_content_planning_board","title":"Get content planning board","description":"Fetch the company content pipeline board and work items. Use view kanban for /content/plan column order, list for /content/list sorting, or timeline for /content/timeline due-date ranges. Requires company workspace and contentPlanning feature flag. Filters: campaignId, brandId, stage slug/id, tag, assigneeUserId, type (POST|LINK|BIO_UPDATE), q. Timeline view accepts optional from/to ISO dates (defaults to current month through two months ahead)."},{"name":"create_content_work_item","title":"Create content work item","description":"Add a card to the content planning pipeline (Kanban). Requires companyId. Optional stageId, type (POST|LINK|BIO_UPDATE), title, description, campaignId, brandId, assigneeUserId, startDate, endDate, dueDate, linked postId/linkId/bioPageId, and tags."},{"name":"update_content_work_item","title":"Update content work item","description":"Update a planning card by workItemId and companyId. Editable fields match create_content_work_item plus stageId and position."},{"name":"delete_content_work_item","title":"Delete content work item","description":"Permanently delete a planning card by workItemId and companyId."},{"name":"move_content_work_item","title":"Move content work item","description":"Move a planning card to another pipeline stage (Kanban column). Requires workItemId, companyId, stageId; optional position within the column."},{"name":"add_content_work_item_tag","title":"Add content work item tag","description":"Add a tag label to a planning card. Requires workItemId, companyId, and tag."},{"name":"remove_content_work_item_tag","title":"Remove content work item tag","description":"Remove a tag from a planning card. Requires workItemId, companyId, and tag."},{"name":"reorder_content_planning_stages","title":"Reorder content planning stages","description":"Reorder or rename Kanban pipeline stages. Requires content_planning:admin. Pass companyId, boardId, and stages array with id plus optional position and name."},{"name":"list_automations","title":"List automations","description":"List automation flows for personal or company scope."},{"name":"get_automation","title":"Get automation","description":"Fetch one automation by id including recent runs and nodes."},{"name":"create_automation","title":"Create automation","description":"Create an automation with name and optional description or company scope."},{"name":"update_automation","title":"Update automation","description":"Update automation fields such as name, description, status, or viewport coordinates."},{"name":"list_automation_runs","title":"List automation runs","description":"List run history for a specific automation id."},{"name":"run_automation","title":"Run automation","description":"Trigger a manual run for an automation with optional input payload."},{"name":"create_automation_node","title":"Add automation step","description":"Add a step to an automation (kind, label, x, y required) with optional visual and config fields."},{"name":"create_automation_edge","title":"Connect automation steps","description":"Connect two automation steps with a link between them."},{"name":"list_approval_flows","title":"List approval flows","description":"List approval flows for a company (companyId required)."},{"name":"get_approval_flow","title":"Get approval flow","description":"Fetch one approval flow by id including nodes and edges."},{"name":"create_approval_flow","title":"Create approval flow","description":"Create a company approval flow with name, optional description, and optional default flag."},{"name":"update_approval_flow","title":"Update approval flow","description":"Update approval flow fields such as name, description, status, and default flag."},{"name":"delete_approval_flow","title":"Delete approval flow","description":"Delete an approval flow by id."},{"name":"test_approval_flow","title":"Test approval flow","description":"Simulate a flow test run with optional dummy post fields and get step and notification results."},{"name":"post_approval_action","title":"Approve or reject post","description":"Perform post approval actions (approve, reject, request_changes, reassign, override) on post tasks."},{"name":"list_pending_approval_tasks","title":"List pending approvals","description":"List every PENDING approval task across a company's posts (one row per task, with post title/content/platforms and the assigned role or user). Requires companyId. Renders as an interactive approval queue card with Approve / Reject / Request changes buttons wired to post_approval_action."},{"name":"list_skill_documents","title":"List skill documents","description":"List Markdown skill documents for the current user or a specific brand (provide both companyId and brandId for brand scope). Returns id, slug, title, sortOrder."},{"name":"get_skill_document","title":"Get skill document","description":"Fetch a single skill document by id, including the full Markdown body. Optionally scope to a brand with companyId + brandId."},{"name":"create_skill_document","title":"Create skill document","description":"Create a new Markdown skill document for the user or a brand (provide both companyId and brandId for brand scope). Use list_skill_templates to get ready-made starting content."},{"name":"update_skill_document","title":"Update skill document","description":"Update an existing skill document's title, Markdown body, slug, or sortOrder by id."},{"name":"delete_skill_document","title":"Delete skill document","description":"Delete a skill document by id. Optionally scope to a brand with companyId + brandId."},{"name":"list_skill_templates","title":"Skill document templates","description":"List ready-made Markdown templates — brand voice, Instagram strategy, LinkedIn strategy, content calendar, campaign planner, and hashtag strategy. Copy a template body into create_skill_document to add it to a workspace."},{"name":"upload_media","title":"Upload image","description":"Store an image in the media library by passing its content as a base64-encoded string (fileData). Requires fileName and mimeType (must be image/*). The file is stored securely in S3 and automatically processed. Returns the stored file id and a signed view URL. Use when the user sends an image directly in the conversation."},{"name":"upload_media_from_url","title":"Upload image from URL","description":"Fetch a public image URL and store it in the media library. Requires url (must resolve to an image). Optional fileName and companyId. Returns the stored file id and a signed view URL."},{"name":"generate_image","title":"Generate image","description":"Generate a new image from a text prompt and save it to the media library. Requires prompt. Optional fileName, companyId, provider (openai or gemini), and size (1024x1024, 1536x1024, or 1024x1536). Returns the stored file id and signed viewUrl."},{"name":"list_media","title":"Browse media library","description":"Returns the 25 most recent images and videos from the media library as an interactive picker with inline previews. Images are shown directly; videos are shown with their thumbnail frame. Each item includes fileName, id, mimeType, sizeBytes, and duration (for videos). Call this whenever the user needs to choose a media file. Optional filters: companyId, q (filename search), tag, page."},{"name":"get_media","title":"Get media file","description":"Fetch a single library file by id, including a signed view URL, processing status, and cached aiAnalysis when present."},{"name":"analyze_media","title":"Analyze media with AI","description":"Run or fetch AI analysis for a library image, video, or audio file (vision summary, OCR, transcript, optional suggestedCaption). Cache-first unless force=true. Costs AI credits. Call before drafting captions from a file."},{"name":"delete_media","title":"Delete media file","description":"Permanently delete a library file by id. The file is removed from S3 and the account."},{"name":"list_companies","title":"List companies","description":"List all companies the authenticated user belongs to, with role and member counts. Call this first to discover available companyId values."},{"name":"get_company","title":"Get company","description":"Fetch a single company by id including brand count, member count, and subscription plan."},{"name":"create_company","title":"Create company","description":"Create a new company workspace with a name and unique slug. The authenticated user becomes the owner."},{"name":"update_company","title":"Update company","description":"Update a company's name or other profile fields by companyId."},{"name":"list_brands","title":"List brands","description":"List all brands for a company by companyId. Returns id, name, slug, isArchived, and logo. Call before scoping posts, campaigns, or skill documents to a brand."},{"name":"get_brand","title":"Get brand","description":"Fetch a single brand by companyId and brandId including guidelines and logo."},{"name":"create_brand","title":"Create brand","description":"Create a new brand inside a company by companyId. Requires a name; slug is auto-derived."},{"name":"update_brand","title":"Update brand","description":"Update a brand's name, guidelines, or archive status by companyId and brandId."},{"name":"list_company_members","title":"List company members","description":"List members of a company by companyId. Returns user name, email, role, and brand access. Useful for approval flow setup."},{"name":"get_link","title":"Get short link","description":"Fetch a single short link by linkId including click count and campaign metadata."},{"name":"update_link","title":"Update short link","description":"Update a short link: originalUrl, title, isActive, activeFrom, expiresAt, campaignId/campaignIds, linkGroupId, tagIds, qrStyle, and custom OG fields."},{"name":"delete_link","title":"Delete short link","description":"Permanently delete a short link by linkId."},{"name":"list_link_groups","title":"List link folders","description":"List link groups (folders) for personal or company scope."},{"name":"create_link_group","title":"Create link folder","description":"Create a link group/folder with title and optional companyId or campaignId."},{"name":"update_link_group","title":"Update link folder","description":"Rename a link group by groupId."},{"name":"delete_link_group","title":"Delete link folder","description":"Delete a link group; links in the folder become unassigned."},{"name":"list_link_tags","title":"List link tags","description":"List tags used to label short links in personal or company scope."},{"name":"create_link_tag","title":"Create link tag","description":"Create a link tag by name in personal or company scope."},{"name":"update_link_tag","title":"Update link tag","description":"Rename a link tag by tagId."},{"name":"delete_link_tag","title":"Delete link tag","description":"Delete a link tag and remove it from assigned links."},{"name":"list_link_routing_rules","title":"List link routing rules","description":"List geo/device routing rules that redirect visitors to alternate destination URLs."},{"name":"create_link_routing_rule","title":"Create link routing rule","description":"Add a geo or device rule mapping conditions to an HTTPS destinationUrl."},{"name":"update_link_routing_rule","title":"Update link routing rule","description":"Update priority, conditions, destination URL, or active state on a link routing rule."},{"name":"delete_link_routing_rule","title":"Delete link routing rule","description":"Remove a geo/device routing rule from a short link."},{"name":"get_link_experiment","title":"Get link A/B experiment","description":"Fetch the A/B experiment on a short link (variants, weights, status, click counts)."},{"name":"update_link_experiment","title":"Update link A/B experiment","description":"Create or replace a draft link experiment with HTTPS destinationUrl variants and weights."},{"name":"delete_link_experiment","title":"Delete link A/B experiment","description":"Remove the A/B experiment configuration from a short link."},{"name":"control_link_experiment","title":"Control link A/B experiment","description":"Start, pause, or complete a link A/B experiment. Pass winningVariantId when completing."},{"name":"bulk_create_links","title":"Bulk create links","description":"Create up to 100 links from a links array or CSV string. Set upsert true for idempotent shortCode imports."},{"name":"bulk_update_links","title":"Bulk update links","description":"Update up to 100 links in one request via an updates array (each entry needs id)."},{"name":"bulk_delete_links","title":"Bulk delete links","description":"Delete multiple short links by linkIds in personal or company scope."},{"name":"import_link_og","title":"Import link OG tags","description":"Scrape og:title, og:description, and og:image from the link destination URL into custom OG fields."},{"name":"get_link_qr","title":"Get link QR info","description":"Return short link QR metadata (shortCode, qrStyle). Binary PNG/SVG download uses the dashboard or GET /v1/links/:id/qr."},{"name":"get_post","title":"Get post","description":"Fetch a single post by postId including platform targets, approval status, media files, and analytics."},{"name":"update_post","title":"Update post","description":"Update a DRAFT or SCHEDULED post by postId. Editable fields: content, title, scheduledAt, status, campaignId, brandId, tags, mediaFileIds."},{"name":"delete_post","title":"Delete post","description":"Permanently delete a post by postId (must be DRAFT, SCHEDULED, or FAILED)."},{"name":"list_notes","title":"List workspace notes","description":"List workspace notes for personal or company scope. Optional companyId to filter to a company workspace."},{"name":"get_note","title":"Get workspace note","description":"Fetch a single workspace note by noteId including full body text."},{"name":"create_note","title":"Create workspace note","description":"Create a markdown workspace note with title and body. Optional companyId and visibility (PRIVATE or COMPANY)."},{"name":"update_note","title":"Update workspace note","description":"Update a workspace note's title, body, or visibility by noteId."},{"name":"delete_note","title":"Delete workspace note","description":"Permanently delete a workspace note by noteId."},{"name":"list_saved_mentions","title":"List saved mentions","description":"List workspace saved @mentions with per-platform handles for compose and publish substitution."},{"name":"create_saved_mention","title":"Create saved mention","description":"Create or upsert a saved @mention with optional per-platform handles (X, LinkedIn, etc.)."},{"name":"update_saved_mention","title":"Update saved mention","description":"Update a saved mention name or platformHandles by mentionId."},{"name":"delete_saved_mention","title":"Delete saved mention","description":"Delete a workspace saved mention by mentionId."},{"name":"list_people","title":"List people","description":"List People CRM contacts; filter by companyId, brandId, q, status, tag, limit, cursor."},{"name":"get_person","title":"Get person","description":"Fetch a person with identities, tags, and interaction counts."},{"name":"create_person","title":"Create person","description":"Create a People CRM contact with optional name, email, phone, status, and brand."},{"name":"update_person","title":"Update person","description":"Update person fields (name, email, phone, status, brand)."},{"name":"delete_person","title":"Delete person","description":"Delete a person from the workspace CRM."},{"name":"get_person_timeline","title":"Get person timeline","description":"Recent forms, bookings, and social activity linked to a person."},{"name":"search_people_by_handle","title":"Search people by handle","description":"Find a person by social platform + username."},{"name":"list_workspace_person_tags","title":"List workspace person tags","description":"All person tag names in the workspace for autocomplete."},{"name":"list_person_notes","title":"List person notes","description":"List internal notes on a person."},{"name":"create_person_note","title":"Create person note","description":"Add an internal note to a person."},{"name":"add_person_tag","title":"Add person tag","description":"Attach a tag by name to a person (find-or-create)."},{"name":"remove_person_tag","title":"Remove person tag","description":"Remove a tag assignment from a person by tagId."},{"name":"list_community_comments","title":"List community comments","description":"Mixed community inbox comments across platforms. Returns postId, targetId, and platformCommentId needed for replies. Filter by company, brand, platform, status, read state, dates."},{"name":"mark_community_comment_read","title":"Mark community comment read","description":"Set isRead true/false on a synced platform comment."},{"name":"set_community_comment_status","title":"Set community comment status","description":"Set comment triage status: OPEN, IN_PROGRESS, RESOLVED, or ARCHIVED."},{"name":"reply_to_community_comment","title":"Reply to community comment","description":"Post a platform reply. Requires postId, targetId, platformCommentId (from list_community_comments), and text."},{"name":"sync_community","title":"Sync community inbox","description":"On-demand soft sync for community comments and X DM backfill. Optional force."},{"name":"list_instagram_dms","title":"List Instagram DMs","description":"List Instagram DM threads for the workspace."},{"name":"get_instagram_dm","title":"Get Instagram DM thread","description":"Fetch one Instagram DM thread and messages."},{"name":"reply_instagram_dm","title":"Reply to Instagram DM","description":"Send a text reply on an Instagram DM thread."},{"name":"list_x_dms","title":"List X DMs","description":"List X (Twitter) DM threads when DM inbox is enabled on the account."},{"name":"get_x_dm","title":"Get X DM thread","description":"Fetch one X DM thread and messages."},{"name":"reply_x_dm","title":"Reply to X DM","description":"Send a text reply on an X DM thread."},{"name":"get_social_analytics_overview","title":"Social analytics overview","description":"Workspace social KPI overview (engagement, byPlatform, audience). Optional companyId, brandId, from/to or days."},{"name":"search","title":"Search workspace","description":"Global search across posts, comments, campaigns, notes, community comments, short links, bio pages, sites, people, media library files, and automations. Optional type filter: posts | comments | campaigns | notes | community | links | bio | sites | people | media | automations. Use for broad 'find me something' queries."}],"oauth":{"protected_resource_metadata":"http://mcp.styrar.com/.well-known/oauth-protected-resource","authorization_server_metadata":"http://mcp.styrar.com/.well-known/oauth-authorization-server","hint":"Remote MCP clients should complete OAuth (RFC 9728 / CIMD or DCR) then send Authorization: Bearer <access_token>. API keys (sty_live_…) are still supported."}}