{"schemaVersion":"yueling-agent-standard/1.0","siteName":"悦增长","purpose":"Tell external Agents how to connect to a YueLing WordPress site and operate inside YueLing safety rules.","entrypoints":{"discovery":"https://www.yuezengzhang.com/yueling-agent.json","restDiscovery":"https://www.yuezengzhang.com/wp-json/yueling-agent/v1/discovery","standard":"https://www.yuezengzhang.com/yueling-agent/standard.json","protectedResource":"https://www.yuezengzhang.com/yueling-agent/oauth-protected-resource","tokenEndpoint":"https://www.yuezengzhang.com/wp-json/yueling-agent/v1/token","mcpEndpoint":"https://www.yuezengzhang.com/wp-json/yueling-agent/v1/mcp"},"agentOnboarding":{"normalUserInstruction":"Ask the user for their YueLing WordPress site URL. Read discovery and this standard. Then ask the user to create a WordPress Application Password for this external Agent and store it only in the platform secret store.","generationModel":{"siteAiProviderRequired":false,"externalAgentSuppliesGeneratedContent":true,"explanation":"The external Agent uses its own model and reasoning to generate article content, SEO candidates, and YueLing module documents. The YueLing site validates, scopes, stores drafts/candidates, and creates confirmation tasks; it does not require the site owner to configure a YueGrowth AI Provider for these external Agent tools."},"credentialRequest":{"primaryCredential":"wordpress_application_password","askUserFor":["wordpress_username","wordpress_application_password"],"neverAskFor":["wordpress_login_password","cookie","nonce","hosting_root_password","database_password"],"exchange":"POST tokenEndpoint with HTTPS Basic Auth using wordpress_username and wordpress_application_password. Store returned bearer token securely. Use bearer token for subsequent site-side WP MCP calls."},"afterAuth":{"call":"tools/list","confirm":"Only use tools exposed by the site-side WP MCP Gateway and the scopes granted by the token.","fallback":"If token exchange fails, explain that the Application Password may be wrong, revoked, or blocked by HTTPS / WordPress policy. Do not ask for the WordPress login password."}},"operatingRules":{"publishModel":"draft_then_human_confirmation","contentModel":"YueLing module protocol and YueGrowth SEO candidate fields are authoritative. Do not write arbitrary full-page HTML as the canonical page structure.","generationBoundary":"External Agents must supply generated article content, SEO candidates, and page module documents as tool input. YueLing will not call the site AI Provider from the site-side WP MCP Gateway to generate missing content.","finalPublish":"The WordPress administrator must manually review and save / publish in WordPress.","forbiddenActions":["direct_publish","delete_content","edit_product_price_or_stock","write_raw_post_meta","read_raw_yueling_meta","expose_application_password_or_bearer_token","bypass_yueling_module_protocol"],"secretHandling":"Never echo Application Password, bearer token, cookies, nonces, API keys, database credentials, or hosting credentials in chat, logs, screenshots, generated files, or tool outputs.","componentCatalog":"yueling.list_theme_modules returns the complete contract-backed YueLing component catalog, including groups, interaction modes, supported page/product contexts, and dependency availability. Always read it at runtime instead of assuming a fixed four-component list.","leadFormSafety":"Lead forms are non-public configuration entities. External Agents may create or update public field definitions and explicitly activate a form, but must never read entries or configure admin email, webhook, redirect, agent summary, nonce, IP, user-agent, or raw metadata. Attaching a form writes only the visual page draft."},"workflows":{"articleDraft":{"goal":"Create or improve article drafts without publishing.","tools":["yueling.get_site_profile","yueling.get_operation_context","yueling.create_article_draft","yueling.update_article_draft","yueling.create_publish_confirmation_task"],"result":"A WordPress draft and optional pending confirmation task."},"seoCandidate":{"goal":"Plan and deploy draft SEO with YueGrowth rules, BM25F recommendations, media attributes, and page-level robots controls.","tools":["yueling.inspect_current_seo_surface","yueling.get_seo_deployment_context","yueling.prepare_seo_deployment_candidate","yueling.apply_seo_deployment_to_draft","yueling.update_article_draft","yueling.create_publish_confirmation_task"],"result":"YueGrowth TDK, same-domain canonical, page-level robots, selected existing tags, and owned image Alt/Title are applied only to a WordPress draft. BM25F internal links remain explicit suggestions until the Agent updates the draft body. Published content and global robots.txt remain unchanged.","sequence":["Read the SEO deployment context for the target draft. Use its BM25F-ranked related pages, existing tag candidates, image list, and YueGrowth limits.","Generate TDK and technical SEO values that match visible draft content. Use existing tags only and natural same-site links only.","Prepare a deployment candidate. Review validation output and keep its candidate hash.","Apply the matching candidate to the draft. YueLing refuses published targets and stale hashes.","When internal links are useful, update the article draft body with yueling.update_article_draft using only returned URLs and descriptive anchors.","Create a publish confirmation task; the WordPress administrator reviews frontend head, content, images, and indexability before publishing."],"robotsBoundary":"Page-level index/noindex and follow/nofollow may be configured on drafts. Global robots.txt changes require WordPress administrator confirmation and are not exposed as an external write tool.","whenToUse":["Before publishing a new article, page, visual page, or product draft.","When the user asks for SEO/TDK, internal links, tags, image Alt/Title, canonical, robots, indexability, or publish readiness.","When a draft lacks relevant internal links or has weak taxonomy and the Agent needs YueLing evidence instead of inventing URLs or tags."]},"visualPageDraft":{"goal":"Create or update visual editor page drafts using YueLing module protocol.","tools":["yueling.list_theme_modules","yueling.get_module_schema","yueling.create_visual_page_draft","yueling.upload_visual_page_asset","yueling.validate_page_modules_document","yueling.prepare_visual_page_draft","yueling.compose_visual_page_draft","yueling.create_publish_confirmation_task"],"result":"A WordPress page draft with YueLing visual editor enabled and a _yg_page_modules_draft module document, not a published page.","sequence":["Read the complete module catalog and filter by page or product context. Do not assume only Hero, Features, FAQ, and CTA exist.","Create a visual page draft when the user needs a new page.","Choose a varied component sequence based on the page goal and interaction needs. Prefer appropriate components such as tabs, comparison, service cards, pricing, article lists, cases, contact information, and forms instead of repeating one section type.","Inspect each selected component schema for fields, limits, SEO guidance, dependencies, and imageSlots.","Only when a selected component slot needs an image, generate that component image with the external Agent using the slot size and usage hint.","Upload generated component images as visual page assets.","Compose the complete modules document and bind attachment payloads into the exact image slot paths.","Create a publish confirmation task; the WordPress administrator reviews and publishes manually."]},"leadForm":{"goal":"Create and explicitly activate a safe YueLing lead form, then attach it to a visual page draft.","tools":["yueling.get_lead_form_schema","yueling.list_lead_forms","yueling.create_lead_form","yueling.update_lead_form","yueling.attach_lead_form_to_visual_draft","yueling.validate_page_modules_document"],"result":"A draft or explicitly activated non-public form configuration and a validated lead_form component saved only to _yg_page_modules_draft. Page publication remains manual.","privacy":"Never request or return lead entries, submission values, IP addresses, user agents, nonces, email recipients, webhook URLs/secrets, redirects, or raw metadata."},"productVisualDraft":{"goal":"Create WooCommerce product drafts and prepare YueLing product visual editor module drafts.","tools":["yueling.create_product_draft","yueling.get_module_schema","yueling.upload_visual_page_asset","yueling.compose_product_visual_draft","yueling.create_publish_confirmation_task"],"result":"A WooCommerce product draft with advanced detail layout enabled and a _yg_product_modules_draft module document, not a published product.","priceModes":{"fixed":"Create a draft product with a regular price.","sale":"Create a draft product with regular and sale price.","quote":"Create a submit-requirement / inquiry product without public price."},"sequence":["Create the WooCommerce product draft with user-provided or Agent-generated initial fields: SKU, description, parameters, downloadable/virtual flags, and price mode.","Read selected product component schemas such as yg_product_gallery, yg_product_summary, yg_product_specs, and yg_product_description.","Generate/upload images only for component imageSlots actually used by the product visual design.","Compose the product modules document and bind attachment ids into product component paths such as featured_image_id or gallery_image_ids.","Create a publish confirmation task; the WordPress administrator reviews and publishes manually."]},"operationalReview":{"goal":"Read safe site context, harness status, and operating context before suggesting work.","tools":["yueling.get_site_profile","yueling.get_operation_context","yueling.inspect_harness_status"],"result":"A safe summary for planning. No raw metadata or secrets."}},"localSkillPack":{"available":true,"format":"agent_instruction_markdown","usage":"An external Agent may turn this standard into a local Skill that teaches the Agent how to connect to YueLing sites, request Application Password credentials, call YueLing tools, and keep draft-first boundaries.","templateName":"YueLing Site Operator","corePrompt":"When the user asks to operate a YueLing site, read /yueling-agent.json and /yueling-agent/standard.json first. Ask for WordPress Application Password credentials only through secure secret storage. Exchange for a bearer token through the site token endpoint. Use YueLing tools only. Prepare drafts, SEO candidates, page module drafts, and confirmation tasks. Never publish directly."},"toolReference":{"listToolsMethod":"tools/list","callToolMethod":"tools/call","toolContracts":["yueling.get_site_profile","yueling.get_operation_context","yueling.list_theme_modules","yueling.get_module_schema","yueling.get_lead_form_schema","yueling.list_lead_forms","yueling.create_lead_form","yueling.update_lead_form","yueling.attach_lead_form_to_visual_draft","yueling.get_page_modules","yueling.inspect_current_seo_surface","yueling.inspect_harness_status","yueling.create_article_draft","yueling.update_article_draft","yueling.prepare_seo_candidate","yueling.get_seo_deployment_context","yueling.prepare_seo_deployment_candidate","yueling.apply_seo_deployment_to_draft","yueling.create_visual_page_draft","yueling.upload_visual_page_asset","yueling.prepare_visual_page_draft","yueling.compose_visual_page_draft","yueling.create_product_draft","yueling.compose_product_visual_draft","yueling.validate_page_modules_document","yueling.create_publish_confirmation_task","yueling.get_confirmation_task_status","yueling.cancel_confirmation_task"]}}