{"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 for company scope."},{"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_bio_analytics","title":"Bio page analytics","description":"Fetch click analytics for a bio page id with optional from/to date range."},{"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":"list_bio_blog_categories","title":"List bio blog categories","description":"List blog categories for a bio page, optionally filtered by locale."},{"name":"create_bio_blog_category","title":"Create bio blog category","description":"Create a blog category on a bio page with name, locale, and optional slug."},{"name":"update_bio_blog_category","title":"Update bio blog category","description":"Update a bio blog category name or slug."},{"name":"delete_bio_blog_category","title":"Delete bio blog category","description":"Delete a bio blog category."},{"name":"list_bio_blog_posts","title":"List bio blog posts","description":"List blog posts on a bio page; filter by locale, status, or categoryId."},{"name":"get_bio_blog_post","title":"Get bio blog post","description":"Fetch one bio blog post by id."},{"name":"create_bio_blog_post","title":"Create bio blog post","description":"Create a bio blog post with title, HTML content, excerpt, cover image, SEO fields, and DRAFT or PUBLISHED status."},{"name":"update_bio_blog_post","title":"Update bio blog post","description":"Update bio blog post content, metadata, category, slug, or publish status."},{"name":"delete_bio_blog_post","title":"Delete bio blog post","description":"Delete a bio blog post."},{"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. 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_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_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 and processing status."},{"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":"search","title":"Search workspace","description":"Global search across posts, links, campaigns, bio pages, and notes. Returns matched items with type labels. Use for broad 'find me something' queries."}],"oauth":{"protected_resource_metadata":"http://mcp.styrar.com/.well-known/oauth-protected-resource","hint":"Remote MCP clients should complete OAuth (RFC 9728) then send Authorization: Bearer <access_token>. API keys (sty_live_…) are still supported."}}