Skip to main content
Glama
brilliantdirectories

brilliant-directories-mcp

Official

createSubCategory

Creates a new sub-level category under an existing top category, with optional keywords, slug, sort order, lead price, image, and nested sub-category support. Checks the slug to avoid URL collisions.

Instructions

Create a service - Create a new SUB-level member category under an existing Top Category. Writes live data.

Use createTopCategory or createSubCategory only for a single category that needs desc, keywords, icon, sort_order, lead_price, image, master_id, or a filename other than the default slug set at create time. For every other category create, use createCategoryTree.

A Sub Category is level 2 of the 3-tier member classification. It MUST have a parent Top Category (via profession_id). It may optionally sit under another Sub Category (for sub-sub-category nesting, via master_id). Backed by BD's list_services table.

Use when: adding one sub-category that needs desc, keywords, sort_order, lead_price, image, master_id, or a filename other than the default slug set at create time. To auto-create sub-categories while writing a member, include the names in services on createUser, or pass create_new_categories=1 on updateUser.

Required: name, profession_id.

Pre-check before create: BD does NOT enforce uniqueness on filename (URL slug) or name - but uniqueness IS scoped per-parent (two sub-cats with the same filename under different profession_id is fine; same filename under the SAME profession_id is not). Do a server-side filter-find: listSubCategories property=filename property_value=<proposed> property_operator==, then filter results by the intended profession_id. Zero rows under that parent = slug free; >=1 row = taken (URL collision - wrong sub-cat page resolves). Do NOT paginate unfiltered lists - filtered lookup is one tiny response. If taken: reuse via updateSubCategory, OR ask the user, OR pick an alternate filename and re-check. Wrapper safety net: on a missed pre-check, the wrapper auto-suffixes filename on collision (-1...-20) and surfaces the suffix in the response. Pre-checking still preferred — auto-suffix surprises the caller in URL-sensitive workflows.

Parameter guidance:

  • name - human-readable (e.g. "Sushi")

  • profession_id - the parent Top Category's ID (from listTopCategories or createTopCategory)

  • master_id - for SUB-SUB-CATEGORY nesting, pass the parent Sub Category's ID; default 0 means "directly under the Top Category"

  • filename - URL-slug form; desc, keywords, sort_order, lead_price, image - all optional. The default slug is the name lower-cased and hyphenated, with any character outside the Latin set percent-encoded.

See also: updateSubCategory (modify), listSubCategories (list), createTopCategory (create parent).

Writes live data: changes are immediately visible on the public site.

Returns: { status: "success", message: {...createdRecord} } including service_id. Use that to assign members via updateUser.services (CSV) or createMemberSubCategoryLink.

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_services rows (Member ↔ Sub Category links) -> used when you need per-link metadata like avg_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 createCategoryTree, or createTopCategory / createSubCategory when a single category needs create-time field control (BD's table-name → tool-name mapping is documented in Rule: Table to endpoint).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
descNoShort internal taxonomy-row label. **Even if the user says "description" - this is NOT an SEO description.** Not a meta-tag surface, not Google-ranking copy, not the H1/intro on the public category search page. Most BD themes don't render this field. For ANY SEO task on a category or sub-category - "write a description that ranks," "improve SEO," "add meta tags," "write intro copy" - create a WebPage with `seo_type=profile_search_results` and the matching slug instead (see `createWebPage`). Short internal blurb only here.
nameYesSub-category name. One name only — a comma-separated list is stored literally as one category named `A,B,C`. To create several at once use `createCategoryTree`.
filenameNoURL slug. Must be unique across web pages, top categories, sub categories, plan public URLs, and member profile slugs (wrapper auto-rejects collisions; pick a different slug or rename the conflict first).
keywordsNoFuzzy-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.
master_idNo
lead_priceNo
sort_orderNo
profession_idYesParent category ID

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed1 schema field changedv6.58.608
    • addedInput schema / properties / name / description
      Added value: +"Sub-category name. One name only — a comma-separated list is stored literally as one category named `A,B,C`. To create several at once use `createCategoryTree`."
  2. Addedv6.55.39
  3. Removedv6.55.19
  4. Addedv6.49.4
  5. Removedv6.48.1
  6. Addedv6.0.19
  7. Removedv6.0.18
  8. Changed1 schema field changedv6.0.16
    • addedInput schema / properties / filename / description
      Added value: +"URL slug. Must be unique across web pages, top categories, sub categories, and plan public URLs (the wrapper auto-rejects collisions; pick a different slug or rename the conflict first)."
  9. Changed2 schema fields changed
    • addedInput schema / properties / desc / description
      Added value: +"Short internal taxonomy-row label. **Even if the user says \"description\" - this is NOT an SEO description.** Not a meta-tag surface, not Google-ranking copy, not the H1/intro on the public category search page. Most BD themes don't render this field.\n\nFor ANY SEO task on a category or sub-category - \"write a description that ranks,\" \"improve SEO,\" \"add meta tags,\" \"write intro copy\" - create a WebPage with `seo_type=profile_search_results` and the matching slug instead (see `createWebPage`). Short internal blurb only here."
    • addedInput schema / properties / keywords / description
      Added value: +"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."
  10. Addedv6.0.7
  11. Removed
  12. Addedv6.0.6

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say the tool is not read-only, not idempotent, not destructive, and open-world. The description adds substantial behavioral detail: writes are immediately live on the public site, BD does not enforce uniqueness, the wrapper auto-suffixes filename collisions, and a server-side pre-check is recommended. These are non-obvious behavioral traits an agent needs to invoke the tool safely.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured with bolded section headers and front-loaded purpose, use-when, and required fields. Some content, such as the member classification explanation, is broader context rather than strictly necessary to invoke the tool, which keeps it from a perfect conciseness score, but everything is organized and purposeful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 8 parameters, no output schema, and a rich sibling ecosystem, the description covers nearly everything needed: required fields, pre-create uniqueness checks, collision behavior, parameter guidance, return shape with service_id, and integration with related tools. Nothing critical is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 63% schema description coverage, the description adds meaningful meaning beyond the schema: master_id semantics for sub-sub-category nesting, profession_id as the parent Top Category ID, filename as the URL slug with a default slug generation rule, and the notion that name must be a single name, not a comma-separated list. lead_price and sort_order remain thin, but they are optional and lower-risk.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Create a new SUB-level member category under an existing Top Category.' It also differentiates itself from createTopCategory and createCategoryTree, so an agent can immediately tell what this tool uniquely does and which sibling should be used instead.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Use when' section explicitly lists the conditions for choosing createSubCategory, and states that createCategoryTree should be used for every other category create. It also names alternatives like createTopCategory, updateSubCategory, listSubCategories, createUser, and updateUser, plus the pre-check workflow, making the decision boundary unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/brilliantdirectories/brilliant-directories-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server