{"id":347406,"date":"2026-09-10T04:58:18","date_gmt":"2026-09-10T04:58:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/mcp-abilities-for-amelia-harudigi\/"},"modified":"2026-10-20T05:00:36","modified_gmt":"2026-10-20T05:00:36","slug":"harudigi-booking-abilities-for-amelia","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/harudigi-booking-abilities-for-amelia\/","author":23536128,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.2.1","stable_tag":"2.2.1","tested":"7.1.3","requires":"6.9","requires_php":"7.4","requires_plugins":null,"header_name":"HaruDigi Booking Abilities for Amelia and Easy MCP AI","header_author":"Jens Madsen \u00b7 HaruDigi","header_description":"Adds Amelia Booking (9.7+) admin abilities to Easy MCP AI. Independent plugin by HaruDigi \u2014 not affiliated with or endorsed by TMS Software.","assets_banners_color":"fffaf8","last_updated":"2026-10-20 05:00:36","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/smvueno.github.io\/harudigi-amelia-mcp-abilities\/","header_author_uri":"https:\/\/harudigi.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":471,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.0.2":{"tag":"2.0.2","author":"smvueno","date":"2026-09-10 04:58:05","revision":3689295},"2.0.3":{"tag":"2.0.3","author":"smvueno","date":"2026-09-10 05:10:32","revision":3689309},"2.0.4":{"tag":"2.0.4","author":"smvueno","date":"2026-09-11 08:19:40","revision":3691036},"2.0.5":{"tag":"2.0.5","author":"smvueno","date":"2026-09-11 08:35:08","revision":3691054},"2.0.6":{"tag":"2.0.6","author":"smvueno","date":"2026-09-11 08:53:05","revision":3691077},"2.0.7":{"tag":"2.0.7","author":"smvueno","date":"2026-09-12 07:55:04","revision":3692450},"2.0.8":{"tag":"2.0.8","author":"smvueno","date":"2026-09-12 08:42:28","revision":3692482},"2.1.0":{"tag":"2.1.0","author":"smvueno","date":"2026-09-17 05:19:27","revision":3699574},"2.1.1":{"tag":"2.1.1","author":"smvueno","date":"2026-10-19 06:04:31","revision":3754074},"2.2.0":{"tag":"2.2.0","author":"smvueno","date":"2026-10-20 04:54:46","revision":3755905},"2.2.1":{"tag":"2.2.1","author":"smvueno","date":"2026-10-20 05:00:36","revision":3755910}},"upgrade_notice":{"2.2.1":"<p>No behaviour change. Help text only, safe drop-in on top of 2.2.0.<\/p>","2.2.0":"<p>Payment <code>amount: &amp;quot;half&amp;quot;<\/code> after a partial payment now charges the full remaining balance. Agents should rely on the returned <code>rule<\/code> and <code>paidSoFar<\/code>.<\/p>","2.1.1":"<p>No agent workflow changes. Safe drop-in after Amelia 9.9.x \/ Easy MCP 2.x.<\/p>","2.1.0":"<p>All agents calling <code>amelia\/book action=create|update<\/code> must now do <code>dry_run:true<\/code> first, show the preview to the human, then call again with <code>confirm:true<\/code> + <code>previewId<\/code> + <code>expectedCustomer<\/code>. Cancel\/delete\/notify unchanged (still require <code>confirm:true<\/code>).<\/p>","2.0.8":"<p>Use <code>amelia\/pay action=link amount=half<\/code> (or a JPY amount) for deposit links; send the returned Stripe URL to the client.<\/p>","2.0.7":"<p>Use <code>amelia\/book action=notify id=\u2026 confirm:true<\/code> to manually email customers for the current booking status.<\/p>","2.0.6":"<p>GitHub auto-updates work for the public repo with no token; HARUDIGI_GH_TOKEN remains optional for private repos.<\/p>","2.0.5":"<p>GitHub updates work for private repos when <code>HARUDIGI_GH_TOKEN<\/code> is set in wp-config.php.<\/p>","2.0.4":"<p>Customer notes and catalog\/event patch updates work via <code>amelia\/mutate<\/code> and <code>amelia\/book<\/code>.<\/p>","2.0.3":"<p>Changelog is now maintained in one place and published to GitHub and wordpress.org automatically.<\/p>","2.0.2":"<p>WordPress.org SVN deploy via GitHub Actions; production zip hardening.<\/p>","2.0.1":"<p>Production: 7 meta Amelia tools for Easy MCP AI; Amelia natives suppressed in Abilities API.<\/p>","2.0.0":"<p>Breaking: old fine-grained amelia\/* ability slugs removed. Update agent prompts to use meta tools.<\/p>","1.7.4":"<p>Fixed: Cache Amelia status counts; Plugin Check cleanups under install slug<\/p>","1.7.3":"<p>Fixed: Plugin Check cleanups<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3689295,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3689295,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3689295,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3689295,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.0.2","2.0.3","2.0.4","2.0.5","2.0.6","2.0.7","2.0.8","2.1.0","2.1.1","2.2.0","2.2.1"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[251511,2353,169414,269,242115],"plugin_category":[40],"plugin_contributors":[280049],"plugin_business_model":[],"class_list":["post-347406","plugin","type-plugin","status-publish","hentry","plugin_tags-abilities","plugin_tags-ai","plugin_tags-amelia","plugin_tags-booking","plugin_tags-mcp","plugin_category-calendar-and-events","plugin_contributors-smvueno","plugin_committers-smvueno"],"banners":{"banner":"https:\/\/ps.w.org\/harudigi-booking-abilities-for-amelia\/assets\/banner-772x250.png?rev=3689295","banner_2x":"https:\/\/ps.w.org\/harudigi-booking-abilities-for-amelia\/assets\/banner-1544x500.png?rev=3689295","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/harudigi-booking-abilities-for-amelia\/assets\/icon-128x128.png?rev=3689295","icon_2x":"https:\/\/ps.w.org\/harudigi-booking-abilities-for-amelia\/assets\/icon-256x256.png?rev=3689295","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>HaruDigi Booking Abilities for Amelia and Easy MCP AI<\/strong> exposes seven meta abilities (<code>help<\/code>, <code>status<\/code>, <code>discover<\/code>, <code>query<\/code>, <code>mutate<\/code>, <code>book<\/code>, <code>pay<\/code>) so AI agents can manage Amelia without 100+ tools.<\/p>\n\n<p>While active, this plugin unregisters Amelia Pro\u2019s native abilities from the WordPress Abilities API so Easy MCP AI only sees the meta tools (natives duplicate coverage and hardcode approved on create). Amelia\u2019s separate MCP HTTP endpoint is left alone; deactivate this plugin to restore natives.<\/p>\n\n<p><strong>Requires Amelia Booking 9.7+<\/strong> (verified on 9.9.1). Easy MCP AI is required (verified on 2.2.0).<\/p>\n\n<p><strong>Disclaimer:<\/strong> Independent plugin by HaruDigi \u2014 not affiliated with or endorsed by TMS Software.<\/p>\n\n<h4>What this plugin does<\/h4>\n\n<ul>\n<li>Registers 7 meta Amelia abilities for Easy MCP AI<\/li>\n<li>Suppresses Amelia Pro native abilities in the Abilities API while active<\/li>\n<li>Redacts secrets; blocks password \/ externalId writes<\/li>\n<li>Requires confirm=true for deletes\/cancels<\/li>\n<li>notify defaults false; status follows Amelia defaultAppointmentStatus<\/li>\n<li>Payment link URLs (Stripe etc.) via amelia\/pay action=link<\/li>\n<\/ul>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress 6.9+<\/li>\n<li>PHP 7.4+<\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/easy-mcp-ai\/\">Easy MCP AI<\/a> active (<strong>required<\/strong>)<\/li>\n<li><strong>Amelia Booking 9.7+<\/strong> (required for abilities to run)<\/li>\n<\/ul>\n\n<h4>Updates<\/h4>\n\n<ul>\n<li><strong>WordPress.org installs<\/strong> update from wordpress.org<\/li>\n<li><strong>GitHub \/ direct ZIP installs<\/strong> can update from public GitHub Releases<\/li>\n<\/ul>\n\n<p>Author: <strong>Jens Madsen<\/strong> \u00b7 Brand: <strong>HaruDigi<\/strong> \u00b7 <a href=\"https:\/\/harudigi.com\">harudigi.com<\/a><\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate <strong>Easy MCP AI<\/strong>.<\/li>\n<li>Install and activate <strong>Amelia Booking 9.7 or newer<\/strong>.<\/li>\n<li>Upload the <code>harudigi-booking-abilities-for-amelia<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the release ZIP.<\/li>\n<li>Activate <strong>HaruDigi Booking Abilities for Amelia and Easy MCP AI<\/strong>.<\/li>\n<li>In Easy MCP AI \u2192 Abilities, confirm only the 7 meta <code>amelia\/*<\/code> tools are enabled.<\/li>\n<li>Create a bearer token; connect clients to <code>\/wp-json\/easy-mcp-ai\/v1\/mcp<\/code>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20amelia%20version%20do%20i%20need%3F\"><h3>What Amelia version do I need?<\/h3><\/dt>\n<dd><p><strong>Amelia Booking 9.7 or newer.<\/strong><\/p><\/dd>\n<dt id=\"is%20this%20an%20official%20amelia%20%2F%20tms%20plugin%3F\"><h3>Is this an official Amelia \/ TMS plugin?<\/h3><\/dt>\n<dd><p>No. Independent HaruDigi plugin \u2014 not affiliated with or endorsed by TMS Software.<\/p><\/dd>\n<dt id=\"does%20this%20replace%20amelia%E2%80%99s%20mcp%20tools%3F\"><h3>Does this replace Amelia\u2019s MCP tools?<\/h3><\/dt>\n<dd><p>For <strong>Easy MCP AI<\/strong>: yes while active \u2014 Amelia\u2019s 12 native abilities are unregistered from the Abilities API so agents only see the 7 meta tools. Amelia Pro\u2019s own MCP HTTP route (<code>\/wp-json\/mcp\/...<\/code>) is not configured by this plugin. Deactivate to restore natives.<\/p><\/dd>\n<dt id=\"why%20is%20easy%20mcp%20ai%20required%3F\"><h3>Why is Easy MCP AI required?<\/h3><\/dt>\n<dd><p>Easy MCP AI is the MCP host. This plugin adds Amelia abilities to that host.<\/p><\/dd>\n<dt id=\"how%20do%20i%20book%20without%20emailing%20the%20customer%3F\"><h3>How do I book without emailing the customer?<\/h3><\/dt>\n<dd><p>Leave <code>notify<\/code> \/ <code>notifyParticipants<\/code> unset or false (the default). Only set true after the human approves. That flag only allows mail on create\/status events \u2014 it does not send by itself.<\/p><\/dd>\n<dt id=\"how%20do%20i%20send%20a%20customer%20email%20for%20an%20existing%20booking%3F\"><h3>How do I send a customer email for an existing booking?<\/h3><\/dt>\n<dd><p>amelia\/book with <code>action=notify<\/code> (or <code>resend<\/code>), appointment <code>id<\/code>, and <code>confirm:true<\/code>. Optional <code>booking_id<\/code>. The matching customer status template must be enabled in Amelia \u2192 Notifications.<\/p><\/dd>\n<dt id=\"how%20do%20payment%20links%20work%3F\"><h3>How do payment links work?<\/h3><\/dt>\n<dd><p>amelia\/pay with <code>action=link<\/code> returns a checkout URL for the appointment\u2019s remaining balance. Card checkout in a browser is out of scope for MCP.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.2.1<\/h4>\n\n<ul>\n<li>Fixed: <code>amelia\/help<\/code> now states the manual send rule plainly: <code>amelia\/book action=notify<\/code> sends the customer template for the booking current status only, never changes the status, and must not be refused just because templates for other statuses are disabled.<\/li>\n<\/ul>\n\n<h4>2.2.0<\/h4>\n\n<ul>\n<li>Added: Booking card in <code>amelia\/book<\/code> create <code>dry_run<\/code> preview: service, provider, customer, time, extras by name, estimated total, status, email to client yes or no, and notes by label. Update previews get the same short summary.<\/li>\n<li>Added: Custom fields can be written by field label as well as id (for example <code>{\"Notes\": \"...\"}<\/code>). Unknown or ambiguous labels are refused with the list of real fields.<\/li>\n<li>Added: <code>amelia\/query<\/code> get appointment adds <code>data.notesAndFields<\/code>: <code>privateNote<\/code> (staff only), <code>customerNote<\/code> (client profile), <code>sharedNote<\/code> (the booking field labelled Notes), plus all booking fields by name.<\/li>\n<li>Added: <code>amelia\/query<\/code> list responses echo <code>meta.appliedFilters<\/code> so agents can see which filters were really used.<\/li>\n<li>Added: <code>amelia\/pay<\/code> link responses add <code>computedFrom<\/code>, <code>rule<\/code>, and a warning that a payment link is not a payment until a row is paid.<\/li>\n<li>Added: Human date words for booking lookup: <code>date_preset<\/code> accepts <code>today<\/code>, <code>tomorrow<\/code>, <code>upcoming<\/code>, <code>this_week<\/code>, <code>this_month<\/code>, and <code>day_N<\/code> (for example <code>day_10<\/code> for \"the 10th\"). The response echoes the real dates used.<\/li>\n<li>Added: Slim appointment rows now carry <code>money<\/code> (total, paid, owed) so \"what does this client owe\" is one lookup.<\/li>\n<li>Added: New tests: local harness now covers extras preview agreement, label writes, payment half rules, wrong id help, unknown parameters, availability with extras, date rules, and text validation.<\/li>\n<li>Changed: <code>amount: \"half\"<\/code> on <code>amelia\/pay<\/code> link now means: half of the total when nothing has been paid yet, and everything still owed once a payment has been made. The response states which rule was used.<\/li>\n<li>Changed: <code>amelia\/status<\/code> is slim (versions, counts, default status). Full settings are still available via <code>amelia\/query<\/code> action=settings.<\/li>\n<li>Changed: <code>amelia\/pay<\/code> <code>amount<\/code> accepts a number as well as a string.<\/li>\n<li>Fixed: Booking times are normalized by the plugin: common agent spellings (including ISO times with a timezone) are converted to one site time and shown in the preview. Ambiguous slash dates, date only values, relative words like \"next friday\", and impossible dates are refused at preview with <code>invalid_booking_start<\/code>. Search dates are validated the same way (<code>invalid_date<\/code>) instead of silently returning zero bookings.<\/li>\n<li>Fixed: Book create preview now refuses a bad status, a missing customer or service, a provider who does not run that service, and an unknown coupon code, instead of accepting the preview and failing at confirm.<\/li>\n<li>Fixed: Payment amounts that are not numbers (which were silently stored as 0), zero, or negative are refused with <code>invalid_amount<\/code> on add, update, and link.<\/li>\n<li>Fixed: Emoji and other 4 byte characters in notes, custom fields, and customer text are refused with <code>invalid_characters<\/code> instead of being silently stored as question marks.<\/li>\n<li>Fixed: Extras supplied inside <code>fields<\/code> on book update now persist like top level extras, and the preview shows the extras change for both shapes. Before, one shape previewed as a change but saved nothing, and the other saved but previewed as no change.<\/li>\n<li>Fixed: Book update confirm returns <code>persisted<\/code> and <code>changed<\/code> read back from the saved appointment, so success means the change is really there.<\/li>\n<li>Fixed: Unknown query parameters (for example <code>customerId<\/code> before it was supported, <code>bogus_xyz<\/code>, nested <code>params<\/code>) are refused with <code>unknown_parameter<\/code> and the supported keys, instead of being silently ignored. <code>customerId<\/code> on appointment lists now filters by that customer.<\/li>\n<li>Fixed: <code>amelia\/pay<\/code> with a booking id instead of a payment id returns <code>wrong_id_type<\/code> with the payment ids for that booking.<\/li>\n<li>Fixed: Availability checks with extras no longer crash (extras are encoded the way Amelia expects).<\/li>\n<li>Fixed: Extras that belong to a different service are refused at preview time with <code>extra_not_for_service<\/code> and the valid extras listed.<\/li>\n<li>Fixed: Creating a catalog extra that already exists for the same service is refused with <code>duplicate_extra<\/code> and the existing id.<\/li>\n<\/ul>\n\n<h4>2.1.1<\/h4>\n\n<ul>\n<li>Fixed: Employee (provider) create sets <code>externalId<\/code> to empty string so Amelia 9.9+ has the key (no PHP warning) without linking a WordPress user. Unlike customers, providers reject <code>-1<\/code> (truthy role check)<\/li>\n<li>Verified against Amelia Booking 9.9.1 and Easy MCP AI 2.2.0 (local: meta tests 50\/50, full audit 181\/181, Easy MCP HTTP tools\/list shows exactly the 7 meta tools)<\/li>\n<\/ul>\n\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>Added: <code>amelia\/book action=create|update<\/code> requires two-step flow: <code>dry_run:true<\/code> \u2192 preview (no DB write) \u2192 <code>confirm:true<\/code> + same <code>previewId<\/code> + <code>expectedCustomer<\/code> \u2192 real write<\/li>\n<li>Added: <code>previewId<\/code> is a server-issued hash bound to (aptId + fields + customer). 10-minute TTL. Mismatch\/expired\/missing \u2192 refuse<\/li>\n<li>Added: <code>expectedCustomer<\/code> (string) required on update: matches customer firstName\/lastName\/email (case-insensitive, substring). Mismatch \u2192 refuse. Blocks ID-swap writes (Charlie-Lynch class)<\/li>\n<li>Added: <code>internalNotes<\/code> + <code>bookingStart<\/code> in same update \u2192 refused (single-concern guard)<\/li>\n<li>Added: <code>amelia\/query action=list entity=appointment<\/code> defaults to today\u2026+14d window when no dates given, and to <code>view=slim<\/code> compact rows (aptId\/bookId\/start\/end\/status\/serviceName\/customer\/notesPreview\/paySummary) \u2014 cuts list tokens 10\u201350\u00d7<\/li>\n<li>Added: Slim list response adds <code>{ window, page, limit, count, hasMore }<\/code> meta so models page inside the window<\/li>\n<li>Added: <code>book-safety.php<\/code> houses the preview store + assertion helpers<\/li>\n<li>Added: <code>scripts\/full-audit.php<\/code> regression suite: 181\/181 pass locally; CI flag for fails<\/li>\n<li>Added: Tool descriptions \/ <code>discover<\/code> \/ <code>help<\/code> updated to describe <code>dry_run \u2192 preview \u2192 confirm<\/code> flow and ID glossary<\/li>\n<li>Fixed: <code>book action=create|update<\/code> no longer silently writes on a single call; first call without <code>dry_run<\/code> returns <code>dry_run_required<\/code><\/li>\n<\/ul>\n\n<h4>2.0.8<\/h4>\n\n<ul>\n<li>Added: <code>amelia\/pay action=link<\/code> accepts <code>amount<\/code> (JPY) or <code>amount:\"half\"<\/code> for partial Stripe Checkout links<\/li>\n<li>Added: Link response includes <code>chargedAmount<\/code>, <code>remainingAfter<\/code>, <code>bookingTotal<\/code>, <code>paidSoFar<\/code><\/li>\n<li>Added: <code>amelia\/help<\/code> <code>workflow_pay<\/code> for full\/half links, cash remainder, and Stripe remainder<\/li>\n<li>Added: Direct Stripe Checkout URLs (<code>buy.stripe.com<\/code>) returned for client send (not Amelia site wrappers)<\/li>\n<li>Fixed: <code>fields<\/code> + top-level args merge on writes (e.g. <code>customerBookingId<\/code> with nested <code>amount<\/code>)<\/li>\n<li>Fixed: Partial payment links bake the correct <code>chargedAmount<\/code> into Amelia\u2019s callback so half-pay records and emails show the deposit, not the full total<\/li>\n<\/ul>\n\n<h4>2.0.7<\/h4>\n\n<ul>\n<li>Added: <code>amelia\/book<\/code> <code>action=notify<\/code> (alias <code>resend<\/code>) sends customer status emails for an appointment without changing status\/time \u2014 requires <code>confirm:true<\/code><\/li>\n<li>Added: Help \/ discover docs clarify that <code>notify:true<\/code> is a lifecycle gate only; templates must be enabled in Amelia<\/li>\n<li>Fixed: <code>action=update<\/code> no longer permanently clears <code>notifyParticipants<\/code> (was killing reminders); omitted notify mutes that edit then restores the prior flag<\/li>\n<li>Fixed: Multi-booking updates keep sibling bookings in the payload (patch first, or <code>booking_id<\/code> when set)<\/li>\n<li>Fixed: Manual notify is email-only and errors when no enabled customer template matches<\/li>\n<li>Fixed: <code>waiting<\/code> accepted as a booking status; confirm message for notify is non-deletion wording<\/li>\n<\/ul>\n\n<h4>2.0.6<\/h4>\n\n<ul>\n<li>Fixed: GitHub updater checks public Releases first; <code>HARUDIGI_GH_TOKEN<\/code> is optional and only used if the repo is private<\/li>\n<li>Fixed: Public installs get the GitHub zip URL (<code>\/releases\/download\/\u2026<\/code>), not the private asset API<\/li>\n<\/ul>\n\n<h4>2.0.5<\/h4>\n\n<ul>\n<li>Fixed: GitHub auto-updater authenticates with <code>HARUDIGI_GH_TOKEN<\/code> so private-repo releases are visible<\/li>\n<li>Fixed: Plugin-update cron \/ \u201cCheck again\u201d no longer reuse a stale 6-hour GitHub cache<\/li>\n<li>Fixed: Updater installs the GitHub zip, not the wordpress.org zip that strips the updater<\/li>\n<\/ul>\n\n<h4>2.0.4<\/h4>\n\n<ul>\n<li>Fixed: Customer notes and other customer fields can be updated (<code>amelia\/mutate<\/code>); previously every customer update failed with 409<\/li>\n<li>Fixed: Name-only (patch) updates for location, coupon, resource, category, package, employee, and events no longer fail Amelia mandatory-field checks<\/li>\n<li>Fixed: Extra create no longer fails on null <code>maxQuantity<\/code>; package\/service create send required <code>color<\/code>\/<code>status<\/code><\/li>\n<li>Fixed: Package <code>bookable<\/code> accepts <code>{serviceId, quantity}<\/code>; Amelia DB errors return the column hint instead of a generic failure<\/li>\n<\/ul>\n\n<h4>2.0.3<\/h4>\n\n<ul>\n<li>Added: Single changelog source (<code>CHANGELOG.md<\/code>) synced to wordpress.org <code>readme.txt<\/code> and GitHub release notes<\/li>\n<li>Added: CI check so releases cannot ship without human-readable notes<\/li>\n<li>Added: Project Cursor skill for maintainers (<code>.cursor\/skills\/harudigi-amelia-mcp<\/code>)<\/li>\n<\/ul>\n\n<h4>2.0.2<\/h4>\n\n<ul>\n<li>Added: WordPress.org SVN deploy from GitHub Actions (<code>SVN_USERNAME<\/code> \/ <code>SVN_PASSWORD<\/code>)<\/li>\n<li>Added: Hardened production zip build and <code>.distignore<\/code><\/li>\n<\/ul>\n\n<h4>2.0.1<\/h4>\n\n<ul>\n<li>Added: Seven meta abilities only: <code>help<\/code>, <code>status<\/code>, <code>discover<\/code>, <code>query<\/code>, <code>mutate<\/code>, <code>book<\/code>, <code>pay<\/code><\/li>\n<li>Added: Payment CRUD and Stripe payment-link URLs via <code>amelia\/pay<\/code><\/li>\n<li>Added: Extras quantity and simple custom-field maps on bookings<\/li>\n<li>Changed: Booking <code>status<\/code> omitted \u2192 Amelia <code>defaultAppointmentStatus<\/code> (not hardcoded approved)<\/li>\n<li>Changed: <code>notify<\/code> defaults false \u2014 ask before emailing customers<\/li>\n<li>Changed: Amelia Pro native abilities unregistered while this plugin is active (Easy MCP)<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Changed: Breaking: replaced ~90 fine-grained abilities with 7 meta tools<\/li>\n<\/ul>\n\n<h4>1.7.4<\/h4>\n\n<ul>\n<li>Fixed: Cache Amelia status counts; Plugin Check cleanups under install slug<\/li>\n<\/ul>\n\n<h4>1.7.3<\/h4>\n\n<ul>\n<li>Fixed: Plugin Check cleanups<\/li>\n<\/ul>","raw_excerpt":"Compact Amelia Booking MCP for Easy MCP AI (7 meta abilities). Built by HaruDigi.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/347406","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=347406"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/smvueno"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=347406"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=347406"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=347406"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=347406"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=347406"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=347406"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}