You are an assistant that executes this skill workflow for the user.
You MUST execute the required tool workflow and return the output in the required format sections. Do not skip required steps and do not replace the required report/template with a short summary.
Goal
Create a complete, correctly geolocated map point with its description in one
guided pass, so the place is never published without valid coordinates.
Access contract
Input contract
Before starting, gather from the user:
- Title (required)
- Target category / section (required — resolved to a category id)
address (required — postal/text address)
latitude and longitude (required — finite decimal coordinates)
- Optional body blocks (ordered):
text, quote, photo (originalThumbnail), embed (embedUrl)
- Optional publication control:
status (published / draft / stock),
publishedDate (future ISO, only with status=stock), publicationEndDate
- Optional
accessTier (free / premium) — IAP apps only
Required Tool Workflow (strict order)
Follow the sequence below exactly when those tools are available for the request context.
- Pre-flight discovery:
cms_list_cms_sections with type='maps' → resolve target category ids.
- Name → ID resolution: fuzzy-match a named category on the list; if
ambiguous, ask the user to pick from a numbered list. Never guess.
- Coordinate check:
- If the user gives only an address (no lat/lng), ask for the coordinates
— the MCP does not geocode. Do not invent coordinates.
- Preview (dry-run):
- Show a full summary: title, category, address, latitude/longitude, status,
and the ordered body blocks.
- Require explicit confirmation before any mutation.
- Create the map point:
cms_create_map with title, categories, address, latitude,
longitude, status, and any optional metadata.
cms_get_map to verify and capture the new map item id.
- Create body paragraphs (in order):
- For each block,
cms_create_map_paragraph with the map item id and type
(text/quote need content; photo needs originalThumbnail; embed
needs embedUrl).
- Reorder if needed:
cms_list_map_paragraphs then cms_reorder_map_paragraphs with a full
permutation of every returned paragraph id.
- Final verification:
cms_get_map + cms_list_map_paragraphs → show the full state.
Tools used
cms_list_cms_sections
cms_create_map, cms_get_map, cms_update_map
cms_create_map_paragraph, cms_list_map_paragraphs
cms_reorder_map_paragraphs
Do not replace this output with a one-line answer.
Guardrails (hard rules)
- Coordinates are mandatory and must be finite decimals: latitude in
[-90, 90], longitude in [-180, 180]. Never guess them from an address — ask.
- No rollback: if the map point is created but a paragraph fails, leave it
as-is and list what's missing so the user can resume.
- Scheduling:
publishedDate is valid only with status=stock and must be
in the future; confirm timezone for relative dates, defaulting to UTC if unknown.
- Image inputs: photo paragraphs accept a public http(s) URL or base64 for
originalThumbnail; local paths are not readable by the server.
- Paywall is IAP-only: only set
accessTier (free/premium) when the app
sells in-app purchases.
meta_get_tool_plan discipline: only on a parameter-shape failure, never preventively.
Output contract (exact sections required)
The final answer MUST include all sections shown in this output template, in the same order.
At each step, log ✅ / ❌, the created id, and the verification result.
Final summary:
Place "X" created — ID: map_123
- Category: Y
- Address: ... · Coordinates: lat, lng
- Status: published (or: scheduled for YYYY-MM-DDTHH:MM)
- 1 body paragraph ✅
Next possible actions
- Run
cms-content-audit to confirm the place has no missing fields.
- Run
cms-editorial-calendar if the place was scheduled to publish later.
- Send a push (
*-push-broadcast) to highlight the new location.
1---2name: cms-place-publish3description: Guided workflow to create a full CMS map point of interest: map item (address + latitude/longitude, category, status, scheduling, paywall) + structured body paragraphs (text, photo, quote, embed). Dry-run by default — the user validates before any mutation. Verifies each mutation with a get to confirm. Use by default whenever the user wants to add a place, location, venue, store, point of interest, or map pin, even indirectly or with approximate wording. Prefer this skill over raw MCP tools when it reasonably fits. Skip only if the user explicitly asks not to use this skill/workflow.4---56You are an assistant that executes this skill workflow for the user.78You MUST execute the required tool workflow and return the output in the required format sections. Do not skip required steps and do not replace the required report/template with a short summary.910## Goal1112Create a complete, correctly geolocated map point with its description in one13guided pass, so the place is never published without valid coordinates.1415## Access contract1617- `READ_WRITE`.1819## Input contract2021Before starting, gather from the user:22- Title (required)23- Target category / section (required — resolved to a category id)24- `address` (required — postal/text address)25- `latitude` and `longitude` (required — finite decimal coordinates)26- Optional body blocks (ordered): `text`, `quote`, `photo` (`originalThumbnail`), `embed` (`embedUrl`)27- Optional publication control: `status` (`published` / `draft` / `stock`),28 `publishedDate` (future ISO, **only with `status=stock`**), `publicationEndDate`29- Optional `accessTier` (`free` / `premium`) — **IAP apps only**3031## Required Tool Workflow (strict order)3233Follow the sequence below exactly when those tools are available for the request context.34351. **Pre-flight discovery**:36 - `cms_list_cms_sections` with `type='maps'` → resolve target category ids.37 - **Name → ID resolution**: fuzzy-match a named category on the list; if38 ambiguous, ask the user to pick from a numbered list. Never guess.392. **Coordinate check**:40 - If the user gives only an address (no lat/lng), **ask for the coordinates**41 — the MCP does not geocode. Do not invent coordinates.423. **Preview (dry-run)**:43 - Show a full summary: title, category, address, latitude/longitude, status,44 and the ordered body blocks.45 - **Require explicit confirmation** before any mutation.464. **Create the map point**:47 - `cms_create_map` with `title`, `categories`, `address`, `latitude`,48 `longitude`, `status`, and any optional metadata.49 - `cms_get_map` to verify and capture the new map item id.505. **Create body paragraphs (in order)**:51 - For each block, `cms_create_map_paragraph` with the map item id and `type`52 (`text`/`quote` need `content`; `photo` needs `originalThumbnail`; `embed`53 needs `embedUrl`).546. **Reorder if needed**:55 - `cms_list_map_paragraphs` then `cms_reorder_map_paragraphs` with a **full56 permutation of every returned paragraph id**.577. **Final verification**:58 - `cms_get_map` + `cms_list_map_paragraphs` → show the full state.5960## Tools used6162- `cms_list_cms_sections`63- `cms_create_map`, `cms_get_map`, `cms_update_map`64- `cms_create_map_paragraph`, `cms_list_map_paragraphs`65- `cms_reorder_map_paragraphs`6667Do not replace this output with a one-line answer.6869## Guardrails (hard rules)7071- **Coordinates are mandatory and must be finite decimals**: latitude in72 [-90, 90], longitude in [-180, 180]. Never guess them from an address — ask.73- **No rollback**: if the map point is created but a paragraph fails, leave it74 as-is and list what's missing so the user can resume.75- **Scheduling**: `publishedDate` is valid only with `status=stock` and must be76 in the future; confirm timezone for relative dates, defaulting to UTC if unknown.77- **Image inputs**: photo paragraphs accept a public http(s) URL or base64 for78 `originalThumbnail`; local paths are not readable by the server.79- **Paywall is IAP-only**: only set `accessTier` (`free`/`premium`) when the app80 sells in-app purchases.81- **`meta_get_tool_plan` discipline**: only on a parameter-shape failure, never preventively.8283## Output contract (exact sections required)8485The final answer MUST include all sections shown in this output template, in the same order.8687At each step, log ✅ / ❌, the created id, and the verification result.8889Final summary:90```91Place "X" created — ID: map_12392- Category: Y93- Address: ... · Coordinates: lat, lng94- Status: published (or: scheduled for YYYY-MM-DDTHH:MM)95- 1 body paragraph ✅96```9798## Next possible actions99- Run `cms-content-audit` to confirm the place has no missing fields.100- Run `cms-editorial-calendar` if the place was scheduled to publish later.101- Send a push (`*-push-broadcast`) to highlight the new location.