{"id":355126,"date":"2026-08-19T23:00:48","date_gmt":"2026-08-19T23:00:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/silvaitamar-webmcp-form-annotator\/"},"modified":"2026-08-22T07:28:31","modified_gmt":"2026-08-22T07:28:31","slug":"silvaitamar-form-annotator-for-webmcp","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/silvaitamar-form-annotator-for-webmcp\/","author":13947743,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.1","requires":"6.4","requires_php":"8.0","requires_plugins":null,"header_name":"Form Annotator for WebMCP","header_author":"Itamar Silva","header_description":"Annotate WordPress forms with declarative WebMCP attributes so browser AI agents can fill lead and support forms reliably.","assets_banners_color":"0e4553","last_updated":"2026-08-22 07:28:31","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/silvaitamar\/wp-form-annotator-for-webmcp","header_author_uri":"https:\/\/github.com\/silvaitamar","rating":0,"author_block_rating":0,"active_installs":0,"downloads":93,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"itamarsilvacc","date":"2026-08-19 23:00:24"},"1.0.1":{"tag":"1.0.1","author":"itamarsilvacc","date":"2026-08-22 07:28:31"}},"upgrade_notice":{"1.0.1":"<p>Display name update only. No settings or database changes.<\/p>","1.0.0":"<p>First public release. Annotate existing form-plugin markup with declarative WebMCP attributes.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3655456,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3655456,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3655456,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3655456,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3660143,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"meta\":{\"title\":\"Form Annotator for WebMCP\",\"description\":\"Logged-in admin, Fluent Forms contact page already annotated with WebMCP. Open Settings \\u2192 Form Annotator to edit.\",\"author\":\"silvaitamar\",\"categories\":[\"webmcp\",\"forms\",\"ai\"]},\"landingPage\":\"\\\/\",\"preferredVersions\":{\"php\":\"8.2\",\"wp\":\"latest\"},\"phpExtensionBundles\":[\"kitchen-sink\"],\"features\":{\"networking\":true},\"steps\":[{\"step\":\"login\",\"username\":\"admin\",\"password\":\"password\"},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"fluentform\"},\"options\":{\"activate\":true},\"progress\":{\"caption\":\"Installing Fluent Forms\"}},{\"step\":\"runPHP\",\"code\":\"<?php\\n$siwmfa_playground = true;\\nif ( ! defined( 'ABSPATH' ) ) {\\n\\trequire_once 'wordpress\\\/wp-load.php';\\n}\\n\\\/**\\n * Playground \\\/ preview seed: one Fluent Forms contact form, already annotated.\\n *\\n * Dual-use: Playground runPHP (loads wp-load) and WP-CLI eval-file (ABSPATH set).\\n *\\n * @package Siwmfa\\n *\\\/\\n\\nif ( ! isset( $siwmfa_playground ) ) {\\n\\t$siwmfa_playground = false;\\n}\\nif ( ! defined( 'ABSPATH' ) ) {\\n\\t$siwmfa_playground = true;\\n\\trequire_once 'wordpress\\\/wp-load.php';\\n}\\n\\nif ( ! class_exists( '\\\\FluentForm\\\\App\\\\Services\\\\Form\\\\FormService' ) ) {\\n\\treturn;\\n}\\n\\nwp_set_current_user( 1 );\\n\\n$required = array(\\n\\t'required' => array(\\n\\t\\t'value'          => true,\\n\\t\\t'message'        => 'This field is required',\\n\\t\\t'global_message' => 'This field is required',\\n\\t\\t'global'         => true,\\n\\t),\\n);\\n\\n$fields = array(\\n\\tarray(\\n\\t\\t'index'          => 0,\\n\\t\\t'element'        => 'input_text',\\n\\t\\t'attributes'     => array(\\n\\t\\t\\t'type'        => 'text',\\n\\t\\t\\t'name'        => 'names',\\n\\t\\t\\t'value'       => '',\\n\\t\\t\\t'class'       => '',\\n\\t\\t\\t'placeholder' => '',\\n\\t\\t),\\n\\t\\t'settings'       => array(\\n\\t\\t\\t'container_class'    => '',\\n\\t\\t\\t'label'              => 'Name',\\n\\t\\t\\t'admin_field_label'  => 'Name',\\n\\t\\t\\t'label_placement'    => '',\\n\\t\\t\\t'help_message'       => '',\\n\\t\\t\\t'validation_rules'   => $required,\\n\\t\\t\\t'conditional_logics' => array(),\\n\\t\\t),\\n\\t\\t'editor_options' => array(\\n\\t\\t\\t'title'      => 'Simple Text',\\n\\t\\t\\t'icon_class' => 'ff-edit-text',\\n\\t\\t\\t'template'   => 'inputText',\\n\\t\\t),\\n\\t\\t'uniqElKey'      => 'el_siwmfa_name',\\n\\t),\\n\\tarray(\\n\\t\\t'index'          => 1,\\n\\t\\t'element'        => 'input_email',\\n\\t\\t'attributes'     => array(\\n\\t\\t\\t'type'        => 'email',\\n\\t\\t\\t'name'        => 'email',\\n\\t\\t\\t'value'       => '',\\n\\t\\t\\t'class'       => '',\\n\\t\\t\\t'placeholder' => '',\\n\\t\\t),\\n\\t\\t'settings'       => array(\\n\\t\\t\\t'container_class'    => '',\\n\\t\\t\\t'label'              => 'Email',\\n\\t\\t\\t'admin_field_label'  => 'Email',\\n\\t\\t\\t'label_placement'    => '',\\n\\t\\t\\t'help_message'       => '',\\n\\t\\t\\t'validation_rules'   => array_merge(\\n\\t\\t\\t\\t$required,\\n\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t'email' => array(\\n\\t\\t\\t\\t\\t\\t'value'          => true,\\n\\t\\t\\t\\t\\t\\t'message'        => 'This field must contain a valid email',\\n\\t\\t\\t\\t\\t\\t'global_message' => 'This field must contain a valid email',\\n\\t\\t\\t\\t\\t\\t'global'         => true,\\n\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t)\\n\\t\\t\\t),\\n\\t\\t\\t'conditional_logics' => array(),\\n\\t\\t),\\n\\t\\t'editor_options' => array(\\n\\t\\t\\t'title'      => 'Email Address',\\n\\t\\t\\t'icon_class' => 'ff-edit-email',\\n\\t\\t\\t'template'   => 'inputText',\\n\\t\\t),\\n\\t\\t'uniqElKey'      => 'el_siwmfa_email',\\n\\t),\\n\\tarray(\\n\\t\\t'index'          => 2,\\n\\t\\t'element'        => 'textarea',\\n\\t\\t'attributes'     => array(\\n\\t\\t\\t'name'  => 'message',\\n\\t\\t\\t'value' => '',\\n\\t\\t\\t'class' => '',\\n\\t\\t\\t'rows'  => 5,\\n\\t\\t\\t'cols'  => 2,\\n\\t\\t),\\n\\t\\t'settings'       => array(\\n\\t\\t\\t'container_class'    => '',\\n\\t\\t\\t'label'              => 'Message',\\n\\t\\t\\t'admin_field_label'  => 'Message',\\n\\t\\t\\t'label_placement'    => '',\\n\\t\\t\\t'help_message'       => '',\\n\\t\\t\\t'validation_rules'   => $required,\\n\\t\\t\\t'conditional_logics' => array(),\\n\\t\\t),\\n\\t\\t'editor_options' => array(\\n\\t\\t\\t'title'      => 'Text Area',\\n\\t\\t\\t'icon_class' => 'ff-edit-textarea',\\n\\t\\t\\t'template'   => 'inputTextarea',\\n\\t\\t),\\n\\t\\t'uniqElKey'      => 'el_siwmfa_message',\\n\\t),\\n);\\n\\n$form_fields = wp_json_encode(\\n\\tarray(\\n\\t\\t'fields'       => $fields,\\n\\t\\t'submitButton' => array(\\n\\t\\t\\t'uniqElKey'      => 'el_siwmfa_submit',\\n\\t\\t\\t'element'        => 'button',\\n\\t\\t\\t'attributes'     => array(\\n\\t\\t\\t\\t'type'  => 'submit',\\n\\t\\t\\t\\t'class' => '',\\n\\t\\t\\t),\\n\\t\\t\\t'settings'       => array(\\n\\t\\t\\t\\t'align'            => 'left',\\n\\t\\t\\t\\t'button_style'     => 'default',\\n\\t\\t\\t\\t'container_class'  => '',\\n\\t\\t\\t\\t'help_message'     => '',\\n\\t\\t\\t\\t'background_color' => '#0b3d4a',\\n\\t\\t\\t\\t'button_size'      => 'md',\\n\\t\\t\\t\\t'color'            => '#ffffff',\\n\\t\\t\\t\\t'button_ui'        => array(\\n\\t\\t\\t\\t\\t'type'    => 'default',\\n\\t\\t\\t\\t\\t'text'    => 'Send message',\\n\\t\\t\\t\\t\\t'img_url' => '',\\n\\t\\t\\t\\t),\\n\\t\\t\\t),\\n\\t\\t\\t'editor_options' => array(\\n\\t\\t\\t\\t'title' => 'Submit Button',\\n\\t\\t\\t),\\n\\t\\t),\\n\\t)\\n);\\n\\n$existing = (int) get_option( 'siwmfa_preview_fluent_form_id', 0 );\\n$form_id  = 0;\\n\\nif ( $existing > 0 && class_exists( '\\\\FluentForm\\\\App\\\\Models\\\\Form' ) ) {\\n\\t$found = \\\\FluentForm\\\\App\\\\Models\\\\Form::find( $existing );\\n\\tif ( $found ) {\\n\\t\\t$form_id = $existing;\\n\\t\\t\\\\FluentForm\\\\App\\\\Models\\\\Form::where( 'id', $form_id )->update(\\n\\t\\t\\tarray(\\n\\t\\t\\t\\t'title'       => 'Contact',\\n\\t\\t\\t\\t'form_fields' => $form_fields,\\n\\t\\t\\t\\t'status'      => 'published',\\n\\t\\t\\t\\t'updated_at'  => current_time( 'mysql' ),\\n\\t\\t\\t)\\n\\t\\t);\\n\\t}\\n}\\n\\nif ( $form_id <= 0 ) {\\n\\t$service = new \\\\FluentForm\\\\App\\\\Services\\\\Form\\\\FormService();\\n\\t$form    = $service->store(\\n\\t\\tarray(\\n\\t\\t\\t'predefined' => 'blank_form',\\n\\t\\t\\t'title'      => 'Contact',\\n\\t\\t)\\n\\t);\\n\\t$form_id = (int) $form->id;\\n\\t\\\\FluentForm\\\\App\\\\Models\\\\Form::where( 'id', $form_id )->update(\\n\\t\\tarray(\\n\\t\\t\\t'title'       => 'Contact',\\n\\t\\t\\t'form_fields' => $form_fields,\\n\\t\\t\\t'status'      => 'published',\\n\\t\\t\\t'updated_at'  => current_time( 'mysql' ),\\n\\t\\t)\\n\\t);\\n\\tupdate_option( 'siwmfa_preview_fluent_form_id', $form_id, false );\\n}\\n\\n$saved = get_option( 'siwmfa_forms', array() );\\nif ( ! is_array( $saved ) ) {\\n\\t$saved = array();\\n}\\n\\n$saved[ 'fluent:' . $form_id ] = array(\\n\\t'enabled'         => true,\\n\\t'toolname'        => 'submit_contact',\\n\\t'tooldescription' => 'Fills the contact form on this page. Use for a lead or support request. Do not submit the form \\u2014 only fill the fields.',\\n\\t'params'          => array(\\n\\t\\t'names'   => 'Full name of the visitor.',\\n\\t\\t'email'   => 'Email address for a reply.',\\n\\t\\t'message' => 'Message describing the request.',\\n\\t),\\n);\\n\\nupdate_option( 'siwmfa_forms', $saved, false );\\n\\n$notice  = '<!-- wp:group {\\\"style\\\":{\\\"spacing\\\":{\\\"padding\\\":{\\\"top\\\":\\\"var:preset|spacing|30\\\",\\\"bottom\\\":\\\"var:preset|spacing|30\\\",\\\"left\\\":\\\"var:preset|spacing|40\\\",\\\"right\\\":\\\"var:preset|spacing|40\\\"}},\\\"border\\\":{\\\"radius\\\":\\\"4px\\\"}},\\\"backgroundColor\\\":\\\"accent-5\\\",\\\"layout\\\":{\\\"type\\\":\\\"constrained\\\"}} -->';\\n$notice .= '<div class=\\\"wp-block-group has-accent-5-background-color has-background\\\" style=\\\"border-radius:4px;padding-top:var(--wp--preset--spacing--30);padding-right:var(--wp--preset--spacing--40);padding-bottom:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--40)\\\">';\\n$notice .= '<!-- wp:paragraph --><p><strong>Demo:<\\\/strong> this Fluent Forms contact form is already annotated with WebMCP (<code>toolname<\\\/code>, <code>tooldescription<\\\/code>, <code>toolparamdescription<\\\/code>). It never auto-submits. You are logged in \\u2014 open <strong>Settings \\u2192 Form Annotator<\\\/strong> to edit the annotation, then return here to view the markup.<\\\/p><!-- \\\/wp:paragraph -->';\\n$notice .= '<\\\/div><!-- \\\/wp:group -->';\\n\\n$content  = $notice;\\n$content .= '<!-- wp:heading --><h2 class=\\\"wp-block-heading\\\">Contact<\\\/h2><!-- \\\/wp:heading -->';\\n$content .= '<!-- wp:shortcode -->[fluentform id=\\\"' . $form_id . '\\\"]<!-- \\\/wp:shortcode -->';\\n\\n$page = get_page_by_path( 'contact' );\\nif ( $page instanceof WP_Post ) {\\n\\t$page_id = (int) $page->ID;\\n\\twp_update_post(\\n\\t\\tarray(\\n\\t\\t\\t'ID'           => $page_id,\\n\\t\\t\\t'post_title'   => 'Contact',\\n\\t\\t\\t'post_content' => $content,\\n\\t\\t\\t'post_status'  => 'publish',\\n\\t\\t)\\n\\t);\\n} else {\\n\\t$page_id = (int) wp_insert_post(\\n\\t\\tarray(\\n\\t\\t\\t'post_type'    => 'page',\\n\\t\\t\\t'post_title'   => 'Contact',\\n\\t\\t\\t'post_name'    => 'contact',\\n\\t\\t\\t'post_status'  => 'publish',\\n\\t\\t\\t'post_content' => $content,\\n\\t\\t\\t'post_author'  => 1,\\n\\t\\t)\\n\\t);\\n}\\n\\nif ( $siwmfa_playground ) {\\n\\tupdate_option( 'blogname', 'Form Annotator for WebMCP (demo)', false );\\n\\tupdate_option( 'blogdescription', 'Fluent Forms contact form with declarative WebMCP attributes \\u2014 fictional demo', false );\\n\\tupdate_option( 'show_on_front', 'page', false );\\n\\tupdate_option( 'page_on_front', $page_id, false );\\n\\tupdate_option( 'permalink_structure', '\\\/%postname%\\\/', false );\\n\\tflush_rewrite_rules( false );\\n}\\n\",\"progress\":{\"caption\":\"Creating the annotated contact form\"}},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"silvaitamar-form-annotator-for-webmcp\"},\"options\":{\"activate\":true}}]}"}},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[2353,3508,358,601,258453],"plugin_category":[42],"plugin_contributors":[269658],"plugin_business_model":[],"class_list":["post-355126","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-chrome","plugin_tags-contact-form","plugin_tags-forms","plugin_tags-webmcp","plugin_category-contact-forms","plugin_contributors-itamarsilvacc","plugin_committers-itamarsilvacc"],"banners":{"banner":"https:\/\/ps.w.org\/silvaitamar-form-annotator-for-webmcp\/assets\/banner-772x250.png?rev=3655456","banner_2x":"https:\/\/ps.w.org\/silvaitamar-form-annotator-for-webmcp\/assets\/banner-1544x500.png?rev=3655456","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/silvaitamar-form-annotator-for-webmcp\/assets\/icon-128x128.png?rev=3655456","icon_2x":"https:\/\/ps.w.org\/silvaitamar-form-annotator-for-webmcp\/assets\/icon-256x256.png?rev=3655456","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Form Annotator for WebMCP<\/strong> is a WordPress plugin that adds <a href=\"https:\/\/developer.chrome.com\/docs\/ai\/webmcp\">declarative WebMCP<\/a> attributes (<code>toolname<\/code>, <code>tooldescription<\/code>, <code>toolparamdescription<\/code>) to existing contact and lead forms. In-browser AI agents (Chrome with WebMCP) can then discover those forms on the page and fill them without guessing the DOM.<\/p>\n\n<p>It is for site owners who already use a form plugin and want agents to fill lead, contact, or support requests. It does not replace your form plugin, and it does not submit the form for the visitor.<\/p>\n\n<h4>How it works<\/h4>\n\n<ol>\n<li>Create a form in a supported builder (Contact Form 7, Fluent Forms, WPForms, Forminator, Ninja Forms, or SureForms).<\/li>\n<li>Open <strong>Settings \u2192 Form Annotator<\/strong>, enable the form (one by one or in bulk), then <strong>Annotate<\/strong> to set the tool name, description, and field text.<\/li>\n<li>On the front end the plugin injects WebMCP attributes into the real <code>&lt;form&gt;<\/code> markup. Lead and support forms never use <code>toolautosubmit<\/code> \u2014 a human confirms send.<\/li>\n<\/ol>\n\n<h4>What this plugin does<\/h4>\n\n<ul>\n<li>Opt-in annotation per form (nothing is annotated until you enable it).<\/li>\n<li>A settings list with search, builder\/status filters, pagination, and bulk enable\/disable.<\/li>\n<li>A single-form editor for tool name, tool description, and per-field <code>toolparamdescription<\/code>.<\/li>\n<li>Optional Chrome Origin Trial token (printed in <code>wp_head<\/code> when set).<\/li>\n<li>Soft dependencies: each adapter loads only when that form plugin is active.<\/li>\n<\/ul>\n\n<h4>Supported form plugins<\/h4>\n\n<p>Contact Form 7, Fluent Forms, WPForms, Forminator, Ninja Forms, and SureForms. You must install a builder and create a form; this plugin does not ship its own contact form.<\/p>\n\n<h4>What this plugin does not do<\/h4>\n\n<ul>\n<li>It is not a REST \u201cWebMCP Bridge\u201d for posts, menus, or WooCommerce cart tools.<\/li>\n<li>It does not generate <code>llms.txt<\/code> and it is not an SEO or GEO plugin.<\/li>\n<li>It is not an MCP server for IDE clients (Cursor, Claude Desktop, and similar).<\/li>\n<li>It does not auto-submit lead, contact, or support forms.<\/li>\n<\/ul>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress 6.4 or later and PHP 8.0 or later<\/li>\n<li>At least one supported form plugin with a published form<\/li>\n<li>To test tools today: Chrome with <code>chrome:\/\/flags\/#enable-webmcp-testing<\/code> or a valid Origin Trial token, plus a WebMCP inspector extension<\/li>\n<\/ul>\n\n<h3>Privacy<\/h3>\n\n<p>This plugin stores annotation settings and an optional Origin Trial token in the WordPress database (<code>siwmfa_forms<\/code>, <code>siwmfa_settings<\/code>). It does not send data to remote services. When a token is saved, it is printed as a meta tag on the front end.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>silvaitamar-form-annotator-for-webmcp<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen.<\/li>\n<li>Install one of the supported form plugins and create a form, if you do not already have one.<\/li>\n<li>Open <strong>Settings \u2192 Form Annotator<\/strong>, find the form (search or filter by builder), enable it, then <strong>Annotate<\/strong> to set the tool name, description, and field text.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20is%20webmcp%20on%20a%20wordpress%20site%3F\"><h3>What is WebMCP on a WordPress site?<\/h3><\/dt>\n<dd><p><a href=\"https:\/\/developer.chrome.com\/docs\/ai\/webmcp\">WebMCP<\/a> is a browser API: the page declares tools in HTML. This plugin adds those attributes to WordPress forms so an in-browser agent can fill a contact or lead form from the current page.<\/p><\/dd>\n<dt id=\"is%20webmcp%20the%20same%20as%20mcp%20for%20cursor%20or%20claude%3F\"><h3>Is WebMCP the same as MCP for Cursor or Claude?<\/h3><\/dt>\n<dd><p>No. WebMCP runs in the browser, on the page. MCP servers for IDEs (Cursor, Claude Desktop) are a different protocol. This plugin is not an MCP server and does not need an API key.<\/p><\/dd>\n<dt id=\"can%20a%20browser%20ai%20agent%20fill%20my%20wordpress%20contact%20form%3F\"><h3>Can a browser AI agent fill my WordPress contact form?<\/h3><\/dt>\n<dd><p>Yes, after you enable that form in <strong>Settings \u2192 Form Annotator<\/strong> and annotate it. The agent sees <code>toolname<\/code>, <code>tooldescription<\/code>, and <code>toolparamdescription<\/code> on the real form. The visitor still confirms submit.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20submit%20the%20form%20automatically%3F\"><h3>Does this plugin submit the form automatically?<\/h3><\/dt>\n<dd><p>No. Lead, contact, and support forms never get <code>toolautosubmit<\/code>. The human confirms the send.<\/p><\/dd>\n<dt id=\"do%20i%20need%20chatgpt%2C%20an%20mcp%20server%2C%20or%20a%20rest%20api%3F\"><h3>Do I need ChatGPT, an MCP server, or a REST API?<\/h3><\/dt>\n<dd><p>No. Annotation is HTML on the form. Testing today uses Chrome with the WebMCP flag (or an Origin Trial token) and an inspector extension.<\/p><\/dd>\n<dt id=\"does%20this%20replace%20contact%20form%207%2C%20fluent%20forms%2C%20or%20wpforms%3F\"><h3>Does this replace Contact Form 7, Fluent Forms, or WPForms?<\/h3><\/dt>\n<dd><p>No. Those plugins still create and process the form. This plugin only adds WebMCP attributes when you enable a form. If a builder is not active, its adapter does not load.<\/p><\/dd>\n<dt id=\"is%20this%20an%20seo%20plugin%3F%20does%20it%20generate%20llms.txt%3F\"><h3>Is this an SEO plugin? Does it generate llms.txt?<\/h3><\/dt>\n<dd><p>No. It does not write <code>llms.txt<\/code>, sitemaps, or schema for search engines. It annotates forms for in-browser agents. The Lighthouse Agentic Browsing audit <code>webmcp-form-coverage<\/code> looks for these attributes on the real <code>&lt;form&gt;<\/code>; the plugin does not guarantee a score.<\/p><\/dd>\n<dt id=\"how%20do%20i%20test%20annotations%20in%20the%20browser%3F\"><h3>How do I test annotations in the browser?<\/h3><\/dt>\n<dd><p>Use Chrome with <code>chrome:\/\/flags\/#enable-webmcp-testing<\/code> (or an Origin Trial token under <strong>Settings \u2192 Form Annotator \u2192 Origin Trial<\/strong>) and a WebMCP inspector extension. Enable a form, view it on the front end, and confirm <code>toolname<\/code>, <code>tooldescription<\/code>, and <code>toolparamdescription<\/code> on the markup.<\/p><\/dd>\n<dt id=\"how%20do%20i%20translate%20this%20plugin%3F\"><h3>How do I translate this plugin?<\/h3><\/dt>\n<dd><p>Translations are managed on <a href=\"https:\/\/translate.wordpress.org\/\">translate.wordpress.org<\/a> after the plugin is listed. Language packs install automatically \u2014 do not bundle <code>.mo<\/code> files for locales that already have a pack.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Display name only: Form Annotator for WebMCP (slug and text domain unchanged).<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First public release: opt-in WebMCP annotation for Contact Form 7, Fluent Forms, WPForms, Forminator, Ninja Forms, and SureForms.<\/li>\n<li>Settings list with search, filters, pagination, bulk enable\/disable, and a single-form editor.<\/li>\n<li>Optional Chrome Origin Trial token.<\/li>\n<li>Lead and support forms never auto-submit.<\/li>\n<li>Tested up to WordPress 7.1.<\/li>\n<\/ul>","raw_excerpt":"Annotate WordPress forms with declarative WebMCP attributes so browser AI agents can fill lead and support forms reliably.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/355126","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=355126"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/itamarsilvacc"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=355126"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=355126"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=355126"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=355126"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=355126"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=355126"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}