updateTopCategory
Update an existing top-level member category by profession ID. Rename, reorder, or change SEO fields; only provided fields are updated and changes apply live.
Instructions
Update a category - Update an existing TOP-level member category by profession_id. Fields omitted are untouched. Writes live data.
Use when: renaming a category, changing its URL slug (filename), updating SEO keywords, or reordering. Changing filename breaks inbound links - also create a Redirect via createRedirect to preserve SEO.
Required: profession_id.
Filename rename caveat: if the existing filename has a seo_type=profile_search_results web page bound to it, renaming this category orphans that page. The wrapper rejects renames that would orphan a bound page — rename or delete the bound page first, then rename the category.
See also: createTopCategory (add new), deleteTopCategory (remove).
Writes live data: changes are immediately visible on the public site.
Returns: { status: "success", message: {...updatedRecord} }.
How a member gets classified on their public profile:
users_data.profession_id-> points at a single Top Category (the member's primary classification; shown in URL slug)users_data.services-> CSV of Sub Category IDs the member is tagged with (multiple allowed; simpler than the join table)rel_servicesrows (Member ↔ Sub Category links) -> used when you need per-link metadata likeavg_price,specialty,num_completed. Optional; most sites use just the CSV field.
Sub-sub-categories: createSubCategory with master_id=<parent service_id> creates a Sub Category nested under another Sub Category (a "sub-sub"). master_id=0 (default) means the Sub Category sits directly under a Top Category (the profession_id).
There is NO createProfession or createService tool in this MCP — those are BD's internal table names. Use createTopCategory / createSubCategory instead (BD's table-name → tool-name mapping is documented in Rule: Table to endpoint).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| profession_id | Yes | The top-level category ID to update (from createTopCategory / listTopCategories). | |
| name | No | ||
| filename | No | URL slug. Renaming orphans any `seo_type=profile_search_results` web page bound to the OLD filename — that page can't query this category anymore and renders empty. Before renaming, run `listWebPages property=filename property_value=<old-filename>`; if a profile_search_results page exists, rename it in the same operation (and consider `createRedirect` for SEO continuity). | |
| desc | No | Short internal taxonomy-row label. **Even if the user says "description" - this is NOT an SEO description.** Most BD themes don't render this field. For SEO copy on the Top-Category public search page (H1, intro, meta tags), create a WebPage with `seo_type=profile_search_results` + matching slug (see `createWebPage`). Short internal blurb only here. | |
| keywords | No | Fuzzy-search synonyms for on-site category matching - NOT SEO meta-keywords. Comma-separated single words (no spaces): synonyms, abbreviations, slang, common misspellings. Example for `Doctor`: `doc,physician,md,medic,gp,specialist`. ~5-10 max. Skip SEO phrases like `doctor near me` - those aren't fuzzy matchers. Optional. | |
| icon | No | ||
| sort_order | No | ||
| lead_price | No | ||
| image | No | ||
| _clear_fields | No | Column names to clear to empty string. Available on every `update*` operation. Works on base columns AND EAV/`users_meta` rows (rows preserved with `value=""`). To actually clear a field you MUST use this parameter — sending the field with `""` alone is a no-op (BD drops empty values). To remove a `users_meta` row entirely, use `deleteUserMeta`. See **Rule: Clearing fields**. Example: `_clear_fields: ["h2", "hero_link_url"]`. |