Not in the top 1,000 by GitHub stars
brilliantdirectories/brilliant-directories-mcp
Official MCP server for Brilliant Directories — manage members, posts, leads, reviews, pages, and more from any AI agent. OpenAPI 3.1 spec included.
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
008da58c09d8 → 008da58c09d8
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 008da58c09d8
No earlier version was observed for comparison.
bd-skill-content/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
008da58c09d8 → 008da58c09d8
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 008da58c09d8
No earlier version was observed for comparison.
Verified commit 008da58c09d8504618c54a2f63c223dc4730c4ce
git clone --filter=blob:none --no-checkout https://github.com/brilliantdirectories/brilliant-directories-mcp.git .hotskills/brilliantdirectories-brilliant-directories-mcp && git -C .hotskills/brilliantdirectories-brilliant-directories-mcp checkout --detach 008da58c09d8504618c54a2f63c223dc4730c4ce
# Copy each selected skill directory from .hotskills/brilliantdirectories-brilliant-directories-mcp into .claude/skills/<skill-name>/Heat
1.4- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
- brilliant-directories
/ - bd-skill-content
bd-skill-content
How it works
brilliant-directories
When your agent uses it
Manage a Brilliant Directories (BD) membership or directory website via its REST API. Use when the user mentions their BD site, their directory, their members/leads/posts, managing site content, or automating anything on their Brilliant Directories platform.
What it loads into context
Frontmatter
133 tokensAlways available to the agent
SKILL.md
5,694 tokensWhen the skill is activated
Reference documents
470,801 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- What having this skill active means for your user
- Ground truth
- When to activate
- Two ways to reach the API (agent-agnostic)
- Tool / operation discovery (future-proof rule)
- Core conventions (stable across all resources)
- Canonical multi-step pattern
- Things to always do
- Things to never do
- BD terminology glossary
- Reference URLs
- Installation recap for the user
- Bundled growth skills
Scripts executed separately
Dockerfilemcp/index.jsmcp/package.jsonscripts/build-skill-zip.jsscripts/extract-instructions.jsscripts/flatten.pyscripts/schema-drift-check.jsscripts/skill-ref-check.pyscripts/swap-instructions.jsscripts/verify-instructions-match.js
Files
.claude-plugin/marketplace.jsonasset651 bytes.claude-plugin/plugin.jsonasset885 bytes.dockerignoreasset142 bytes.gitattributesasset267 bytes.github/workflows/release.ymlasset5,876 bytes.gitignoreasset1,248 bytes.mcp.jsonasset233 bytesCHANGELOG.mddoc1,592,094 bytesCONTRIBUTING.mddoc1,925 bytesDockerfileruns523 bytesLICENSEasset1,078 bytesREADME.mddoc59,064 bytesSKILL.mdcore24,344 bytesSKILL.mdcore24,344 bytesSKILL.mdcore24,344 bytesSKILL.mdcore24,344 bytesSKILL.mdcore24,344 bytesSKILL.mdcore24,344 bytesSKILL.mdcore24,344 bytesSKILL.mdcore24,344 bytesSKILL.mdcore24,344 bytesdocs/api-categories.mddoc3,622 bytesdocs/api-clicks.mddoc936 bytesdocs/api-data-types.mddoc2,529 bytesdocs/api-email-templates.mddoc2,277 bytesdocs/api-form-fields.mddoc1,103 bytesdocs/api-forms.mddoc829 bytesdocs/api-lead-matches.mddoc1,177 bytesdocs/api-leads.mddoc1,581 bytesdocs/api-membership-plans.mddoc1,459 bytesdocs/api-menu-items.mddoc1,045 bytesdocs/api-menus.mddoc932 bytesdocs/api-pages.mddoc7,765 bytesdocs/api-portfolio-groups.mddoc3,777 bytesdocs/api-portfolio-photos.mddoc1,838 bytesdocs/api-post-types.mddoc1,233 bytesdocs/api-posts.mddoc3,222 bytesdocs/api-redirects.mddoc2,821 bytesdocs/api-reviews.mddoc1,118 bytesdocs/api-services.mddoc2,756 bytesdocs/api-smart-lists.mddoc1,097 bytesdocs/api-tag-groups.mddoc703 bytesdocs/api-tag-relationships.mddoc778 bytesdocs/api-tag-types.mddoc659 bytesdocs/api-tags.mddoc613 bytesdocs/api-unsubscribe.mddoc959 bytesdocs/api-user-meta.mddoc7,099 bytesdocs/api-user-photos.mddoc789 bytesdocs/api-user-services.mddoc2,568 bytesdocs/api-users.mddoc13,242 bytesdocs/api-widgets.mddoc6,051 bytesglama.jsonasset117 bytesmcp/LICENSEasset1,078 bytesmcp/README.mddoc59,064 bytesmcp/index.jsruns356,294 bytesmcp/openapi/bd-api.jsonasset679,716 bytesmcp/openapi/mcp-instructions.mddoc153,480 bytesmcp/package-lock.jsonasset40,346 bytesmcp/package.jsonruns1,462 bytesplugin.jsonasset745 bytesscripts/build-skill-zip.jsruns3,349 bytesscripts/extract-instructions.jsruns1,981 bytesscripts/flatten.pyruns5,164 bytesscripts/schema-drift-check.jsruns42,807 bytesscripts/skill-reading-order.jsonasset292 bytesscripts/skill-ref-check.pyruns3,452 bytesscripts/swap-instructions.jsruns1,456 bytesscripts/verify-instructions-match.jsruns1,693 bytesserver.jsonasset1,141 bytes
Read SKILL.md
# Brilliant Directories
Brilliant Directories (BD) is the SaaS platform behind 50,000+ membership and directory websites. This skill gives you programmatic control over a BD-powered site via its REST API.
## What having this skill active means for your user
You can do, without them opening the BD admin UI:
- **Member ops** — create, bulk import, update, search, delete members; auto-fetch profile photos/logos/cover images from external URLs (web-scrapes, CSVs, cross-site migrations); manage categories, credits, and tags
- **Content ops** — write blog articles, events, job listings, coupons, video posts, photo albums, property/product listings; edit the homepage, landing pages, about/contact, SEO meta tags, social Open Graph tags
- **Taxonomy ops** — build out the site's 3-tier category hierarchy (Top Category → Sub Category → Sub-Sub Category) from scratch or inline while creating members
- **Inbox & engagement** — read lead inbox, moderate reviews, trigger lead matching to send notification emails to eligible members
- **Site config** — edit navigation menus, form fields, email templates, widgets, smart lists, 301 redirects, membership plans
- **Billing introspection** — pull a member's invoice history and subscription status (read-only)View the complete source on GitHubbd-skill-content
When your agent uses it
Create SEO-rich content posts on a Brilliant Directories (BD) website. Use when the user wants to populate or grow their BD site with event posts, job listings, or blog articles. The skill researches publicly-available sources, applies quality gates, manufactures EEAT-rich post content, deduplicates against existing posts, and prints an audit summary. Works on any BD-powered site via the public hosted MCP at brilliantmcp.com or the npm-installed MCP wrapper. Requires a BD API key and site URL configured in the user's MCP connection. Designed so the user can invoke with a one-sentence goal and get a complete, correct run.
What it loads into context
Frontmatter
137 tokensAlways available to the agent
SKILL.md
883 tokensWhen the skill is activated
Reference documents
140,944 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- What this skill does
- Required reading (in this order)
- Content-type routing
- Top-to-bottom run protocol
- Required preconditions
- What this skill does NOT do
Files
SKILL.mdcore3,997 bytesSKILL.mdcore3,997 bytesbd-skill-content.zipasset81,033 bytescontent-types/blog.mddoc26,306 bytescontent-types/events.mddoc23,734 bytescontent-types/jobs.mddoc32,910 bytesflattened/blog.system.mddoc135,652 bytesflattened/events.system.mddoc137,871 bytesflattened/jobs.system.mddoc147,045 bytesprompts/blog.mddoc420 bytesprompts/events.mddoc714 bytesprompts/jobs.mddoc776 bytesshared/ANTI-SLOP.mddoc19,241 bytesshared/GEOCODING.mddoc4,749 bytesshared/METHODOLOGY.mddoc69,880 bytesshared/URL-PATTERNS.mddoc16,710 bytes
Read SKILL.md
# BD Content Skill: Multi-type content creation for Brilliant Directories sites
**You are an expert content writer with deep subject-matter authority in the site's vertical, and a precise operator who executes each runbook step exactly.**
## What this skill does
Create content posts on a Brilliant Directories (BD) site. Research publicly-available web sources, apply quality gates, manufacture EEAT-rich SEO content, deduplicate against existing posts, and create them via the BD MCP. Works for events, jobs, blog articles.
## Required reading (in this order)
1. `shared/METHODOLOGY.md` — universal protocol.
2. `shared/ANTI-SLOP.md` — writing voice and pattern bans. Mandatory before generating any prose.
3. `shared/URL-PATTERNS.md` — internal URL construction for the user's site.
View the complete source on GitHubSkills included
- brilliant-directories
- bd-skill-content
Repository facts
- License
- MIT
- Created
- Apr 18, 2026
- Last pushed
- Nov 3, 2026
- Forks
- 5
- Open issues
- 1
- Project activity
- Active
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 5, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 38 notes
CHANGELOG.md:1Analysis incomplete: file exceeds text byte budgetSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedmcp/openapi/bd-api.json:1614[Credential-related source omitted]mcp/openapi/bd-api.json:1612Analysis incomplete: physical or joined line exceeds character limitmcp/openapi/bd-api.json:1613Analysis incomplete: physical or joined line exceeds character limitmcp/openapi/bd-api.json:2042Analysis incomplete: physical or joined line exceeds character limitmcp/openapi/bd-api.json:2043Analysis incomplete: physical or joined line exceeds character limitmcp/openapi/bd-api.json:2044Analysis incomplete: physical or joined line exceeds character limitmcp/openapi/bd-api.json:4163Analysis incomplete: physical or joined line exceeds character limitmcp/openapi/bd-api.json:4161Analysis incomplete: physical or joined line exceeds character limitmcp/openapi/bd-api.json:4162Analysis incomplete: physical or joined line exceeds character limitmcp/openapi/bd-api.json:5227Analysis incomplete: physical or joined line exceeds character limitmcp/openapi/bd-api.json:5225Analysis incomplete: physical or joined line exceeds character limit
- No broad tool permissions
- 4 dangerous shell commandsin 4 files: README.md:911 mcp/README.md:911 scripts/extract-instructions.js:48 and 1 more
- 1,148 network referencesin 55 files: mcp/package-lock.json:21 README.md:3 mcp/README.md:3 and 52 more
- 1 obfuscation signalin 1 file: mcp/index.js:4426
- 1 instruction override signalin 1 file: CHANGELOG.md:7147
- 10 executable scriptsin 10 files: Dockerfile:1 mcp/index.js:1 mcp/package.json:1 and 7 more
- 94 references to secretsin 9 files: README.md:105 mcp/README.md:105 mcp/index.js:14 and 6 more
- No requests to vote in Hot
Show all 1,258 signals by file
.claude-plugin/plugin.json
- Network accessline 6
"author": { "name": "Brilliant Directories", "url": "https://github.com/brilliantdirectories" - Network accessline 7
"name": "Brilliant Directories", "url": "https://github.com/brilliantdirectories" }, - Network accessline 8
"url": "https://github.com/brilliantdirectories" - Network accessline 9
}, "homepage": "https://www.brilliantdirectories.com", "repository": "https://github.com/brilliantdirectories/brilliant-directories-mcp", - Network accessline 10
"homepage": "https://www.brilliantdirectories.com", - Network accessline 11
"repository": "https://github.com/brilliantdirectories/brilliant-directories-mcp",
.dockerignore
- Access to secretsline 2
[Credential-related source omitted]
.github/workflows/release.yml
- Network accessline 45
with: node-version: "lts/*" registry-url: "https://registry.npmjs.org" - Network accessline 47
registry-url: "https://registry.npmjs.org" - Network accessline 85
- name: Install mcp-publisher run: | curl -L "https://github.com/modelcontextprotocol/registry/releases/latest/download/mcp-publisher_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm - Network accessline 87
curl -L "https://github.com/modelcontextprotocol/registry/releases/latest/download/mcp-publisher_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar xz mcp-publisher - Network accessline 127
--notes "Auto-created on tag push. See [CHANGELOG.md](https://github.com/brilliantdirectories/brilliant-directories-mcp/blob/main/CHANGELOG.md) for release notes." \
.gitignore
- Access to secretsline 4
[Credential-related source omitted]
.mcp.json
CHANGELOG.md
- Network accessline 5
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), - Network accessline 6
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - Network accessline 2297
- **Jobs research-inversion seam closed (2 turns/run).** The v6.58.241 witness run proved the census machinery but bought two turns from one seam: citation sources and the winner's application-page fetch fired AFTER the pre-create batch, an - Network accessline 3712
### Changed - **Stage 1 create-schema pre-load reworded to be path-neutral and non-contradictory.** The 6.58.13 wording said "drop straight into their `mcp_call`s" — but `mcp_call` is the Butler worker's tool-invocation wrapper, absent on t - Network accessline 3713
- **Stage 1 create-schema pre-load reworded to be path-neutral and non-contradictory.** The 6.58.13 wording said "drop straight into their `mcp_call`s" — but `mcp_call` is the Butler worker's tool-invocation wrapper, absent on the interacti - Network accessline 3778
- **`getSiteInfo` URLs align to the connection's scheme on http-only sites** — BD's own site-info builder claims `https://` in `full_url` and `brand_images_absolute` even for sites with no SSL (mixed with an http `main_directory_url_absolut - Network accessline 3936
- **Admin-edit URL scheme now mirrors the customer site's scheme.** Both `_admin_edit_url` builders previously hardcoded `https://ww2.managemydirectory.com`. The centralized admin host is unchanged, but the scheme now follows the site's own - Network accessline 5117
1. **Drop `.webp` from feature-image format list.** Was: `must end in .jpg/.jpeg/.png/.webp`. Now: `must end in .jpg/.jpeg/.png (WebP/GIF/AVIF skipped pre-tool per the same rule)`. 2. **Replace stale Pexels recipe with `getImageDimensions` - Network accessline 5118
2. **Replace stale Pexels recipe with `getImageDimensions` pointer.** Was: `source via https://www.pexels.com/search/<term>/?orientation=landscape`. Now: `verify orientation via getImageDimensions per Rule: Image dimensions before commit`. - Network accessline 6001
Live debug: agent tried twice to swap a post's feature image. Both `updateSingleImagePost post_id=N post_image=<NEW URL> auto_image_import=1` calls returned HTTP 200 and updated `revision_timestamp`, but the local file `pphoto-<post_id>.web - Network accessline 6122
Live run: agent generated audit summary with `https://ww2.managemydirectory.com/admin/posts/edit/297&newsite=60029` — wrong path. Corpus `Rule: Post admin URLs` (mcp-instructions.md line 503) carries the canonical `admin/viewPosts.php?searc - Network accessline 6167
Second live run after v6.49.53 still failed dedup, BUT for a different reason: agent ran three list-tool calls (the v6.49.52-53 mandatory-execution gates worked), but it paraphrased the queries WRONG. Used `property=post_image` instead of ` - Network accessline 6270
Stress test also confirmed cross-table dedup is load-bearing in practice: URL `https://images.pexels.com/photos/1552242/pexels-photo-1552242.jpeg` returned 0 rows from `listSingleImagePosts` (clean in data_posts) but 5 hits in `list_seo` he - Network accessline 6319
- **Single-image post types**: `listSingleImagePosts property=original_image_url property_value=<exact URL> property_operator==` — 0 rows = use, ≥1 row = pick another. - **Multi-image post types** (gallery photos in `users_portfolio`): `lis - Network accessline 6320
- **Multi-image post types** (gallery photos in `users_portfolio`): `listMultiImagePostPhotos property=original_image_url property_value=<URL> property_operator==` — same logic. - **Exact match** on the bare canonical Pexels URL: `https://i - Network accessline 6321
- **Exact match** on the bare canonical Pexels URL: `https://images.pexels.com/photos/<id>/pexels-photo-<id>.jpeg` (or `.png`/`.webp`). No query string. - Network accessline 6428
**Admin URL invention bug.** Real-run agent fabricated `https://ww2.managemydirectory.com/admin/post/edit/186?newsite=60029` for the audit summary — that route does not exist. Root cause: audit template referenced `<admin_edit_url>` but cor - Network accessline 6430
Added corpus `Rule: Post admin URLs` mirroring the email-template pattern: `https://ww2.managemydirectory.com/admin/viewPosts.php?search[value]=<post_id>&data_type=<data_type>&data_id=<data_id>&newsite=<website_id>`. Applies to all single-i - Instruction override signalline 7147
- Skip confirmation prompts on read-only tools (`get*`, `list*`, `search*`, `render*`, `verifyToken`, `loginUser`, `getBrandKit`, `getSiteInfo`) - Network accessline 7496
- Dead anchor `#openapi-spec` (line 729) → corrected to `#stable-asset-urls`. - TOC missing three sections (Field Discovery, Stable asset URLs, Security) → added. - Curl section auth headers unexplained → added a one-line note: direct-to-BD - Network accessline 7497
- TOC missing three sections (Field Discovery, Stable asset URLs, Security) → added. - Curl section auth headers unexplained → added a one-line note: direct-to-BD calls only need `X-Api-Key`; the Worker path needs both because `X-BD-Site-UR - Network accessline 7498
- Curl section auth headers unexplained → added a one-line note: direct-to-BD calls only need `X-Api-Key`; the Worker path needs both because `X-BD-Site-URL` is the routing key. - Network accessline 7499
- Requirements: HTTP-only sites (`http://mysite.com`) now listed as supported. Trailing slash kept as ❌ — defensive guidance even though the Worker strips it (cleaner config + works on non-Worker paths). - Network accessline 7517
3. **"Verify Node works: open Command Prompt..." paragraph** removed from the Advanced block opener (same reason). 4. **Reboot dropped from install steps** in 9 places. It's not actually required for most users — fully quitting and reopenin - Network accessline 7518
4. **Reboot dropped from install steps** in 9 places. It's not actually required for most users — fully quitting and reopening the AI app is sufficient. Relocated to Troubleshooting as a "still seeing `spawn npx ENOENT`?" recovery step wher - Network accessline 7519
5. **n8n callout heading** → `Why https://brilliantmcp.com/sse?` (was `Why brilliantmcp.com?`) for consistency with the URL form n8n actually uses. - Network accessline 7547
Also tightened the URL guidance throughout — agents and customers should supply the full canonical URL (`https://`, exact host, no trailing slash) rather than relying on Worker normalization. The Worker still normalizes defensively. - Network accessline 7557
Also struck the "accepts the URL with or without `https://` — Worker normalizes it" reassurance from the README. Customers should provide the full canonical URL (`https://`, exact host, no trailing slash) per the Requirements section. The W - Network accessline 7567
The Claude Desktop section advertised a "🚀 Easy (no Node.js required)" config block using `url` + `headers` shape pointing at `https://brilliantmcp.com`. Claude Desktop's `claude_desktop_config.json` does NOT accept that shape — it produces - Network accessline 7588
A customer reported MCP connection failure when the configured site URL contained a trailing slash (e.g. `https://www.example.com/`). The bug class was wider than the ticket: URL handling was scattered across two parallel implementations — - Network accessline 7590
This release consolidates URL normalization to a single hoisted `normalizeUrl()` helper applied unconditionally before any code-path branching. It does exactly one thing: trim whitespace and strip trailing slashes. Whatever protocol the use - Network accessline 7592
Verified end-to-end against two real customer sites (one HTTPS, one HTTP-only) — all input shapes (`https://site.com/`, `https://site.com`, `http://site.com/`, `http://site.com`, `https://site.com///`, with leading/trailing whitespace) now - Network accessline 7618
v6.43.0 added a wrapper-side `user_id` → `client_id` translation under the assumption that BD's billing endpoints only accepted `client_id`. That assumption was wrong. BD's documented behavior — re-verified live via direct curl — is that bo - Network accessline 7637
Post-v6.42.5 stress test surfaced bugs and rough edges across read paths, guards, and lifecycle ops. This release closes the actionable items, with no behavior change to anything that was working. Core fixes verified live via direct curl pr - Network accessline 7673
`config.domain` was never assigned in the npm package despite multiple helpers (`getPostTypesCached`, `getWebsiteInfoCached`, `_readLinkedPostMeta`, etc.) accepting it as a parameter. Existing helpers had been silently building `https://und - Network accessline 7871
5-minion stress test on v6.41.94 found 3 real wrapper holes (one root cause). All catchable with cheap synchronous arg-shape checks — no BD probe, no `fetch()`, no `waitUntil` (the cancellation trap that drove the v6.41.83-89 rabbit hole). - Network accessline 7879
The validators removed in v6.41.90 (`validateFieldNameUnique`, `validateSubmitCount`) failed because they did out-of-band `fetch()` calls to BD that Cloudflare cancelled via `waitUntil`. These three are pure local checks on the args dict — - Network accessline 7985
Both validators required pre-fetching the parent form's existing field list via BD's `listFormFields` endpoint, then comparing against the incoming write. The pre-fetch (`_listFormFieldsByFormName`) proved fragile in production: the unbound - Network accessline 8041
### Fixed — Form-validator helpers: 5s bounded fetch (root cause of "wrote despite error" pattern) - Network accessline 8049
The validator helpers (`_listFormFieldsByFormName`, `_getFormFieldRecordById`) were issuing unbounded `await fetch()` calls. When BD responded slowly to the filter query, the Worker's invocation budget expired before the fetch resolved. Clo - Network accessline 8053
Fix: both helpers now wrap their `fetch()` in a 5s `AbortController` matching the existing pattern at `_validateProfileSearchResultsSegments` (line ~3902) and `reserveSiteUrlSlug` (line ~4034). 5s is comfortable for a normal listFormFields - Network accessline 8085
**README — Codex Desktop section** (root + mcp READMEs): - URL was `https://brilliantmcp.com/mcp` → corrected to `https://brilliantmcp.com` (no `/mcp` path; Codex's MCP client 404s on the wrong path). - Network accessline 8086
- URL was `https://brilliantmcp.com/mcp` → corrected to `https://brilliantmcp.com` (no `/mcp` path; Codex's MCP client 404s on the wrong path). - Network accessline 8239
- **`.claude-plugin/plugin.json`** (new) — Claude Code plugin manifest. Required for Claude Code's plugin system to detect this repo as a plugin source. - **`.claude-plugin/marketplace.json`** (new) — marketplace registration manifest. Lets - Network accessline 8241
- **`.mcp.json`** (changed) — replaced npx-stdio config with Streamable HTTP transport pointing at the public hosted endpoint (`https://brilliantmcp.com`) with per-user auth headers (`X-Api-Key`, `X-BD-Site-URL`). No Node.js install require - Network accessline 8498
Every successful `createWebPage` / `updateWebPage` response now carries an `_admin_edit_url` field — a centralized-admin deep-link to the WebPage editor for the seo_id just written. Format: `https://ww2.managemydirectory.com/admin/contentMa - Network accessline 9348
Make.com shipped an MCP Client (Open Beta) that connects to remote MCP servers — see https://apps.make.com/mcp-client. Previous README lumped Make and Zapier together with HTTP-only guidance, predating Make's MCP Client release. - Network accessline 9352
- **Make.com** — full setup steps (Module → New MCP Server → URL `https://brilliantmcp.com` → API Key field). Flagged the known limitation: Make's UI exposes only one token field but our Worker requires both `X-Api-Key` and `X-BD-Site-URL` - Network accessline 9427
The centralized BD admin (`ww2.managemydirectory.com`) needs a tenant scope to load the right customer's email template. URL pattern updated to: `https://ww2.managemydirectory.com/admin/emailTemplates.php?faction=edit&email=<email_id>&newsi
CONTRIBUTING.md
- Network accessline 9
Open an issue at https://github.com/brilliantdirectories/brilliant-directories-mcp/issues and include: - Network accessline 35
git clone https://github.com/brilliantdirectories/brilliant-directories-mcp.git - Network accessline 39
# run the server with your BD credentials BD_API_URL=https://your-site.com \ - Network accessline 40
[Credential-related source omitted] - Access to secretsline 40
[Credential-related source omitted] - Access to secretsline 41
[Credential-related source omitted] - Network accessline 49
Be respectful. Keep discussion technical. We follow the [Contributor Covenant](https://www.contributor-covenant.org/version/2/1/code_of_conduct/) standard.
Dockerfile
- Executable scriptline 1
Executable file - Network accessline 13
[Credential-related source omitted] - Network accessline 15
[Credential-related source omitted] - Access to secretsline 15
[Credential-related source omitted] - Network accessline 16
[Credential-related source omitted] - Access to secretsline 16
[Credential-related source omitted] - Network accessline 17
ENV BD_API_URL=https://example.com
README.md
- Network accessline 3
[](https://www.npmjs.com/package/brilliant-directories-mcp) - Network accessline 4
[](LICENSE) - Network accessline 5
[](https://modelcontextprotocol.io) - Network accessline 15
1. **Your BD site URL.** Use the full canonical URL exactly as it loads in a browser — include `https://` (or `http://` if your site has no SSL), include `www.` if your site uses it, no trailing slash. - Network accessline 16
- ✅ `https://www.mysite.com` (most BD sites) - Network accessline 17
- ✅ `https://mysite.com` (only if your site has no `www.`) - Network accessline 18
- ✅ `http://mysite.com` (HTTP-only sites — protocol respected) - Network accessline 19
- ❌ `mysite.com` (missing protocol) - ❌ `https://mysite.com/` (trailing slash) - ❌ `https://mysite.com` if the site actually serves at `www.mysite.com` — use the form your site canonically responds at - Network accessline 20
- ❌ `https://mysite.com/` (trailing slash) - Network accessline 21
- ❌ `https://mysite.com` if the site actually serves at `www.mysite.com` — use the form your site canonically responds at - Network accessline 26
<a href="https://support.brilliantdirectories.com/support/solutions/articles/12000088768" target="_blank" rel="noopener noreferrer">Full walkthrough: How to Create an API Key</a>. - Network accessline 28
3. **Node.js — only for the Advanced path** (see below). Not needed for the Easy path. If you need it, one-time install from <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a> (click `Get Node.js®` to down - Network accessline 64
- [Zapier](#zapier) - [Abacus.AI (ChatLLM Agent)](#abacusai-chatllm-agent) - [curl / any HTTP client](#curl--any-http-client) - Network accessline 65
- [Abacus.AI (ChatLLM Agent)](#abacusai-chatllm-agent) - [curl / any HTTP client](#curl--any-http-client) - [What you can ask the AI](#what-you-can-ask-the-ai) - Network accessline 66
- [curl / any HTTP client](#curl--any-http-client) - Network accessline 88
- **🚀 Easy config block** — points at our hosted MCP at `https://brilliantmcp.com`. No Node.js, no install, no terminal. Starts working the moment you save and restart your AI app. - Network accessline 91
**Needs Node.js installed first** — get it from <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a> (click `Get Node.js®` to download, then click `Windows Installer (.msi)` — Mac: `macOS Installer` — and DO - Network accessline 101
"mcpServers": { "brilliant-directories": { "url": "https://brilliantmcp.com", - Network accessline 102
"brilliant-directories": { "url": "https://brilliantmcp.com", "headers": { - Network accessline 103
"url": "https://brilliantmcp.com", - Network accessline 104
[Credential-related source omitted] - Network accessline 105
[Credential-related source omitted] - Access to secretsline 105
[Credential-related source omitted] - Network accessline 106
"X-BD-Site-URL": "https://www.your-site.com" - Network accessline 113
[Credential-related source omitted] - Access to secretsline 113
[Credential-related source omitted] - Network accessline 123
> ⚠<U+FE0F> **STEP 1 — Install Node.js FIRST** (the Advanced path runs an `npx` command on your machine): > - Go to <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a> → click **Get Node.js®** > - Download: **Wind - Network accessline 124
> - Go to <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a> → click **Get Node.js®** > - Download: **Windows Installer (.msi)** or **macOS Installer** > - Double-click the file → click Next through every - Network accessline 142
"brilliant-directories-mcp@latest", "--api-key", "ENTER_API_KEY", "--url", "https://www.your-site.com" - Network accessline 143
[Credential-related source omitted] - Access to secretsline 143
[Credential-related source omitted] - Network accessline 144
"--url", "https://www.your-site.com" - Network accessline 161
> ⚠<U+FE0F> **Windows users:** install Claude Desktop from <a href="https://claude.ai/download" target="_blank" rel="noopener noreferrer">claude.ai/download</a>, NOT the Microsoft Store (the Store version sandboxes the config file). - Network accessline 163
> **Banner saying "Tool result could not be submitted… connection interrupted"?** Cosmetic UI bug across every MCP connector ([anthropics/claude-code #51874](https://github.com/anthropics/claude-code/issues/51874)) — your tools still work. - Network accessline 165
> ⚠<U+FE0F> **STEP 1 — Install Node.js FIRST** (before pasting the config below): > - Go to <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a> → click **Get Node.js®** > - Download: **Windows Installer (.msi)** o - Network accessline 166
> - Go to <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a> → click **Get Node.js®** > - Download: **Windows Installer (.msi)** or **macOS Installer** > - Double-click the file → click Next through every - Network accessline 194
"brilliant-directories-mcp@latest", "--api-key", "ENTER_API_KEY", "--url", "https://www.your-site.com" - Network accessline 195
[Credential-related source omitted] - Access to secretsline 195
[Credential-related source omitted] - Network accessline 196
"--url", "https://www.your-site.com" - Network accessline 203
[Credential-related source omitted] - Access to secretsline 203
[Credential-related source omitted] - Network accessline 236
"brilliant-directories-mcp@latest", "--api-key", "ENTER_API_KEY", "--url", "https://www.your-site.com" - Network accessline 237
[Credential-related source omitted] - Access to secretsline 237
[Credential-related source omitted] - Network accessline 238
"--url", "https://www.your-site.com" - Network accessline 245
[Credential-related source omitted] - Access to secretsline 245
[Credential-related source omitted] - Network accessline 247
> **Paste your final file into <a href="https://jsonlint.com" target="_blank" rel="noopener noreferrer">jsonlint.com</a> before restarting to ensure correct formatting.** - Network accessline 263
> **Not connected?** Check **Settings → Developer → MCP servers** for the error. Common causes: > - JSON typo — paste your file into <a href="https://jsonlint.com" target="_blank" rel="noopener noreferrer">jsonlint.com</a> - Network accessline 264
> - JSON typo — paste your file into <a href="https://jsonlint.com" target="_blank" rel="noopener noreferrer">jsonlint.com</a> - Network accessline 265
> - Wrong API key, or URL missing `https://` / has trailing slash - Network accessline 281
1. **Node.js** — from <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a> (click `Get Node.js®` → `Windows Installer (.msi)` or `macOS Installer` → double-click to install, click Next through the prompts). - Access to secretsline 301
[Credential-related source omitted] - Network accessline 308
[Credential-related source omitted] - Access to secretsline 308
[Credential-related source omitted] - Access to secretsline 309
[Credential-related source omitted] - Network accessline 310
--header "X-BD-Site-URL: https://www.your-site.com" - Network accessline 313
[Credential-related source omitted] - Access to secretsline 313
[Credential-related source omitted] - Network accessline 318
[Credential-related source omitted] - Access to secretsline 318
[Credential-related source omitted] - Network accessline 347
> ⚠<U+FE0F> **STEP 1 — Install Node.js FIRST** (before editing the config below): > - Go to <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a> → click **Get Node.js®** > - Download: **Windows Installer (.msi)** o - Network accessline 348
> - Go to <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a> → click **Get Node.js®** > - Download: **Windows Installer (.msi)** or **macOS Installer** > - Double-click the file → click Next through every - Network accessline 365
"brilliant-directories-mcp@latest", "--api-key", "ENTER_API_KEY", "--url", "https://www.your-site.com" - Network accessline 366
[Credential-related source omitted] - Access to secretsline 366
[Credential-related source omitted] - Network accessline 367
"--url", "https://www.your-site.com" - Network accessline 374
[Credential-related source omitted] - Access to secretsline 374
[Credential-related source omitted] - Network accessline 383
[Credential-related source omitted] - Access to secretsline 383
[Credential-related source omitted] - Network accessline 401
**1. Download Codex Desktop** from <a href="https://chatgpt.com/codex/get-started/" target="_blank" rel="noopener noreferrer">chatgpt.com/codex/get-started</a> and install it. - Network accessline 412
|---|---| | **Name** | `Brilliant Directories` (or any label) | | **URL** | `https://brilliantmcp.com` | - Network accessline 413
| **Name** | `Brilliant Directories` (or any label) | | **URL** | `https://brilliantmcp.com` | | **Bearer token env var** | *leave empty — don't touch* | - Network accessline 414
| **URL** | `https://brilliantmcp.com` | - Network accessline 418
| *Click **+ Add header** to add the second row* | | | **Headers** — Key (row 2) | `X-BD-Site-URL` | | **Headers** — Value (row 2) | `https://www.your-site.com` | - Network accessline 419
| **Headers** — Key (row 2) | `X-BD-Site-URL` | | **Headers** — Value (row 2) | `https://www.your-site.com` | | **Headers from environment variables** | *leave empty — don't touch* | - Network accessline 420
| **Headers** — Value (row 2) | `https://www.your-site.com` | - Network accessline 427
> ⚠<U+FE0F> **STEP 1 — Install Node.js FIRST** (before pasting the config below): > - Go to <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a> → click **Get Node.js®** > - Download: **Windows Installer (.msi)** o - Network accessline 428
> - Go to <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a> → click **Get Node.js®** > - Download: **Windows Installer (.msi)** or **macOS Installer** > - Double-click the file → click Next through every - Network accessline 444
| **Arguments** — Row 4 | your BD API key | | **Arguments** — Row 5 | `--url` | | **Arguments** — Row 6 | `https://www.your-site.com` | - Network accessline 445
| **Arguments** — Row 5 | `--url` | | **Arguments** — Row 6 | `https://www.your-site.com` | | **Environment variables** | *leave empty — don't touch* | - Network accessline 446
| **Arguments** — Row 6 | `https://www.your-site.com` | - Network accessline 479
"mcpServers": { "brilliant-directories": { "serverUrl": "https://brilliantmcp.com", - Network accessline 480
"brilliant-directories": { "serverUrl": "https://brilliantmcp.com", "headers": { - Network accessline 481
"serverUrl": "https://brilliantmcp.com", - Network accessline 482
[Credential-related source omitted] - Network accessline 483
[Credential-related source omitted] - Access to secretsline 483
[Credential-related source omitted] - Network accessline 484
"X-BD-Site-URL": "https://www.your-site.com" - Network accessline 493
> ⚠<U+FE0F> **STEP 1 — Install Node.js FIRST** (before pasting the config below): > - Go to <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a> → click **Get Node.js®** > - Download: **Windows Installer (.msi)** o - Network accessline 494
> - Go to <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a> → click **Get Node.js®** > - Download: **Windows Installer (.msi)** or **macOS Installer** > - Double-click the file → click Next through every - Network accessline 508
"brilliant-directories-mcp@latest", "--api-key", "ENTER_API_KEY", "--url", "https://www.your-site.com" - Network accessline 509
[Credential-related source omitted] - Access to secretsline 509
[Credential-related source omitted] - Network accessline 510
"--url", "https://www.your-site.com" - Network accessline 517
[Credential-related source omitted] - Access to secretsline 517
[Credential-related source omitted] - Network accessline 537
"mcpServers": { "brilliant-directories": { "url": "https://brilliantmcp.com", - Network accessline 538
"brilliant-directories": { "url": "https://brilliantmcp.com", "headers": { - Network accessline 539
"url": "https://brilliantmcp.com", - Network accessline 540
[Credential-related source omitted] - Network accessline 541
[Credential-related source omitted] - Access to secretsline 541
[Credential-related source omitted] - Network accessline 542
"X-BD-Site-URL": "https://www.your-site.com" - Network accessline 551
> ⚠<U+FE0F> **STEP 1 — Install Node.js FIRST** (before pasting the config below): > - Go to <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a> → click **Get Node.js®** > - Download: **Windows Installer (.msi)** o - Network accessline 552
> - Go to <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a> → click **Get Node.js®** > - Download: **Windows Installer (.msi)** or **macOS Installer** > - Double-click the file → click Next through every - Network accessline 566
"brilliant-directories-mcp@latest", "--api-key", "ENTER_API_KEY", "--url", "https://www.your-site.com" - Network accessline 567
[Credential-related source omitted] - Access to secretsline 567
[Credential-related source omitted] - Network accessline 568
"--url", "https://www.your-site.com" - Network accessline 575
[Credential-related source omitted] - Access to secretsline 575
[Credential-related source omitted] - Network accessline 595
> ⚠<U+FE0F> **STEP 1 — Install Node.js FIRST** (the Cursor Directory installer wires up an `npx` child process): > - Go to <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a> → click **Get Node.js®** > - Download: - Network accessline 596
> - Go to <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a> → click **Get Node.js®** > - Download: **Windows Installer (.msi)** or **macOS Installer** > - Double-click the file → click Next through every - Network accessline 602
1. **Open** → <a href="https://cursor.directory/plugins/brilliant-directories" target="_blank" rel="noopener noreferrer">cursor.directory/plugins/brilliant-directories</a> - Network accessline 615
|---|---| | `BD_API_KEY` | your BD API key | | `BD_SITE_URL` | `https://www.your-site.com` — include `https://`, no trailing slash | - Access to secretsline 616
[Credential-related source omitted] - Network accessline 617
| `BD_SITE_URL` | `https://www.your-site.com` — include `https://`, no trailing slash | - Network accessline 644
3. In the sidebar, click **Tools & MCP**. 4. Click **New MCP Server**. 5. Paste [the config block](#the-config-block). Replace `ENTER_API_KEY` with your BD API key and `https://www.your-site.com` with your BD site URL. - Network accessline 645
4. Click **New MCP Server**. 5. Paste [the config block](#the-config-block). Replace `ENTER_API_KEY` with your BD API key and `https://www.your-site.com` with your BD site URL. 6. **Click Save, then fully quit and reopen Cursor.** Saving al - Network accessline 646
[Credential-related source omitted] - Access to secretsline 646
[Credential-related source omitted] - Network accessline 660
- If "Folder doesn't exist": navigate to `~/` and create a new folder named exactly `.cursor` (leading dot). Retry. 4. Inside `.cursor`, open `mcp.json` in TextEdit / any text editor. If missing: create it. TextEdit users: File → New → Form - Network accessline 662
[Credential-related source omitted] - Access to secretsline 662
[Credential-related source omitted] - Network accessline 669
3. Inside `.cursor`, open `mcp.json` in Notepad. If missing: right-click empty area → **New** → **Text Document** → rename to `mcp.json` (click Yes to the extension warning). - Can't see `.txt` / `.json` extensions? File Explorer → **Vie - Network accessline 671
[Credential-related source omitted] - Access to secretsline 671
[Credential-related source omitted] - Network accessline 684
|---|---| | **Server Transport** | `Server Sent Events (Deprecated)` | | **MCP Endpoint URL** | `https://brilliantmcp.com/sse` | - Network accessline 685
| **Server Transport** | `Server Sent Events (Deprecated)` | | **MCP Endpoint URL** | `https://brilliantmcp.com/sse` | | **Authentication** | `Multiple Headers Auth` | - Network accessline 686
| **MCP Endpoint URL** | `https://brilliantmcp.com/sse` | - Network accessline 687
| **Authentication** | `Multiple Headers Auth` | | **Header 1** | Name: `X-Api-Key` · Value: *your 32-char hex BD API key* | | **Header 2** | Name: `X-BD-Site-URL` · Value: `https://www.your-site.com` | - Network accessline 689
| **Header 2** | Name: `X-BD-Site-URL` · Value: `https://www.your-site.com` | - Network accessline 694
> - The MCP spec deprecated SSE in favor of HTTP Streamable > - n8n's SSE client works today against our server > - n8n's HTTP Streamable client has <a href="https://github.com/n8n-io/n8n/issues/28924" target="_blank" rel="noopener noreferr - Network accessline 695
> - n8n's SSE client works today against our server > - n8n's HTTP Streamable client has <a href="https://github.com/n8n-io/n8n/issues/28924" target="_blank" rel="noopener noreferrer">known upstream bugs</a> we filed > - Our server supports - Network accessline 696
> - n8n's HTTP Streamable client has <a href="https://github.com/n8n-io/n8n/issues/28924" target="_blank" rel="noopener noreferrer">known upstream bugs</a> we filed - Network accessline 697
> - Our server supports BOTH transports — when n8n fixes their HTTP Streamable client, you can switch to `https://brilliantmcp.com` (no `/sse` path) with Transport = `HTTP Streamable`. No server changes needed. - Network accessline 699
> **Why `https://brilliantmcp.com/sse`?** The main `brilliantdirectories.com` domain has zone-level security rules (bot challenges, geo blocks) that protect our marketing site but silently blocked n8n's SSE handshake. `brilliantmcp.com` is - Network accessline 705
https://raw.githubusercontent.com/brilliantdirectories/brilliant-directories-mcp/main/mcp/openapi/bd-api.json - Network accessline 709
[Credential-related source omitted] - Access to secretsline 709
[Credential-related source omitted] - Network accessline 711
**Want to verify the server is healthy yourself?** Install the official <a href="https://github.com/modelcontextprotocol/inspector" target="_blank" rel="noopener noreferrer">MCP Inspector</a> (`npx @modelcontextprotocol/inspector`) and poin - Network accessline 717
Make.com ships an **MCP Client** app (currently Open Beta) that connects to remote MCP servers — see <a href="https://apps.make.com/mcp-client" target="_blank" rel="noopener noreferrer">Make's MCP Client docs</a>. To connect it to our Worke - Network accessline 719
1. Add the **MCP Client** module to your scenario, click **Create a connection**. 2. Click **+ New MCP Server** (we're not yet on Make's verified-servers list). 3. **URL:** `https://brilliantmcp.com` - Network accessline 720
[Credential-related source omitted] - Network accessline 721
3. **URL:** `https://brilliantmcp.com` - Network accessline 727
**Fallback path (works today, every BD operation):** use Make's standard **HTTP** module against `https://www.your-site.com/api/v2/*` with these headers: - Network accessline 730
[Credential-related source omitted] - Network accessline 731
X-BD-Site-URL: https://www.your-site.com - Network accessline 744
[Credential-related source omitted] - Network accessline 746
[Credential-related source omitted] - Network accessline 752
Abacus AI Agent supports MCP servers — both stdio (npm) and remote (URL) — via its **Configure MCP** page (Agent Settings → MCP Server Config). See <a href="https://abacus.ai/help/chatllm-ai-super-assistant/mcp-servers" target="_blank" rel= - Network accessline 763
"brilliant-directories-mcp@latest", "--api-key", "ENTER_API_KEY", "--url", "https://www.your-site.com" - Network accessline 764
[Credential-related source omitted] - Access to secretsline 764
[Credential-related source omitted] - Network accessline 765
"--url", "https://www.your-site.com" - Network accessline 771
[Credential-related source omitted] - Access to secretsline 771
[Credential-related source omitted] - Network accessline 776
{ "brilliant-directories": { "url": "https://brilliantmcp.com", - Network accessline 777
"brilliant-directories": { "url": "https://brilliantmcp.com", "headers": { - Network accessline 778
"url": "https://brilliantmcp.com", - Network accessline 779
[Credential-related source omitted] - Network accessline 780
[Credential-related source omitted] - Access to secretsline 780
[Credential-related source omitted] - Network accessline 781
"X-BD-Site-URL": "https://www.your-site.com" - Network accessline 793
### curl / Any HTTP Client - Network accessline 795
[Credential-related source omitted] - Access to secretsline 795
[Credential-related source omitted] - Network accessline 797
> **Why these examples only need `X-Api-Key` (and not `X-BD-Site-URL`):** these calls go DIRECTLY to your BD site (`your-site.com/api/v2/...`), bypassing the MCP Worker. The `X-BD-Site-URL` header is only needed when calling the hosted Work - Network accessline 800
[Credential-related source omitted] - Network accessline 801
[Credential-related source omitted] - Access to secretsline 801
[Credential-related source omitted] - Network accessline 803
[Credential-related source omitted] - Network accessline 804
[Credential-related source omitted] - Access to secretsline 804
[Credential-related source omitted] - Network accessline 806
[Credential-related source omitted] - Network accessline 807
[Credential-related source omitted] - Access to secretsline 807
[Credential-related source omitted] - Network accessline 809
https://www.your-site.com/api/v2/user/create - Network accessline 811
[Credential-related source omitted] - Network accessline 812
[Credential-related source omitted] - Access to secretsline 812
[Credential-related source omitted] - Network accessline 814
https://www.your-site.com/api/v2/user/search - Network accessline 816
[Credential-related source omitted] - Network accessline 817
[Credential-related source omitted] - Access to secretsline 817
[Credential-related source omitted] - Network accessline 819
https://www.your-site.com/api/v2/user/update - Network accessline 848
Get the latest skill zip from the GitHub Releases page: **[bd-skill-content.zip](https://github.com/brilliantdirectories/brilliant-directories-mcp/releases/latest)**. - Network accessline 852
1. Open claude.ai → Settings → Customize → Skills → Upload Skill. 2. Upload the `bd-skill-content.zip` file you downloaded. 3. Ensure your BD MCP is connected (either the hosted `https://brilliantmcp.com` or the npm-installed local server). - Network accessline 853
2. Upload the `bd-skill-content.zip` file you downloaded. 3. Ensure your BD MCP is connected (either the hosted `https://brilliantmcp.com` or the npm-installed local server). 4. Start a chat and tell Claude what you want: "create event post - Network accessline 854
3. Ensure your BD MCP is connected (either the hosted `https://brilliantmcp.com` or the npm-installed local server). - Network accessline 889
[Credential-related source omitted] - Access to secretsline 889
[Credential-related source omitted] - Network accessline 891
[Credential-related source omitted] - Access to secretsline 891
[Credential-related source omitted] - Network accessline 897
[Credential-related source omitted] - Access to secretsline 897
[Credential-related source omitted] - Network accessline 905
- **`401 Unauthorized`** — API key is wrong, revoked, or lacks permission for the endpoint. Regenerate in BD Admin → Developer Hub. - **`403 API Key does not have permission to access this endpoint`** — this specific endpoint isn't granted - Network accessline 906
- **`403 API Key does not have permission to access this endpoint`** — this specific endpoint isn't granted on your key. Edit the key in BD Admin → Developer Hub and enable the missing endpoint (the error names it). - **`404 Not Found`** — - Network accessline 907
- **`404 Not Found`** — your site URL is wrong. Must include `https://` and NO trailing slash, and match the canonical form your site responds at (include `www.` if your site uses it). Correct: `https://www.mysite.com`. Wrong: `mysite.com`, - Dangerous shell operationline 911
- **Mac/Linux Terminal:** `rm -rf ~/.npm/_npx` - Network accessline 911
- **Mac/Linux Terminal:** `rm -rf ~/.npm/_npx` - Then fully quit + reopen. The `-y` in your config makes `npx` re-download automatically — you do NOT need `npm install -g brilliant-directories-mcp`. - **`npx: command not found` or `spawn - Network accessline 912
- Then fully quit + reopen. The `-y` in your config makes `npx` re-download automatically — you do NOT need `npm install -g brilliant-directories-mcp`. - **`npx: command not found` or `spawn npx ENOENT`** — Node.js isn't installed (or your - Network accessline 913
- **`npx: command not found` or `spawn npx ENOENT`** — Node.js isn't installed (or your AI app started before Node was installed). Install from <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a>, then full - Network accessline 915
- **"not valid MCP server configurations" (Claude Desktop)** — `claude_desktop_config.json` doesn't accept `url`-shaped blocks. Use the Advanced (npm/stdio) config from the [Claude Desktop section](#claude-desktop). Windows users on the Mic - Network accessline 924
|---|---|---|---| | `X-Api-Key` | your BD API key | Yes | Authenticates the request. Admin → **Developer Hub** → **Generate API Key**. | | `X-BD-Site-URL` | `https://www.your-site.com` | Yes | Pairs the API key with its BD site. Full canoni - Network accessline 926
| `X-BD-Site-URL` | `https://www.your-site.com` | Yes | Pairs the API key with its BD site. Full canonical URL (`https://`, exact host, no trailing slash). | - Network accessline 932
| Field the client asks for | What to enter | |---|---| | **MCP Server URL** / Endpoint URL / Remote Server URL | `https://brilliantmcp.com` (no `/sse`, no trailing path) | - Network accessline 933
|---|---| | **MCP Server URL** / Endpoint URL / Remote Server URL | `https://brilliantmcp.com` (no `/sse`, no trailing path) | | **Transport** | `Streamable HTTP` (also called "HTTP Streamable"). **NOT** SSE. **NOT** WebSocket. | - Network accessline 934
| **MCP Server URL** / Endpoint URL / Remote Server URL | `https://brilliantmcp.com` (no `/sse`, no trailing path) | - Network accessline 935
[Credential-related source omitted] - Network accessline 936
[Credential-related source omitted] - Network accessline 940
> **n8n is the exception.** n8n's Streamable HTTP client has upstream bugs, so n8n users must use Transport = `Server Sent Events (Deprecated)` + URL `https://brilliantmcp.com/sse` (with the `/sse` path). See the [n8n section](#n8n) for the - Network accessline 1022
[Credential-related source omitted] - Network accessline 1023
[Credential-related source omitted] - Access to secretsline 1023
[Credential-related source omitted] - Network accessline 1025
[Credential-related source omitted] - Network accessline 1026
[Credential-related source omitted] - Access to secretsline 1026
[Credential-related source omitted] - Network accessline 1034
https://raw.githubusercontent.com/brilliantdirectories/brilliant-directories-mcp/main/mcp/openapi/bd-api.json - Network accessline 1074
- **Bug reports / feature requests:** https://github.com/brilliantdirectories/brilliant-directories-mcp/issues - Network accessline 1075
- **BD Support:** https://support.brilliantdirectories.com - Network accessline 1076
- **API Docs:** https://support.brilliantdirectories.com/support/solutions/articles/12000108045
SKILL.md
- Network accessline 5
metadata: author: Brilliant Directories homepage: https://github.com/brilliantdirectories/brilliant-directories-mcp - Network accessline 6
author: Brilliant Directories homepage: https://github.com/brilliantdirectories/brilliant-directories-mcp npm: https://www.npmjs.com/package/brilliant-directories-mcp - Network accessline 7
homepage: https://github.com/brilliantdirectories/brilliant-directories-mcp - Network accessline 8
npm: https://www.npmjs.com/package/brilliant-directories-mcp - Network accessline 9
openapi: https://raw.githubusercontent.com/brilliantdirectories/brilliant-directories-mcp/main/mcp/openapi/bd-api.json - Network accessline 31
**The authoritative source for every available operation is the OpenAPI spec:** `https://raw.githubusercontent.com/brilliantdirectories/brilliant-directories-mcp/main/mcp/openapi/bd-api.json` - Network accessline 32
`https://raw.githubusercontent.com/brilliantdirectories/brilliant-directories-mcp/main/mcp/openapi/bd-api.json` - Network accessline 56
1. **Remote (no Node.js install):** add an MCP server to the AI client's config pointing at `https://brilliantmcp.com` with two headers — `X-Api-Key` (user's BD API key) and `X-BD-Site-URL` (user's BD site URL). This hits our hosted Cloudfl - Network accessline 65
**Getting an API key:** BD Admin > Developer Hub > Generate API Key (full walkthrough: https://support.brilliantdirectories.com/support/solutions/articles/12000088768). - Network accessline 69
If MCP isn't available but the agent can make authenticated HTTP requests: - Base URL: the user's BD site, full canonical URL with `www.` if applicable (e.g., `https://www.mysite.com`) — never hardcode, always ask - Network accessline 70
- Base URL: the user's BD site, full canonical URL with `www.` if applicable (e.g., `https://www.mysite.com`) — never hardcode, always ask - Network accessline 91
### Base URL pattern All endpoints live under `{site_url}/api/v2/{resource}/{action}` — e.g., `https://www.mysite.com/api/v2/user/get`. - Network accessline 92
All endpoints live under `{site_url}/api/v2/{resource}/{action}` — e.g., `https://www.mysite.com/api/v2/user/get`. - Network accessline 233
- **OpenAPI spec (live, authoritative):** https://raw.githubusercontent.com/brilliantdirectories/brilliant-directories-mcp/main/mcp/openapi/bd-api.json - Network accessline 234
- **Full endpoint docs (human-readable):** https://github.com/brilliantdirectories/brilliant-directories-mcp/tree/main/docs - Network accessline 235
- **npm package (MCP server):** https://www.npmjs.com/package/brilliant-directories-mcp - Network accessline 236
- **Issues / bug reports:** https://github.com/brilliantdirectories/brilliant-directories-mcp/issues - Network accessline 237
- **BD's own API documentation:** https://support.brilliantdirectories.com/support/solutions/articles/12000108045 - Network accessline 238
- **Generate an API key:** https://support.brilliantdirectories.com/support/solutions/articles/12000088768 - Network accessline 244
**Easy (no Node.js install):** Add an MCP server to their AI client's config pointing at `https://brilliantmcp.com` with two headers:
bd-skill-content/content-types/blog.md
- Network accessline 186
When opted in: 1 inline body image per 300-500 words (excluding the feature image). Image float: `class="fr-dib fr-fil img-rounded"` (left) or `class="fr-dib fr-fir img-rounded"` (right) + inline `style="width: 350px;"` on the `<img>`. Sour
bd-skill-content/content-types/jobs.md
- Network accessline 26
- **6a. Shortfall queries — fewer than five pooled →** five new-angle WebSearch shapes ride this same message — untried facets on untried source classes: `site:jobs.ashbyhq.com <occupation>`, `site:jobs.smartrecruiters.com <occupation>`, `< - Network accessline 27
- **6b. The compound and probes** — per the `Dedup` section: every keyed candidate from any search or fetch so far aboard. Once a candidate shows its title, its research stops until it survives Step 7. Results yielding a single keyed candid - Network accessline 28
7. **Duplicate detection.** Stage 2's calls fired with Step 6's message — compare the returned rows and write the verdicts per METHODOLOGY `Stage 2: Duplicate detection` and the `Dedup` section's jobs-specific match criteria. Dupes drop fro
bd-skill-content/flattened/blog.system.md
- Network accessline 224
| -------- | ------------------------------------------------------------------------------------- | | Internal | `<a href="/..." title="<descriptive>">text</a>` (no rel, no target) | | External | `<a href="https://..." ti - Network accessline 226
| External | `<a href="https://..." title="<descriptive>" rel="noopener" target="_blank">text</a>` | - Network accessline 276
**Step 2 — Dimension-check the whole pool.** Take every `/photo/<slug>-<id>/` result from all searches, build each canonical URL `https://images.pexels.com/photos/<id>/pexels-photo-<id>.jpeg`, and pass them ALL into ONE `getImageDimensions - Network accessline 398
`<admin_edit_url>` **verbatim shape — DO NOT paraphrase:** `https://ww2.managemydirectory.com/admin/viewPosts.php?search[value]=<post_id>&data_type=<data_type>&data_id=<data_id>&newsite=<website_id>`. Host fixed. All four params required (` - Network accessline 412
"post_type_name": "Event", "post_title": "Tampa Sunrise 5K", "post_url": "https://site.com/events/tampa-sunrise-5k", - Network accessline 413
"post_title": "Tampa Sunrise 5K", "post_url": "https://site.com/events/tampa-sunrise-5k", "post_author_id": 5 - Network accessline 414
"post_url": "https://site.com/events/tampa-sunrise-5k", - Network accessline 780
|---|---| | Internal | `<a href="/..." title="<descriptive>">text</a>` (no rel, no target) | | External | `<a href="https://..." title="<descriptive>" rel="noopener" target="_blank">text</a>` | - Network accessline 782
| External | `<a href="https://..." title="<descriptive>" rel="noopener" target="_blank">text</a>` | - Network accessline 1012
When opted in: 1 inline body image per 300-500 words (excluding the feature image). Image float: `class="fr-dib fr-fil img-rounded"` (left) or `class="fr-dib fr-fir img-rounded"` (right) + inline `style="width: 350px;"` on the `<img>`. Sour
bd-skill-content/flattened/events.system.md
- Network accessline 224
| -------- | ------------------------------------------------------------------------------------- | | Internal | `<a href="/..." title="<descriptive>">text</a>` (no rel, no target) | | External | `<a href="https://..." ti - Network accessline 226
| External | `<a href="https://..." title="<descriptive>" rel="noopener" target="_blank">text</a>` | - Network accessline 276
**Step 2 — Dimension-check the whole pool.** Take every `/photo/<slug>-<id>/` result from all searches, build each canonical URL `https://images.pexels.com/photos/<id>/pexels-photo-<id>.jpeg`, and pass them ALL into ONE `getImageDimensions - Network accessline 398
`<admin_edit_url>` **verbatim shape — DO NOT paraphrase:** `https://ww2.managemydirectory.com/admin/viewPosts.php?search[value]=<post_id>&data_type=<data_type>&data_id=<data_id>&newsite=<website_id>`. Host fixed. All four params required (` - Network accessline 412
"post_type_name": "Event", "post_title": "Tampa Sunrise 5K", "post_url": "https://site.com/events/tampa-sunrise-5k", - Network accessline 413
"post_title": "Tampa Sunrise 5K", "post_url": "https://site.com/events/tampa-sunrise-5k", "post_author_id": 5 - Network accessline 414
"post_url": "https://site.com/events/tampa-sunrise-5k", - Network accessline 780
|---|---| | Internal | `<a href="/..." title="<descriptive>">text</a>` (no rel, no target) | | External | `<a href="https://..." title="<descriptive>" rel="noopener" target="_blank">text</a>` | - Network accessline 782
| External | `<a href="https://..." title="<descriptive>" rel="noopener" target="_blank">text</a>` | - Network accessline 843
The geocoder is uneven — over-scoped queries (venue + street + city + region + zip + country) miss; medium-scoped queries (venue + city + region OR street + city + region) hit. Spelled-out state names beat 2-letter codes (`"Florida"` not `"
bd-skill-content/flattened/jobs.system.md
- Network accessline 224
| -------- | ------------------------------------------------------------------------------------- | | Internal | `<a href="/..." title="<descriptive>">text</a>` (no rel, no target) | | External | `<a href="https://..." ti - Network accessline 226
| External | `<a href="https://..." title="<descriptive>" rel="noopener" target="_blank">text</a>` | - Network accessline 276
**Step 2 — Dimension-check the whole pool.** Take every `/photo/<slug>-<id>/` result from all searches, build each canonical URL `https://images.pexels.com/photos/<id>/pexels-photo-<id>.jpeg`, and pass them ALL into ONE `getImageDimensions - Network accessline 398
`<admin_edit_url>` **verbatim shape — DO NOT paraphrase:** `https://ww2.managemydirectory.com/admin/viewPosts.php?search[value]=<post_id>&data_type=<data_type>&data_id=<data_id>&newsite=<website_id>`. Host fixed. All four params required (` - Network accessline 412
"post_type_name": "Event", "post_title": "Tampa Sunrise 5K", "post_url": "https://site.com/events/tampa-sunrise-5k", - Network accessline 413
"post_title": "Tampa Sunrise 5K", "post_url": "https://site.com/events/tampa-sunrise-5k", "post_author_id": 5 - Network accessline 414
"post_url": "https://site.com/events/tampa-sunrise-5k", - Network accessline 780
|---|---| | Internal | `<a href="/..." title="<descriptive>">text</a>` (no rel, no target) | | External | `<a href="https://..." title="<descriptive>" rel="noopener" target="_blank">text</a>` | - Network accessline 782
| External | `<a href="https://..." title="<descriptive>" rel="noopener" target="_blank">text</a>` | - Network accessline 843
The geocoder is uneven — over-scoped queries (venue + street + city + region + zip + country) miss; medium-scoped queries (venue + city + region OR street + city + region) hit. Spelled-out state names beat 2-letter codes (`"Florida"` not `" - Network accessline 904
- **6a. Shortfall queries — fewer than five pooled →** five new-angle WebSearch shapes ride this same message — untried facets on untried source classes: `site:jobs.ashbyhq.com <occupation>`, `site:jobs.smartrecruiters.com <occupation>`, `< - Network accessline 905
- **6b. The compound and probes** — per the `Dedup` section: every keyed candidate from any search or fetch so far aboard. Once a candidate shows its title, its research stops until it survives Step 7. Results yielding a single keyed candid - Network accessline 906
7. **Duplicate detection.** Stage 2's calls fired with Step 6's message — compare the returned rows and write the verdicts per METHODOLOGY `Stage 2: Duplicate detection` and the `Dedup` section's jobs-specific match criteria. Dupes drop fro
bd-skill-content/shared/GEOCODING.md
- Network accessline 17
The geocoder is uneven — over-scoped queries (venue + street + city + region + zip + country) miss; medium-scoped queries (venue + city + region OR street + city + region) hit. Spelled-out state names beat 2-letter codes (`"Florida"` not `"
bd-skill-content/shared/METHODOLOGY.md
- Network accessline 166
| -------- | ------------------------------------------------------------------------------------- | | Internal | `<a href="/..." title="<descriptive>">text</a>` (no rel, no target) | | External | `<a href="https://..." ti - Network accessline 168
| External | `<a href="https://..." title="<descriptive>" rel="noopener" target="_blank">text</a>` | - Network accessline 218
**Step 2 — Dimension-check the whole pool.** Take every `/photo/<slug>-<id>/` result from all searches, build each canonical URL `https://images.pexels.com/photos/<id>/pexels-photo-<id>.jpeg`, and pass them ALL into ONE `getImageDimensions - Network accessline 340
`<admin_edit_url>` **verbatim shape — DO NOT paraphrase:** `https://ww2.managemydirectory.com/admin/viewPosts.php?search[value]=<post_id>&data_type=<data_type>&data_id=<data_id>&newsite=<website_id>`. Host fixed. All four params required (` - Network accessline 354
"post_type_name": "Event", "post_title": "Tampa Sunrise 5K", "post_url": "https://site.com/events/tampa-sunrise-5k", - Network accessline 355
"post_title": "Tampa Sunrise 5K", "post_url": "https://site.com/events/tampa-sunrise-5k", "post_author_id": 5 - Network accessline 356
"post_url": "https://site.com/events/tampa-sunrise-5k",
bd-skill-content/shared/URL-PATTERNS.md
- Network accessline 155
|---|---| | Internal | `<a href="/..." title="<descriptive>">text</a>` (no rel, no target) | | External | `<a href="https://..." title="<descriptive>" rel="noopener" target="_blank">text</a>` | - Network accessline 157
| External | `<a href="https://..." title="<descriptive>" rel="noopener" target="_blank">text</a>` |
docs/api-categories.md
- Network accessline 8
_Source: https://support.brilliantdirectories.com/support/solutions/articles/12000108057_
docs/api-clicks.md
docs/api-data-types.md
docs/api-email-templates.md
docs/api-form-fields.md
docs/api-forms.md
docs/api-lead-matches.md
docs/api-leads.md
- Network accessline 1
# BD API — Leads Endpoints _Source: https://support.brilliantdirectories.com/support/solutions/articles/12000108049_ - Network accessline 2
_Source: https://support.brilliantdirectories.com/support/solutions/articles/12000108049_ - Network accessline 4
**Related support articles:** - https://support.brilliantdirectories.com/support/solutions/articles/12000091106 (How to Edit Lead Data with API Calls) - Network accessline 5
- https://support.brilliantdirectories.com/support/solutions/articles/12000091106 (How to Edit Lead Data with API Calls)
docs/api-membership-plans.md
docs/api-menu-items.md
docs/api-menus.md
docs/api-pages.md
- Network accessline 8
_Source: https://support.brilliantdirectories.com/support/solutions/articles/12000108123_
docs/api-portfolio-groups.md
- Network accessline 8
**Related support articles:** - https://support.brilliantdirectories.com/support/solutions/articles/12000108051 (Multi Image Posts / Album Groups reference — primary source) - Network accessline 9
- https://support.brilliantdirectories.com/support/solutions/articles/12000108051 (Multi Image Posts / Album Groups reference — primary source) - Network accessline 10
- https://support.brilliantdirectories.com/support/solutions/articles/12000093239 (Member Posts API — confirms `auto_image_import` support across both post families) - Network accessline 59
auto_image_import=1) → returns group_id=42 3. createMultiImagePostPhoto(user_id=X, group_id=42, original_image_url="https://source.com/pic1.jpg") → photo 1 - Network accessline 60
3. createMultiImagePostPhoto(user_id=X, group_id=42, original_image_url="https://source.com/pic1.jpg") → photo 1 4. createMultiImagePostPhoto(user_id=X, group_id=42, - Network accessline 61
original_image_url="https://source.com/pic1.jpg") → photo 1 - Network accessline 62
4. createMultiImagePostPhoto(user_id=X, group_id=42, original_image_url="https://source.com/pic2.jpg") → photo 2 5. ...repeat for each photo - Network accessline 63
original_image_url="https://source.com/pic2.jpg") → photo 2
docs/api-portfolio-photos.md
- Network accessline 8
**Related support articles:** - https://support.brilliantdirectories.com/support/solutions/articles/12000108052 (primary source) - Network accessline 9
- https://support.brilliantdirectories.com/support/solutions/articles/12000108052 (primary source) - Network accessline 10
- https://support.brilliantdirectories.com/support/solutions/articles/12000093239 (Member Posts API — covers both post families and their image-handling)
docs/api-post-types.md
docs/api-posts.md
- Network accessline 8
**Related support articles:** - https://support.brilliantdirectories.com/support/solutions/articles/12000108050 (Data Posts reference — primary source) - Network accessline 9
- https://support.brilliantdirectories.com/support/solutions/articles/12000108050 (Data Posts reference — primary source) - Network accessline 10
- https://support.brilliantdirectories.com/support/solutions/articles/12000093239 (Member Posts API — confirms `auto_image_import` support across both post families)
docs/api-redirects.md
- Network accessline 1
# BD API — Redirects (redirect_301) Endpoints _Source: https://support.brilliantdirectories.com/support/solutions/articles/12000108112_ - Network accessline 2
_Source: https://support.brilliantdirectories.com/support/solutions/articles/12000108112_ - Network accessline 51
- URLs should be relative to the domain root (`old-page`, `/new-page`), not absolute URLs (`https://site.com/old-page`).
docs/api-reviews.md
- Network accessline 1
# BD API — User Reviews Endpoints _Source: https://support.brilliantdirectories.com/support/solutions/articles/12000108053_ - Network accessline 2
_Source: https://support.brilliantdirectories.com/support/solutions/articles/12000108053_ - Network accessline 4
**Related support articles:** - https://support.brilliantdirectories.com/support/solutions/articles/12000097913 (How to Edit Reviews Data with API Calls) - Network accessline 5
- https://support.brilliantdirectories.com/support/solutions/articles/12000097913 (How to Edit Reviews Data with API Calls)
docs/api-services.md
- Network accessline 8
_Source: https://support.brilliantdirectories.com/support/solutions/articles/12000108122_
docs/api-smart-lists.md
docs/api-tag-groups.md
docs/api-tag-relationships.md
docs/api-tag-types.md
docs/api-tags.md
docs/api-unsubscribe.md
- Network accessline 1
# BD API — Unsubscribe List Endpoints _Source: https://support.brilliantdirectories.com/support/solutions/articles/12000108055_ - Network accessline 2
_Source: https://support.brilliantdirectories.com/support/solutions/articles/12000108055_ - Network accessline 4
**Related support articles:** - https://support.brilliantdirectories.com/support/solutions/articles/12000102546 (Unsubscribe API) - Network accessline 5
- https://support.brilliantdirectories.com/support/solutions/articles/12000102546 (Unsubscribe API)
docs/api-user-meta.md
docs/api-user-photos.md
docs/api-user-services.md
- Network accessline 8
_Source: https://support.brilliantdirectories.com/support/solutions/articles/12000108071_
docs/api-users.md
- Network accessline 1
# BD API — Users Endpoints _Source: https://support.brilliantdirectories.com/support/solutions/articles/12000108047_ - Network accessline 2
_Source: https://support.brilliantdirectories.com/support/solutions/articles/12000108047_ - Network accessline 4
**Related support articles:** - https://support.brilliantdirectories.com/support/solutions/articles/12000091105 (How to Edit Member Data with API Calls) - Network accessline 5
- https://support.brilliantdirectories.com/support/solutions/articles/12000091105 (How to Edit Member Data with API Calls) - Network accessline 6
- https://support.brilliantdirectories.com/support/solutions/articles/12000103947 (Users API — How to Manage Users with API Calls) - Network accessline 34
**Example:** - Site: `https://yoursite.example.com` - Network accessline 35
- Site: `https://yoursite.example.com` - Network accessline 37
- Full URL: `https://yoursite.example.com/united-states/monterey-park/doctor/jane-doe-m-d` - Network accessline 43
The user schema has three image-URL fields: `profile_photo`, `logo`, `cover_photo`. By default, BD **stores whatever URL you pass as-is** — if you pass `https://example.com/scraped-logo.png`, that exact URL is used when rendering the member - Network accessline 56
[Credential-related source omitted] - Network accessline 57
"subscription_id": 1, "logo": "https://source-site.com/images/logo.png", "auto_image_import": "1" - Network accessline 58
"logo": "https://source-site.com/images/logo.png", - Network accessline 79
### Validation behaviors - URL fields (`website`, `booking_link`, `blog`, `facebook`, `twitter`, `linkedin`, `instagram`, etc.) are validated on write; invalid formats are silently skipped (not rejected — the rest of the payload still saves - Network accessline 80
- URL fields (`website`, `booking_link`, `blog`, `facebook`, `twitter`, `linkedin`, `instagram`, etc.) are validated on write; invalid formats are silently skipped (not rejected — the rest of the payload still saves). Must start with `http:
docs/api-widgets.md
- Network accessline 8
**Related support articles:** - https://support.brilliantdirectories.com/support/solutions/articles/12000108056 (primary API Reference — Widgets) - Network accessline 9
- https://support.brilliantdirectories.com/support/solutions/articles/12000108056 (primary API Reference — Widgets) - Network accessline 10
- https://support.brilliantdirectories.com/support/solutions/articles/12000103396 (Widgets API — How to edit widgets data with API Calls)
glama.json
mcp/README.md
- Network accessline 3
[](https://www.npmjs.com/package/brilliant-directories-mcp) - Network accessline 4
[](LICENSE) - Network accessline 5
[](https://modelcontextprotocol.io) - Network accessline 15
1. **Your BD site URL.** Use the full canonical URL exactly as it loads in a browser — include `https://` (or `http://` if your site has no SSL), include `www.` if your site uses it, no trailing slash. - Network accessline 16
- ✅ `https://www.mysite.com` (most BD sites) - Network accessline 17
- ✅ `https://mysite.com` (only if your site has no `www.`) - Network accessline 18
- ✅ `http://mysite.com` (HTTP-only sites — protocol respected) - Network accessline 19
- ❌ `mysite.com` (missing protocol) - ❌ `https://mysite.com/` (trailing slash) - ❌ `https://mysite.com` if the site actually serves at `www.mysite.com` — use the form your site canonically responds at - Network accessline 20
- ❌ `https://mysite.com/` (trailing slash) - Network accessline 21
- ❌ `https://mysite.com` if the site actually serves at `www.mysite.com` — use the form your site canonically responds at - Network accessline 26
<a href="https://support.brilliantdirectories.com/support/solutions/articles/12000088768" target="_blank" rel="noopener noreferrer">Full walkthrough: How to Create an API Key</a>. - Network accessline 28
3. **Node.js — only for the Advanced path** (see below). Not needed for the Easy path. If you need it, one-time install from <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a> (click `Get Node.js®` to down - Network accessline 64
- [Zapier](#zapier) - [Abacus.AI (ChatLLM Agent)](#abacusai-chatllm-agent) - [curl / any HTTP client](#curl--any-http-client) - Network accessline 65
- [Abacus.AI (ChatLLM Agent)](#abacusai-chatllm-agent) - [curl / any HTTP client](#curl--any-http-client) - [What you can ask the AI](#what-you-can-ask-the-ai) - Network accessline 66
- [curl / any HTTP client](#curl--any-http-client) - Network accessline 88
- **🚀 Easy config block** — points at our hosted MCP at `https://brilliantmcp.com`. No Node.js, no install, no terminal. Starts working the moment you save and restart your AI app. - Network accessline 91
**Needs Node.js installed first** — get it from <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a> (click `Get Node.js®` to download, then click `Windows Installer (.msi)` — Mac: `macOS Installer` — and DO - Network accessline 101
"mcpServers": { "brilliant-directories": { "url": "https://brilliantmcp.com", - Network accessline 102
"brilliant-directories": { "url": "https://brilliantmcp.com", "headers": { - Network accessline 103
"url": "https://brilliantmcp.com", - Network accessline 104
[Credential-related source omitted] - Network accessline 105
[Credential-related source omitted] - Access to secretsline 105
[Credential-related source omitted] - Network accessline 106
"X-BD-Site-URL": "https://www.your-site.com" - Network accessline 113
[Credential-related source omitted] - Access to secretsline 113
[Credential-related source omitted] - Network accessline 123
> ⚠<U+FE0F> **STEP 1 — Install Node.js FIRST** (the Advanced path runs an `npx` command on your machine): > - Go to <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a> → click **Get Node.js®** > - Download: **Wind - Network accessline 124
> - Go to <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a> → click **Get Node.js®** > - Download: **Windows Installer (.msi)** or **macOS Installer** > - Double-click the file → click Next through every - Network accessline 142
"brilliant-directories-mcp@latest", "--api-key", "ENTER_API_KEY", "--url", "https://www.your-site.com" - Network accessline 143
[Credential-related source omitted] - Access to secretsline 143
[Credential-related source omitted] - Network accessline 144
"--url", "https://www.your-site.com" - Network accessline 161
> ⚠<U+FE0F> **Windows users:** install Claude Desktop from <a href="https://claude.ai/download" target="_blank" rel="noopener noreferrer">claude.ai/download</a>, NOT the Microsoft Store (the Store version sandboxes the config file). - Network accessline 163
> **Banner saying "Tool result could not be submitted… connection interrupted"?** Cosmetic UI bug across every MCP connector ([anthropics/claude-code #51874](https://github.com/anthropics/claude-code/issues/51874)) — your tools still work. - Network accessline 165
> ⚠<U+FE0F> **STEP 1 — Install Node.js FIRST** (before pasting the config below): > - Go to <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a> → click **Get Node.js®** > - Download: **Windows Installer (.msi)** o - Network accessline 166
> - Go to <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a> → click **Get Node.js®** > - Download: **Windows Installer (.msi)** or **macOS Installer** > - Double-click the file → click Next through every - Network accessline 194
"brilliant-directories-mcp@latest", "--api-key", "ENTER_API_KEY", "--url", "https://www.your-site.com" - Network accessline 195
[Credential-related source omitted] - Access to secretsline 195
[Credential-related source omitted] - Network accessline 196
"--url", "https://www.your-site.com" - Network accessline 203
[Credential-related source omitted] - Access to secretsline 203
[Credential-related source omitted] - Network accessline 236
"brilliant-directories-mcp@latest", "--api-key", "ENTER_API_KEY", "--url", "https://www.your-site.com" - Network accessline 237
[Credential-related source omitted] - Access to secretsline 237
[Credential-related source omitted] - Network accessline 238
"--url", "https://www.your-site.com" - Network accessline 245
[Credential-related source omitted] - Access to secretsline 245
[Credential-related source omitted] - Network accessline 247
> **Paste your final file into <a href="https://jsonlint.com" target="_blank" rel="noopener noreferrer">jsonlint.com</a> before restarting to ensure correct formatting.** - Network accessline 263
> **Not connected?** Check **Settings → Developer → MCP servers** for the error. Common causes: > - JSON typo — paste your file into <a href="https://jsonlint.com" target="_blank" rel="noopener noreferrer">jsonlint.com</a> - Network accessline 264
> - JSON typo — paste your file into <a href="https://jsonlint.com" target="_blank" rel="noopener noreferrer">jsonlint.com</a> - Network accessline 265
> - Wrong API key, or URL missing `https://` / has trailing slash - Network accessline 281
1. **Node.js** — from <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a> (click `Get Node.js®` → `Windows Installer (.msi)` or `macOS Installer` → double-click to install, click Next through the prompts). - Access to secretsline 301
[Credential-related source omitted] - Network accessline 308
[Credential-related source omitted] - Access to secretsline 308
[Credential-related source omitted] - Access to secretsline 309
[Credential-related source omitted] - Network accessline 310
--header "X-BD-Site-URL: https://www.your-site.com" - Network accessline 313
[Credential-related source omitted] - Access to secretsline 313
[Credential-related source omitted] - Network accessline 318
[Credential-related source omitted] - Access to secretsline 318
[Credential-related source omitted] - Network accessline 347
> ⚠<U+FE0F> **STEP 1 — Install Node.js FIRST** (before editing the config below): > - Go to <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a> → click **Get Node.js®** > - Download: **Windows Installer (.msi)** o - Network accessline 348
> - Go to <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a> → click **Get Node.js®** > - Download: **Windows Installer (.msi)** or **macOS Installer** > - Double-click the file → click Next through every - Network accessline 365
"brilliant-directories-mcp@latest", "--api-key", "ENTER_API_KEY", "--url", "https://www.your-site.com" - Network accessline 366
[Credential-related source omitted] - Access to secretsline 366
[Credential-related source omitted] - Network accessline 367
"--url", "https://www.your-site.com" - Network accessline 374
[Credential-related source omitted] - Access to secretsline 374
[Credential-related source omitted] - Network accessline 383
[Credential-related source omitted] - Access to secretsline 383
[Credential-related source omitted] - Network accessline 401
**1. Download Codex Desktop** from <a href="https://chatgpt.com/codex/get-started/" target="_blank" rel="noopener noreferrer">chatgpt.com/codex/get-started</a> and install it. - Network accessline 412
|---|---| | **Name** | `Brilliant Directories` (or any label) | | **URL** | `https://brilliantmcp.com` | - Network accessline 413
| **Name** | `Brilliant Directories` (or any label) | | **URL** | `https://brilliantmcp.com` | | **Bearer token env var** | *leave empty — don't touch* | - Network accessline 414
| **URL** | `https://brilliantmcp.com` | - Network accessline 418
| *Click **+ Add header** to add the second row* | | | **Headers** — Key (row 2) | `X-BD-Site-URL` | | **Headers** — Value (row 2) | `https://www.your-site.com` | - Network accessline 419
| **Headers** — Key (row 2) | `X-BD-Site-URL` | | **Headers** — Value (row 2) | `https://www.your-site.com` | | **Headers from environment variables** | *leave empty — don't touch* | - Network accessline 420
| **Headers** — Value (row 2) | `https://www.your-site.com` | - Network accessline 427
> ⚠<U+FE0F> **STEP 1 — Install Node.js FIRST** (before pasting the config below): > - Go to <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a> → click **Get Node.js®** > - Download: **Windows Installer (.msi)** o - Network accessline 428
> - Go to <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a> → click **Get Node.js®** > - Download: **Windows Installer (.msi)** or **macOS Installer** > - Double-click the file → click Next through every - Network accessline 444
| **Arguments** — Row 4 | your BD API key | | **Arguments** — Row 5 | `--url` | | **Arguments** — Row 6 | `https://www.your-site.com` | - Network accessline 445
| **Arguments** — Row 5 | `--url` | | **Arguments** — Row 6 | `https://www.your-site.com` | | **Environment variables** | *leave empty — don't touch* | - Network accessline 446
| **Arguments** — Row 6 | `https://www.your-site.com` | - Network accessline 479
"mcpServers": { "brilliant-directories": { "serverUrl": "https://brilliantmcp.com", - Network accessline 480
"brilliant-directories": { "serverUrl": "https://brilliantmcp.com", "headers": { - Network accessline 481
"serverUrl": "https://brilliantmcp.com", - Network accessline 482
[Credential-related source omitted] - Network accessline 483
[Credential-related source omitted] - Access to secretsline 483
[Credential-related source omitted] - Network accessline 484
"X-BD-Site-URL": "https://www.your-site.com" - Network accessline 493
> ⚠<U+FE0F> **STEP 1 — Install Node.js FIRST** (before pasting the config below): > - Go to <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a> → click **Get Node.js®** > - Download: **Windows Installer (.msi)** o - Network accessline 494
> - Go to <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a> → click **Get Node.js®** > - Download: **Windows Installer (.msi)** or **macOS Installer** > - Double-click the file → click Next through every - Network accessline 508
"brilliant-directories-mcp@latest", "--api-key", "ENTER_API_KEY", "--url", "https://www.your-site.com" - Network accessline 509
[Credential-related source omitted] - Access to secretsline 509
[Credential-related source omitted] - Network accessline 510
"--url", "https://www.your-site.com" - Network accessline 517
[Credential-related source omitted] - Access to secretsline 517
[Credential-related source omitted] - Network accessline 537
"mcpServers": { "brilliant-directories": { "url": "https://brilliantmcp.com", - Network accessline 538
"brilliant-directories": { "url": "https://brilliantmcp.com", "headers": { - Network accessline 539
"url": "https://brilliantmcp.com", - Network accessline 540
[Credential-related source omitted] - Network accessline 541
[Credential-related source omitted] - Access to secretsline 541
[Credential-related source omitted] - Network accessline 542
"X-BD-Site-URL": "https://www.your-site.com" - Network accessline 551
> ⚠<U+FE0F> **STEP 1 — Install Node.js FIRST** (before pasting the config below): > - Go to <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a> → click **Get Node.js®** > - Download: **Windows Installer (.msi)** o - Network accessline 552
> - Go to <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a> → click **Get Node.js®** > - Download: **Windows Installer (.msi)** or **macOS Installer** > - Double-click the file → click Next through every - Network accessline 566
"brilliant-directories-mcp@latest", "--api-key", "ENTER_API_KEY", "--url", "https://www.your-site.com" - Network accessline 567
[Credential-related source omitted] - Access to secretsline 567
[Credential-related source omitted] - Network accessline 568
"--url", "https://www.your-site.com" - Network accessline 575
[Credential-related source omitted] - Access to secretsline 575
[Credential-related source omitted] - Network accessline 595
> ⚠<U+FE0F> **STEP 1 — Install Node.js FIRST** (the Cursor Directory installer wires up an `npx` child process): > - Go to <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a> → click **Get Node.js®** > - Download: - Network accessline 596
> - Go to <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a> → click **Get Node.js®** > - Download: **Windows Installer (.msi)** or **macOS Installer** > - Double-click the file → click Next through every - Network accessline 602
1. **Open** → <a href="https://cursor.directory/plugins/brilliant-directories" target="_blank" rel="noopener noreferrer">cursor.directory/plugins/brilliant-directories</a> - Network accessline 615
|---|---| | `BD_API_KEY` | your BD API key | | `BD_SITE_URL` | `https://www.your-site.com` — include `https://`, no trailing slash | - Access to secretsline 616
[Credential-related source omitted] - Network accessline 617
| `BD_SITE_URL` | `https://www.your-site.com` — include `https://`, no trailing slash | - Network accessline 644
3. In the sidebar, click **Tools & MCP**. 4. Click **New MCP Server**. 5. Paste [the config block](#the-config-block). Replace `ENTER_API_KEY` with your BD API key and `https://www.your-site.com` with your BD site URL. - Network accessline 645
4. Click **New MCP Server**. 5. Paste [the config block](#the-config-block). Replace `ENTER_API_KEY` with your BD API key and `https://www.your-site.com` with your BD site URL. 6. **Click Save, then fully quit and reopen Cursor.** Saving al - Network accessline 646
[Credential-related source omitted] - Access to secretsline 646
[Credential-related source omitted] - Network accessline 660
- If "Folder doesn't exist": navigate to `~/` and create a new folder named exactly `.cursor` (leading dot). Retry. 4. Inside `.cursor`, open `mcp.json` in TextEdit / any text editor. If missing: create it. TextEdit users: File → New → Form - Network accessline 662
[Credential-related source omitted] - Access to secretsline 662
[Credential-related source omitted] - Network accessline 669
3. Inside `.cursor`, open `mcp.json` in Notepad. If missing: right-click empty area → **New** → **Text Document** → rename to `mcp.json` (click Yes to the extension warning). - Can't see `.txt` / `.json` extensions? File Explorer → **Vie - Network accessline 671
[Credential-related source omitted] - Access to secretsline 671
[Credential-related source omitted] - Network accessline 684
|---|---| | **Server Transport** | `Server Sent Events (Deprecated)` | | **MCP Endpoint URL** | `https://brilliantmcp.com/sse` | - Network accessline 685
| **Server Transport** | `Server Sent Events (Deprecated)` | | **MCP Endpoint URL** | `https://brilliantmcp.com/sse` | | **Authentication** | `Multiple Headers Auth` | - Network accessline 686
| **MCP Endpoint URL** | `https://brilliantmcp.com/sse` | - Network accessline 687
| **Authentication** | `Multiple Headers Auth` | | **Header 1** | Name: `X-Api-Key` · Value: *your 32-char hex BD API key* | | **Header 2** | Name: `X-BD-Site-URL` · Value: `https://www.your-site.com` | - Network accessline 689
| **Header 2** | Name: `X-BD-Site-URL` · Value: `https://www.your-site.com` | - Network accessline 694
> - The MCP spec deprecated SSE in favor of HTTP Streamable > - n8n's SSE client works today against our server > - n8n's HTTP Streamable client has <a href="https://github.com/n8n-io/n8n/issues/28924" target="_blank" rel="noopener noreferr - Network accessline 695
> - n8n's SSE client works today against our server > - n8n's HTTP Streamable client has <a href="https://github.com/n8n-io/n8n/issues/28924" target="_blank" rel="noopener noreferrer">known upstream bugs</a> we filed > - Our server supports - Network accessline 696
> - n8n's HTTP Streamable client has <a href="https://github.com/n8n-io/n8n/issues/28924" target="_blank" rel="noopener noreferrer">known upstream bugs</a> we filed - Network accessline 697
> - Our server supports BOTH transports — when n8n fixes their HTTP Streamable client, you can switch to `https://brilliantmcp.com` (no `/sse` path) with Transport = `HTTP Streamable`. No server changes needed. - Network accessline 699
> **Why `https://brilliantmcp.com/sse`?** The main `brilliantdirectories.com` domain has zone-level security rules (bot challenges, geo blocks) that protect our marketing site but silently blocked n8n's SSE handshake. `brilliantmcp.com` is - Network accessline 705
https://raw.githubusercontent.com/brilliantdirectories/brilliant-directories-mcp/main/mcp/openapi/bd-api.json - Network accessline 709
[Credential-related source omitted] - Access to secretsline 709
[Credential-related source omitted] - Network accessline 711
**Want to verify the server is healthy yourself?** Install the official <a href="https://github.com/modelcontextprotocol/inspector" target="_blank" rel="noopener noreferrer">MCP Inspector</a> (`npx @modelcontextprotocol/inspector`) and poin - Network accessline 717
Make.com ships an **MCP Client** app (currently Open Beta) that connects to remote MCP servers — see <a href="https://apps.make.com/mcp-client" target="_blank" rel="noopener noreferrer">Make's MCP Client docs</a>. To connect it to our Worke - Network accessline 719
1. Add the **MCP Client** module to your scenario, click **Create a connection**. 2. Click **+ New MCP Server** (we're not yet on Make's verified-servers list). 3. **URL:** `https://brilliantmcp.com` - Network accessline 720
[Credential-related source omitted] - Network accessline 721
3. **URL:** `https://brilliantmcp.com` - Network accessline 727
**Fallback path (works today, every BD operation):** use Make's standard **HTTP** module against `https://www.your-site.com/api/v2/*` with these headers: - Network accessline 730
[Credential-related source omitted] - Network accessline 731
X-BD-Site-URL: https://www.your-site.com - Network accessline 744
[Credential-related source omitted] - Network accessline 746
[Credential-related source omitted] - Network accessline 752
Abacus AI Agent supports MCP servers — both stdio (npm) and remote (URL) — via its **Configure MCP** page (Agent Settings → MCP Server Config). See <a href="https://abacus.ai/help/chatllm-ai-super-assistant/mcp-servers" target="_blank" rel= - Network accessline 763
"brilliant-directories-mcp@latest", "--api-key", "ENTER_API_KEY", "--url", "https://www.your-site.com" - Network accessline 764
[Credential-related source omitted] - Access to secretsline 764
[Credential-related source omitted] - Network accessline 765
"--url", "https://www.your-site.com" - Network accessline 771
[Credential-related source omitted] - Access to secretsline 771
[Credential-related source omitted] - Network accessline 776
{ "brilliant-directories": { "url": "https://brilliantmcp.com", - Network accessline 777
"brilliant-directories": { "url": "https://brilliantmcp.com", "headers": { - Network accessline 778
"url": "https://brilliantmcp.com", - Network accessline 779
[Credential-related source omitted] - Network accessline 780
[Credential-related source omitted] - Access to secretsline 780
[Credential-related source omitted] - Network accessline 781
"X-BD-Site-URL": "https://www.your-site.com" - Network accessline 793
### curl / Any HTTP Client - Network accessline 795
[Credential-related source omitted] - Access to secretsline 795
[Credential-related source omitted] - Network accessline 797
> **Why these examples only need `X-Api-Key` (and not `X-BD-Site-URL`):** these calls go DIRECTLY to your BD site (`your-site.com/api/v2/...`), bypassing the MCP Worker. The `X-BD-Site-URL` header is only needed when calling the hosted Work - Network accessline 800
[Credential-related source omitted] - Network accessline 801
[Credential-related source omitted] - Access to secretsline 801
[Credential-related source omitted] - Network accessline 803
[Credential-related source omitted] - Network accessline 804
[Credential-related source omitted] - Access to secretsline 804
[Credential-related source omitted] - Network accessline 806
[Credential-related source omitted] - Network accessline 807
[Credential-related source omitted] - Access to secretsline 807
[Credential-related source omitted] - Network accessline 809
https://www.your-site.com/api/v2/user/create - Network accessline 811
[Credential-related source omitted] - Network accessline 812
[Credential-related source omitted] - Access to secretsline 812
[Credential-related source omitted] - Network accessline 814
https://www.your-site.com/api/v2/user/search - Network accessline 816
[Credential-related source omitted] - Network accessline 817
[Credential-related source omitted] - Access to secretsline 817
[Credential-related source omitted] - Network accessline 819
https://www.your-site.com/api/v2/user/update - Network accessline 848
Get the latest skill zip from the GitHub Releases page: **[bd-skill-content.zip](https://github.com/brilliantdirectories/brilliant-directories-mcp/releases/latest)**. - Network accessline 852
1. Open claude.ai → Settings → Customize → Skills → Upload Skill. 2. Upload the `bd-skill-content.zip` file you downloaded. 3. Ensure your BD MCP is connected (either the hosted `https://brilliantmcp.com` or the npm-installed local server). - Network accessline 853
2. Upload the `bd-skill-content.zip` file you downloaded. 3. Ensure your BD MCP is connected (either the hosted `https://brilliantmcp.com` or the npm-installed local server). 4. Start a chat and tell Claude what you want: "create event post - Network accessline 854
3. Ensure your BD MCP is connected (either the hosted `https://brilliantmcp.com` or the npm-installed local server). - Network accessline 889
[Credential-related source omitted] - Access to secretsline 889
[Credential-related source omitted] - Network accessline 891
[Credential-related source omitted] - Access to secretsline 891
[Credential-related source omitted] - Network accessline 897
[Credential-related source omitted] - Access to secretsline 897
[Credential-related source omitted] - Network accessline 905
- **`401 Unauthorized`** — API key is wrong, revoked, or lacks permission for the endpoint. Regenerate in BD Admin → Developer Hub. - **`403 API Key does not have permission to access this endpoint`** — this specific endpoint isn't granted - Network accessline 906
- **`403 API Key does not have permission to access this endpoint`** — this specific endpoint isn't granted on your key. Edit the key in BD Admin → Developer Hub and enable the missing endpoint (the error names it). - **`404 Not Found`** — - Network accessline 907
- **`404 Not Found`** — your site URL is wrong. Must include `https://` and NO trailing slash, and match the canonical form your site responds at (include `www.` if your site uses it). Correct: `https://www.mysite.com`. Wrong: `mysite.com`, - Dangerous shell operationline 911
- **Mac/Linux Terminal:** `rm -rf ~/.npm/_npx` - Network accessline 911
- **Mac/Linux Terminal:** `rm -rf ~/.npm/_npx` - Then fully quit + reopen. The `-y` in your config makes `npx` re-download automatically — you do NOT need `npm install -g brilliant-directories-mcp`. - **`npx: command not found` or `spawn - Network accessline 912
- Then fully quit + reopen. The `-y` in your config makes `npx` re-download automatically — you do NOT need `npm install -g brilliant-directories-mcp`. - **`npx: command not found` or `spawn npx ENOENT`** — Node.js isn't installed (or your - Network accessline 913
- **`npx: command not found` or `spawn npx ENOENT`** — Node.js isn't installed (or your AI app started before Node was installed). Install from <a href="https://nodejs.org" target="_blank" rel="noopener noreferrer">nodejs.org</a>, then full - Network accessline 915
- **"not valid MCP server configurations" (Claude Desktop)** — `claude_desktop_config.json` doesn't accept `url`-shaped blocks. Use the Advanced (npm/stdio) config from the [Claude Desktop section](#claude-desktop). Windows users on the Mic - Network accessline 924
|---|---|---|---| | `X-Api-Key` | your BD API key | Yes | Authenticates the request. Admin → **Developer Hub** → **Generate API Key**. | | `X-BD-Site-URL` | `https://www.your-site.com` | Yes | Pairs the API key with its BD site. Full canoni - Network accessline 926
| `X-BD-Site-URL` | `https://www.your-site.com` | Yes | Pairs the API key with its BD site. Full canonical URL (`https://`, exact host, no trailing slash). | - Network accessline 932
| Field the client asks for | What to enter | |---|---| | **MCP Server URL** / Endpoint URL / Remote Server URL | `https://brilliantmcp.com` (no `/sse`, no trailing path) | - Network accessline 933
|---|---| | **MCP Server URL** / Endpoint URL / Remote Server URL | `https://brilliantmcp.com` (no `/sse`, no trailing path) | | **Transport** | `Streamable HTTP` (also called "HTTP Streamable"). **NOT** SSE. **NOT** WebSocket. | - Network accessline 934
| **MCP Server URL** / Endpoint URL / Remote Server URL | `https://brilliantmcp.com` (no `/sse`, no trailing path) | - Network accessline 935
[Credential-related source omitted] - Network accessline 936
[Credential-related source omitted] - Network accessline 940
> **n8n is the exception.** n8n's Streamable HTTP client has upstream bugs, so n8n users must use Transport = `Server Sent Events (Deprecated)` + URL `https://brilliantmcp.com/sse` (with the `/sse` path). See the [n8n section](#n8n) for the - Network accessline 1022
[Credential-related source omitted] - Network accessline 1023
[Credential-related source omitted] - Access to secretsline 1023
[Credential-related source omitted] - Network accessline 1025
[Credential-related source omitted] - Network accessline 1026
[Credential-related source omitted] - Access to secretsline 1026
[Credential-related source omitted] - Network accessline 1034
https://raw.githubusercontent.com/brilliantdirectories/brilliant-directories-mcp/main/mcp/openapi/bd-api.json - Network accessline 1074
- **Bug reports / feature requests:** https://github.com/brilliantdirectories/brilliant-directories-mcp/issues - Network accessline 1075
- **BD Support:** https://support.brilliantdirectories.com - Network accessline 1076
- **API Docs:** https://support.brilliantdirectories.com/support/solutions/articles/12000108045
mcp/index.js
- Executable scriptline 1
#!/usr/bin/env node - Network accessline 9
* * Usage: * brilliant-directories-mcp --api-key YOUR_KEY --url https://your-site.com - Network accessline 10
* Usage: * brilliant-directories-mcp --api-key YOUR_KEY --url https://your-site.com * - Network accessline 11
* brilliant-directories-mcp --api-key YOUR_KEY --url https://your-site.com - Network accessline 12
[Credential-related source omitted] - Network accessline 13
[Credential-related source omitted] - Network accessline 14
[Credential-related source omitted] - Access to secretsline 14
[Credential-related source omitted] - Network accessline 168
// Trim + strip trailing slashes. Customer ticket #578506: trailing-slash on // the env var (`https://site.com/`) was bypassing the strip in setup mode, - Network accessline 169
// the env var (`https://site.com/`) was bypassing the strip in setup mode, - Network accessline 170
// breaking URL composition downstream. Single source of truth used by // parseArgs, the setup wizard, and the request boundary in makeRequest. // Whatever protocol the user supplied (`http://`, `https://`, or none) is - Network accessline 171
// parseArgs, the setup wizard, and the request boundary in makeRequest. // Whatever protocol the user supplied (`http://`, `https://`, or none) is // respected as-is; this helper does not coerce. - Network accessline 172
// Whatever protocol the user supplied (`http://`, `https://`, or none) is - Network accessline 220
const timer = setTimeout(() => ctl.abort(), 5000); try { const response = await fetch(url, { - Network accessline 221
try { const response = await fetch(url, { headers: { Range: "bytes=0-65535", "User-Agent": "brilliant-directories-mcp" }, - Network accessline 222
const response = await fetch(url, { - Access to secretsline 553
[Credential-related source omitted] - Network accessline 588
// Normalize URL once before any code path branches — applies to setup, // verify, and run modes. Single source of truth at `normalizeUrl()`. // Customer ticket #578506: trailing slash on the env var (`https://site.com/`) - Network accessline 589
// verify, and run modes. Single source of truth at `normalizeUrl()`. // Customer ticket #578506: trailing slash on the env var (`https://site.com/`) // was bypassing the strip in setup mode and causing connection failures - Network accessline 590
// Customer ticket #578506: trailing slash on the env var (`https://site.com/`) - Access to secretsline 602
[Credential-related source omitted] - Network accessline 605
} if (!config.apiUrl) { console.error("Error: Site URL required. Use --url https://your-site.com or set BD_SITE_URL env var (BD_API_URL also supported as a legacy alias)."); - Network accessline 606
if (!config.apiUrl) { console.error("Error: Site URL required. Use --url https://your-site.com or set BD_SITE_URL env var (BD_API_URL also supported as a legacy alias)."); console.error("Run with --help for usage."); - Network accessline 607
console.error("Error: Site URL required. Use --url https://your-site.com or set BD_SITE_URL env var (BD_API_URL also supported as a legacy alias)."); - Network accessline 613
// Several helpers (`getPostTypesCached`, `getWebsiteInfoCached`, // `_readLinkedPostMeta`, etc.) accept a domain string and concatenate // it as `https://${domain}` internally. Set this once at startup. - Network accessline 615
// it as `https://${domain}` internally. Set this once at startup. - Access to secretsline 638
[Credential-related source omitted] - Network accessline 642
Otherwise prompts interactively for any missing value. --api-key KEY Your BD API key (or set BD_API_KEY env var) --url URL Your BD site URL, e.g. https://mysite.com (or BD_API_URL env var) - Network accessline 643
[Credential-related source omitted] - Access to secretsline 643
[Credential-related source omitted] - Network accessline 644
--url URL Your BD site URL, e.g. https://mysite.com (or BD_API_URL env var) - Network accessline 657
Get an API key: BD Admin > Developer Hub > Generate API Key Docs: https://github.com/brilliantdirectories/brilliant-directories-mcp`); - Network accessline 658
Docs: https://github.com/brilliantdirectories/brilliant-directories-mcp`); - Network accessline 671
} console.error(`Error: OpenAPI spec not found at ${specPath}`); console.error(`This is a packaging bug - please open an issue at https://github.com/brilliantdirectories/brilliant-directories-mcp/issues`); - Network accessline 672
console.error(`Error: OpenAPI spec not found at ${specPath}`); console.error(`This is a packaging bug - please open an issue at https://github.com/brilliantdirectories/brilliant-directories-mcp/issues`); process.exit(1); - Network accessline 673
console.error(`This is a packaging bug - please open an issue at https://github.com/brilliantdirectories/brilliant-directories-mcp/issues`); - Network accessline 3017
if (cached && (Date.now() - cached.fetchedAt) < POST_TYPES_TTL_MS) return cached.rows; try { const url = new URL(`/api/v2/data_categories/get`, `https://${domain}`); - Network accessline 3018
try { const url = new URL(`/api/v2/data_categories/get`, `https://${domain}`); url.searchParams.set("limit", "100"); - Network accessline 3019
[Credential-related source omitted] - Network accessline 3020
[Credential-related source omitted] - Network accessline 3021
[Credential-related source omitted] - Network accessline 3033
if (cached && (Date.now() - cached.fetchedAt) < POST_TYPES_TTL_MS) return cached.website_id; try { const url = new URL(`/api/v2/site_info/get`, `https://${domain}`); - Network accessline 3034
[Credential-related source omitted] - Network accessline 3035
[Credential-related source omitted] - Network accessline 3036
[Credential-related source omitted] - Network accessline 3086
async function _readLinkedPostMeta(domain, apiKey, seoId) { try { const url = new URL(`/api/v2/users_meta/get`, `https://${domain}`); - Network accessline 3087
try { const url = new URL(`/api/v2/users_meta/get`, `https://${domain}`); url.searchParams.append("property[]", "database"); - Network accessline 3088
const url = new URL(`/api/v2/users_meta/get`, `https://${domain}`); - Network accessline 3094
[Credential-related source omitted] - Network accessline 3095
[Credential-related source omitted] - Network accessline 3096
[Credential-related source omitted] - Network accessline 3109
async function _findPagesByLinkedPostType(domain, apiKey, linkedPostType) { try { const url = new URL(`/api/v2/users_meta/get`, `https://${domain}`); - Network accessline 3110
try { const url = new URL(`/api/v2/users_meta/get`, `https://${domain}`); url.searchParams.append("property[]", "database"); - Network accessline 3111
const url = new URL(`/api/v2/users_meta/get`, `https://${domain}`); - Network accessline 3120
[Credential-related source omitted] - Network accessline 3121
[Credential-related source omitted] - Network accessline 3122
[Credential-related source omitted] - Network accessline 3141
async function _readSeoTypeForId(domain, apiKey, seoId) { try { const url = new URL(`/api/v2/list_seo/get/${encodeURIComponent(String(seoId))}`, `https://${domain}`); - Network accessline 3142
[Credential-related source omitted] - Network accessline 3143
[Credential-related source omitted] - Network accessline 3144
[Credential-related source omitted] - Network accessline 3154
const deleted = []; try { const url = new URL(`/api/v2/users_meta/get`, `https://${domain}`); - Network accessline 3155
try { const url = new URL(`/api/v2/users_meta/get`, `https://${domain}`); url.searchParams.append("property[]", "database"); - Network accessline 3156
const url = new URL(`/api/v2/users_meta/get`, `https://${domain}`); - Network accessline 3162
[Credential-related source omitted] - Network accessline 3163
[Credential-related source omitted] - Network accessline 3164
[Credential-related source omitted] - Network accessline 3170
await Promise.all(targets.map(async (r) => { try { const delUrl = new URL(`/api/v2/users_meta/delete`, `https://${domain}`); - Network accessline 3171
try { const delUrl = new URL(`/api/v2/users_meta/delete`, `https://${domain}`); const form = new URLSearchParams(); - Network accessline 3172
const delUrl = new URL(`/api/v2/users_meta/delete`, `https://${domain}`); - Network accessline 3175
form.set("database", "list_seo"); form.set("database_id", String(seoId)); const dr = await fetch(delUrl.toString(), { - Network accessline 3176
form.set("database_id", String(seoId)); const dr = await fetch(delUrl.toString(), { method: "DELETE", - Network accessline 3177
const dr = await fetch(delUrl.toString(), { - Network accessline 3207
} try { const url = new URL(`/api/v2/users_meta/get`, `https://${domain}`); - Network accessline 3208
try { const url = new URL(`/api/v2/users_meta/get`, `https://${domain}`); url.searchParams.append("property[]", "database"); - Network accessline 3209
const url = new URL(`/api/v2/users_meta/get`, `https://${domain}`); - Network accessline 3215
[Credential-related source omitted] - Network accessline 3216
[Credential-related source omitted] - Network accessline 3217
[Credential-related source omitted] - Network accessline 3232
for (const r of targets) { try { const delUrl = new URL(`/api/v2/users_meta/delete`, `https://${domain}`); - Network accessline 3233
try { const delUrl = new URL(`/api/v2/users_meta/delete`, `https://${domain}`); const form = new URLSearchParams(); - Network accessline 3234
const delUrl = new URL(`/api/v2/users_meta/delete`, `https://${domain}`); - Network accessline 3237
form.set("database", String(database)); form.set("database_id", String(databaseId)); const dr = await fetch(delUrl.toString(), { - Network accessline 3238
form.set("database_id", String(databaseId)); const dr = await fetch(delUrl.toString(), { method: "DELETE", - Network accessline 3239
const dr = await fetch(delUrl.toString(), { - Network accessline 3289
async function _findRedirectByOldFilename(domain, apiKey, oldFilename) { try { const url = new URL(`/api/v2/redirect_301/get`, `https://${domain}`); - Network accessline 3290
try { const url = new URL(`/api/v2/redirect_301/get`, `https://${domain}`); url.searchParams.append("property[]", "old_filename"); - Network accessline 3291
const url = new URL(`/api/v2/redirect_301/get`, `https://${domain}`); - Network accessline 3294
[Credential-related source omitted] - Network accessline 3295
[Credential-related source omitted] - Network accessline 3296
[Credential-related source omitted] - Network accessline 3313
return await _updateRedirectDestination(domain, apiKey, existing.redirect_id, newFilename); } const url = new URL(`/api/v2/redirect_301/create`, `https://${domain}`); - Network accessline 3314
} const url = new URL(`/api/v2/redirect_301/create`, `https://${domain}`); const form = new URLSearchParams(); - Network accessline 3315
const url = new URL(`/api/v2/redirect_301/create`, `https://${domain}`); - Network accessline 3319
form.set("type", "custom"); form.set("db_id", String(seoId)); const resp = await fetch(url.toString(), { - Network accessline 3320
form.set("db_id", String(seoId)); const resp = await fetch(url.toString(), { method: "POST", - Network accessline 3321
const resp = await fetch(url.toString(), { - Network accessline 3335
async function _updateRedirectDestination(domain, apiKey, redirectId, newFilename) { try { const url = new URL(`/api/v2/redirect_301/update`, `https://${domain}`); - Network accessline 3336
try { const url = new URL(`/api/v2/redirect_301/update`, `https://${domain}`); const form = new URLSearchParams(); - Network accessline 3337
const url = new URL(`/api/v2/redirect_301/update`, `https://${domain}`); - Network accessline 3339
form.set("redirect_id", redirectId); form.set("new_filename", newFilename); const resp = await fetch(url.toString(), { - Network accessline 3340
form.set("new_filename", newFilename); const resp = await fetch(url.toString(), { method: "PUT", - Network accessline 3341
const resp = await fetch(url.toString(), { - Network accessline 3353
const existing = await _findRedirectByOldFilename(domain, apiKey, oldFilename); if (!existing) return { ok: true }; const url = new URL(`/api/v2/redirect_301/delete`, `https://${domain}`); - Network accessline 3354
if (!existing) return { ok: true }; const url = new URL(`/api/v2/redirect_301/delete`, `https://${domain}`); const form = new URLSearchParams(); - Network accessline 3355
const url = new URL(`/api/v2/redirect_301/delete`, `https://${domain}`); - Network accessline 3356
const form = new URLSearchParams(); form.set("redirect_id", existing.redirect_id); const resp = await fetch(url.toString(), { - Network accessline 3357
form.set("redirect_id", existing.redirect_id); const resp = await fetch(url.toString(), { method: "DELETE", - Network accessline 3358
const resp = await fetch(url.toString(), { - Network accessline 4006
async function _getFormFieldRecordById(domain, apiKey, fieldId) { if (!fieldId) return null; const url = `https://${domain}/api/v2/form_fields/get?field_id=${encodeURIComponent(fieldId)}`; - Network accessline 4008
const url = `https://${domain}/api/v2/form_fields/get?field_id=${encodeURIComponent(fieldId)}`; - Network accessline 4013
const timeout = setTimeout(() => ctl.abort(), 5000); try { const resp = await fetch(url, { - Network accessline 4014
[Credential-related source omitted] - Network accessline 4015
const resp = await fetch(url, { - Network accessline 4187
let normalized = baseUrl; if (!/^https?:\/\//i.test(normalized)) normalized = `https://${normalized}`; - Network accessline 4188
if (!/^https?:\/\//i.test(normalized)) normalized = `https://${normalized}`; - Network accessline 4191
let is24h = false; try { const resp = await fetch(`${normalized}/api/v2/site_info/get`, { - Network accessline 4192
try { const resp = await fetch(`${normalized}/api/v2/site_info/get`, { method: "GET", - Network accessline 4193
const resp = await fetch(`${normalized}/api/v2/site_info/get`, { - Network accessline 4396
function _tryPunycodeDecode(label) { try { const u = new URL(`http://${label}.invalid`); - Network accessline 4397
try { const u = new URL(`http://${label}.invalid`); const host = u.hostname; // already lowercased + IDN-decoded - Network accessline 4398
const u = new URL(`http://${label}.invalid`); - Possible obfuscationline 4426
if (/[\s<U+00AD><U+200B>-<U+200F><U+2060>-<U+2064><U+FEFF>]/.test(slug)) { - Access to secretsline 5076
[Credential-related source omitted] - Network accessline 5248
} else { while (!apiUrl) { const raw = await prompt("Your BD site URL (e.g. https://mysite.com): "); - Network accessline 5249
while (!apiUrl) { const raw = await prompt("Your BD site URL (e.g. https://mysite.com): "); if (!raw) { - Network accessline 5250
const raw = await prompt("Your BD site URL (e.g. https://mysite.com): "); - Network accessline 5600
alert_accent: "Urgency accent - errors, warnings, sale badges, limited-time callouts, elements that command immediate attention.", tint_rule: "Derive lighter or darker tints from any palette color for backgrounds, hover s - Network accessline 5601
tint_rule: "Derive lighter or darker tints from any palette color for backgrounds, hover states, borders, or low-emphasis UI layers. Do NOT introduce new unrelated hues.", font_rule: "body.font and heading_font are alr - Network accessline 5602
font_rule: "body.font and heading_font are already globally loaded on the site - do NOT redefine them in content_css. To switch to a different family on a specific page, load the font in the WebPage's content_head field as a <link rel= - Network accessline 5605
// If any BD fetches failed outright (network / non-200), surface it so the // agent knows some values are fallbacks, not live site data. A missing row // on a successful fetch (slot just isn't set) is NOT a failure - fallba - Network accessline 5606
// agent knows some values are fallbacks, not live site data. A missing row // on a successful fetch (slot just isn't set) is NOT a failure - fallback // silently applies; that's the documented design. - Network accessline 5607
// on a successful fetch (slot just isn't set) is NOT a failure - fallback
mcp/openapi/bd-api.json
- Network accessline 4
"title": "Brilliant Directories API", "version": "2.0.0", "description": "Universal API for Brilliant Directories websites. Manage members, content, leads, email templates, categories, and more. Works with any BD-powered site - just - Network accessline 5
"version": "2.0.0", "description": "Universal API for Brilliant Directories websites. Manage members, content, leads, email templates, categories, and more. Works with any BD-powered site - just provide your site URL and API key.\n\n## - Network accessline 6
"description": "Universal API for Brilliant Directories websites. Manage members, content, leads, email templates, categories, and more. Works with any BD-powered site - just provide your site URL and API key.\n\n## Authentication\nAll requ - Network accessline 7
"contact": { "name": "Brilliant Directories", "url": "https://www.brilliantdirectories.com", - Network accessline 8
"name": "Brilliant Directories", "url": "https://www.brilliantdirectories.com", "email": "support@brilliantdirectories.com" - Network accessline 9
"url": "https://www.brilliantdirectories.com", - Network accessline 14
}, "x-api-version-note": "The info.version field represents BD's REST API version (currently v2 - /api/v2/* endpoints), NOT this MCP wrapper's release version.", "x-mcp-wrapper-version": "See https://www.npmjs.com/package/brilliant- - Network accessline 15
"x-api-version-note": "The info.version field represents BD's REST API version (currently v2 - /api/v2/* endpoints), NOT this MCP wrapper's release version.", "x-mcp-wrapper-version": "See https://www.npmjs.com/package/brilliant-directo - Network accessline 16
"x-mcp-wrapper-version": "See https://www.npmjs.com/package/brilliant-directories-mcp for the current MCP wrapper version (npm package)." - Network accessline 22
"variables": { "bd_site_url": { "default": "https://your-site.com", - Network accessline 23
"bd_site_url": { "default": "https://your-site.com", "description": "The full URL of your BD-powered website (e.g. https://yoursite.com)" - Network accessline 24
"default": "https://your-site.com", - Network accessline 25
"description": "The full URL of your BD-powered website (e.g. https://yoursite.com)" - Network accessline 2035
} }, "description": "Create a member. Writes live data. Welcome email silent by default - set `send_email_notifications=1` to trigger.\n\n**Required:** `email`, `password`, `subscription_id`.\n\n**Use when:** adding members - Network accessline 2036
}, "description": "Create a member. Writes live data. Welcome email silent by default - set `send_email_notifications=1` to trigger.\n\n**Required:** `email`, `password`, `subscription_id`.\n\n**Use when:** adding members outside BD - Network accessline 2037
"description": "Create a member. Writes live data. Welcome email silent by default - set `send_email_notifications=1` to trigger.\n\n**Required:** `email`, `password`, `subscription_id`.\n\n**Use when:** adding members outside BD signup - C - Network accessline 2042
"operationId": "updateUser", "summary": "Update an existing member/user", "description": "Update a member. PATCH semantics - omitted fields untouched; send only what changes.\n\n**Required:** `user_id`.\n\n**Disambiguation:* - Network accessline 2043
"summary": "Update an existing member/user", "description": "Update a member. PATCH semantics - omitted fields untouched; send only what changes.\n\n**Required:** `user_id`.\n\n**Disambiguation:** apply **Rule: Resource disambiguati - Network accessline 2044
"description": "Update a member. PATCH semantics - omitted fields untouched; send only what changes.\n\n**Required:** `user_id`.\n\n**Disambiguation:** apply **Rule: Resource disambiguation** when the user names this member by description ( - Network accessline 6271
"form_target": { "type": "string", "description": "Destination URL. **Required when `form_action_type=redirect`** — wrapper refuses the call without it. Full URL with `https://`, e.g. `https://mysite. - Network accessline 6272
"type": "string", "description": "Destination URL. **Required when `form_action_type=redirect`** — wrapper refuses the call without it. Full URL with `https://`, e.g. `https://mysite.com/thanks`." }, - Network accessline 6273
"description": "Destination URL. **Required when `form_action_type=redirect`** — wrapper refuses the call without it. Full URL with `https://`, e.g. `https://mysite.com/thanks`." - Network accessline 6366
"form_target": { "type": "string", "description": "Destination URL, required when `form_action_type=redirect`, ignored otherwise. Full URL with `https://`." - Network accessline 6367
"type": "string", "description": "Destination URL, required when `form_action_type=redirect`, ignored otherwise. Full URL with `https://`." }, - Network accessline 6368
"description": "Destination URL, required when `form_action_type=redirect`, ignored otherwise. Full URL with `https://`." - Network accessline 9424
"operationId": "getSiteInfo", "summary": "Get site-level identity, locale, currency, and brand-image URLs", "description": "Returns the site's own identity and locale context — what kind of directory this is, who it serves, - Network accessline 9425
"summary": "Get site-level identity, locale, currency, and brand-image URLs", "description": "Returns the site's own identity and locale context — what kind of directory this is, who it serves, the formatting conventions to respect, - Network accessline 9426
"description": "Returns the site's own identity and locale context — what kind of directory this is, who it serves, the formatting conventions to respect, and the URLs of branding assets. Read-only, no params. **Call this once on the first - Network accessline 9459
"format": "uri" }, "description": "Single bare canonical image URL (e.g. `https://images.pexels.com/photos/<id>/pexels-photo-<id>.jpeg`). Must respond with HTTP 200/206 to a Range request for the first 64KB. Provide - Network accessline 9460
}, "description": "Single bare canonical image URL (e.g. `https://images.pexels.com/photos/<id>/pexels-photo-<id>.jpeg`). Must respond with HTTP 200/206 to a Range request for the first 64KB. Provide `url` OR `urls`." - Network accessline 9461
"description": "Single bare canonical image URL (e.g. `https://images.pexels.com/photos/<id>/pexels-photo-<id>.jpeg`). Must respond with HTTP 200/206 to a Range request for the first 64KB. Provide `url` OR `urls`." - Network accessline 9559
"operationId": "getBrandKit", "summary": "Get the site's brand kit (colors + fonts) for design decisions", "description": "Return a compact, semantically-labeled brand kit for this BD site - colors (body / primary / dark / m - Network accessline 9560
"summary": "Get the site's brand kit (colors + fonts) for design decisions", "description": "Return a compact, semantically-labeled brand kit for this BD site - colors (body / primary / dark / muted / success / warm / alert accents, - Network accessline 9561
"description": "Return a compact, semantically-labeled brand kit for this BD site - colors (body / primary / dark / muted / success / warm / alert accents, card surface) + fonts (body + heading Google Fonts). **Call this ONCE at the start o
mcp/openapi/mcp-instructions.md
- Network accessline 150
**HTTP status codes and error shapes agents should recognize.** Authoritative reference: https://support.brilliantdirectories.com/support/solutions/articles/12000108046 (BD's public API overview article - auth, rate limits, pagination, filt - Network accessline 503
**Verify `<img>` sources return 200 before embedding (if runtime can fetch).** Broken images are permanent in delivered email — clients cache 404s on first open. Without fetch capability: stick to canonical Pexels URLs (`https://images.pexe - Network accessline 511
**After every successful `createEmailTemplate` or `updateEmailTemplate`, surface the BD admin edit URL to the user.** Pattern: `https://ww2.managemydirectory.com/admin/emailTemplates.php?faction=edit&email=<email_id>&newsite=<website_id>`. - Network accessline 515
**After every successful `createSingleImagePost` / `updateSingleImagePost` / `createMultiImagePost` / `updateMultiImagePost`, surface the BD admin edit URL to the user using exactly this pattern:** `https://ww2.managemydirectory.com/admin/v - Network accessline 947
`default_checkout_url` varies by site (`checkout`, `join`, `signup`, …) — use the returned value, never hardcoded. `full_url` has no trailing slash; single-`/` joins. E.g. `https://site.com/checkout/2`. - Network accessline 1003
- **Orientation gate for Pexels-sourced feature image slots.** `post_image`, `hero_image`, and multi-image album photos require landscape — verify via `getImageDimensions` per **Rule: Image dimensions**. Inline `<img>` in Froala body (`post - Network accessline 1004
- **Pexels sourcing workflow.** Use this when an image is needed and **Rule: Image sourcing** routes to Pexels. Pexels does NOT respect keyword orientation filters (no `wide`/`landscape`/`horizontal` keyword reliably surfaces landscape-only - Network accessline 1005
1. `WebSearch query="site:pexels.com/photo <2-3 word topic>"` — 2-3 words, every word must carry topic information (no filler, no redundant adjectives); 2 words when the noun is already specific (`"pilates reformer"`), 3 words when it isn't - Network accessline 1006
2. Pick a candidate at a **random index** in the first ~10 results rather than defaulting to #1 — anti-clustering across runs on the same site. 3. Extract `<id>` (trailing digits before the final `/`) and construct the bare canonical `htt - Network accessline 1007
3. Extract `<id>` (trailing digits before the final `/`) and construct the bare canonical `https://images.pexels.com/photos/<id>/pexels-photo-<id>.jpeg`. - Network accessline 1040
- **`update*` self-exclusion.** When updating an existing record, exclude that record's own row from the dedup result set: for `listSingleImagePosts` hits, match by `post_id`; for `listMultiImagePostPhotos` hits, match by `photo_id`. Hits o - Network accessline 1042
- **URL form to check.** Use the bare canonical Pexels URL exactly as it gets stored: `https://images.pexels.com/photos/<id>/pexels-photo-<id>.jpeg` (or `.png`). Exact match — no query string, no `?w=` suffix. - Network accessline 1244
- **Email body — no `<style>` blocks.** Outlook strips them. Use inline `style=""` attributes only. See **Rule: Email template recipe** for full email-client constraints. - **Widget exception:** `widget_data`, `widget_style`, `widget_javasc - Network accessline 1245
- **Widget exception:** `widget_data`, `widget_style`, `widget_javascript` are exempt from all listed patterns. Widgets legitimately need JS and scoped CSS, and anyone with API permission to write widgets already has admin capability. Warn
mcp/package-lock.json
- Network accessline 21
"node_modules/@hono/node-server": { "version": "1.19.14", "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.14.tgz", - Network accessline 22
"version": "1.19.14", "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.14.tgz", "integrity": "sha512-GwtvgtXxnWsucXvbQXkRgqksiH2Qed37H9xHZocE5sA3N8O8O8/8FA3uclQXxXVzc9XBZuEOMK7+r02FmSpHtw==", - Network accessline 23
"resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.14.tgz", - Network accessline 33
"node_modules/@modelcontextprotocol/sdk": { "version": "1.29.0", "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.29.0.tgz", - Network accessline 34
"version": "1.29.0", "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.29.0.tgz", "integrity": "sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ==", - Network accessline 35
"resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.29.0.tgz", - Network accessline 73
"node_modules/accepts": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", - Network accessline 74
"version": "2.0.0", "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", - Network accessline 75
"resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", - Network accessline 86
"node_modules/ajv": { "version": "8.18.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - Network accessline 87
"version": "8.18.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - Network accessline 88
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - Network accessline 97
"funding": { "type": "github", "url": "https://github.com/sponsors/epoberezkin" - Network accessline 98
"type": "github", "url": "https://github.com/sponsors/epoberezkin" } - Network accessline 99
"url": "https://github.com/sponsors/epoberezkin" - Network accessline 102
"node_modules/ajv-formats": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", - Network accessline 103
"version": "3.0.1", "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", - Network accessline 104
"resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", - Network accessline 119
"node_modules/body-parser": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", - Network accessline 120
"version": "2.2.2", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", - Network accessline 121
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", - Network accessline 138
"funding": { "type": "opencollective", "url": "https://opencollective.com/express" - Network accessline 139
"type": "opencollective", "url": "https://opencollective.com/express" } - Network accessline 140
"url": "https://opencollective.com/express" - Network accessline 143
"node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - Network accessline 144
"version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - Network accessline 145
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - Network accessline 152
"node_modules/call-bind-apply-helpers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - Network accessline 153
"version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuM - Network accessline 154
"resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - Network accessline 165
"node_modules/call-bound": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - Network accessline 166
"version": "1.0.4", "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - Network accessline 167
"resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - Network accessline 176
}, "funding": { "url": "https://github.com/sponsors/ljharb" - Network accessline 177
"funding": { "url": "https://github.com/sponsors/ljharb" } - Network accessline 178
"url": "https://github.com/sponsors/ljharb" - Network accessline 181
"node_modules/content-disposition": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz", - Network accessline 182
"version": "1.1.0", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz", "integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==", - Network accessline 183
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz", - Network accessline 189
"funding": { "type": "opencollective", "url": "https://opencollective.com/express" - Network accessline 190
"type": "opencollective", "url": "https://opencollective.com/express" } - Network accessline 191
"url": "https://opencollective.com/express" - Network accessline 194
"node_modules/content-type": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - Network accessline 195
"version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - Network accessline 196
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - Network accessline 203
"node_modules/cookie": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - Network accessline 204
"version": "0.7.2", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", - Network accessline 205
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - Network accessline 212
"node_modules/cookie-signature": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", - Network accessline 213
"version": "1.2.2", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", - Network accessline 214
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", - Network accessline 221
"node_modules/cors": { "version": "2.8.6", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", - Network accessline 222
"version": "2.8.6", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", - Network accessline 223
"resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", - Network accessline 233
"funding": { "type": "opencollective", "url": "https://opencollective.com/express" - Network accessline 234
"type": "opencollective", "url": "https://opencollective.com/express" } - Network accessline 235
"url": "https://opencollective.com/express" - Network accessline 238
"node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - Network accessline 239
"version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - Network accessline 240
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - Network accessline 252
"node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - Network accessline 253
"version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - Network accessline 254
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - Network accessline 269
"node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - Network accessline 270
"version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - Network accessline 271
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - Network accessline 278
"node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - Network accessline 279
"version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - Network accessline 280
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - Network accessline 292
"node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - Network accessline 293
"version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - Network accessline 294
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - Network accessline 298
"node_modules/encodeurl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - Network accessline 299
"version": "2.0.0", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - Network accessline 300
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - Network accessline 307
"node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - Network accessline 308
"version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - Network accessline 309
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - Network accessline 316
"node_modules/es-errors": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - Network accessline 317
"version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - Network accessline 318
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - Network accessline 325
"node_modules/es-object-atoms": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - Network accessline 326
"version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - Network accessline 327
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - Network accessline 337
"node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - Network accessline 338
"version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - Network accessline 339
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - Network accessline 343
"node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - Network accessline 344
"version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - Network accessline 345
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - Network accessline 352
"node_modules/eventsource": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", - Network accessline 353
"version": "3.0.7", "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", - Network accessline 354
"resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", - Network accessline 364
"node_modules/eventsource-parser": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.7.tgz", - Network accessline 365
"version": "3.0.7", "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.7.tgz", "integrity": "sha512-zwxwiQqexizSXFZV13zMiEtW1E3lv7RlUv+1f5FBiR4x7wFhEjm3aFTyYkZQWzyN08WnPdox015GoRH5D/E5YA==", - Network accessline 366
"resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.7.tgz", - Network accessline 373
"node_modules/express": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", - Network accessline 374
"version": "5.2.1", "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", - Network accessline 375
"resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", - Network accessline 411
"funding": { "type": "opencollective", "url": "https://opencollective.com/express" - Network accessline 412
"type": "opencollective", "url": "https://opencollective.com/express" } - Network accessline 413
"url": "https://opencollective.com/express" - Network accessline 416
"node_modules/express-rate-limit": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.3.2.tgz", - Network accessline 417
"version": "8.3.2", "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.3.2.tgz", "integrity": "sha512-77VmFeJkO0/rvimEDuUC5H30oqUC4EyOhyGccfqoLebB0oiEYfM7nwPrsDsBL1gsTpwfzX8SFy2MT3TDyRq+bg==", - Network accessline 418
"resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.3.2.tgz", - Network accessline 426
}, "funding": { "url": "https://github.com/sponsors/express-rate-limit" - Network accessline 427
"funding": { "url": "https://github.com/sponsors/express-rate-limit" }, - Network accessline 428
"url": "https://github.com/sponsors/express-rate-limit" - Network accessline 434
"node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - Network accessline 435
"version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - Network accessline 436
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - Network accessline 440
"node_modules/fast-uri": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", - Network accessline 441
"version": "3.1.0", "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", - Network accessline 442
"resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", - Network accessline 445
{ "type": "github", "url": "https://github.com/sponsors/fastify" - Network accessline 446
"type": "github", "url": "https://github.com/sponsors/fastify" }, - Network accessline 447
"url": "https://github.com/sponsors/fastify" - Network accessline 449
{ "type": "opencollective", "url": "https://opencollective.com/fastify" - Network accessline 450
"type": "opencollective", "url": "https://opencollective.com/fastify" } - Network accessline 451
"url": "https://opencollective.com/fastify" - Network accessline 456
"node_modules/finalhandler": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", - Network accessline 457
"version": "2.1.1", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", - Network accessline 458
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", - Network accessline 472
"funding": { "type": "opencollective", "url": "https://opencollective.com/express" - Network accessline 473
"type": "opencollective", "url": "https://opencollective.com/express" } - Network accessline 474
"url": "https://opencollective.com/express" - Network accessline 477
"node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - Network accessline 478
"version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - Network accessline 479
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - Network accessline 486
"node_modules/fresh": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", - Network accessline 487
"version": "2.0.0", "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", - Network accessline 488
"resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", - Network accessline 495
"node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - Network accessline 496
"version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - Network accessline 497
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - Network accessline 499
"license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" - Network accessline 500
"funding": { "url": "https://github.com/sponsors/ljharb" } - Network accessline 501
"url": "https://github.com/sponsors/ljharb" - Network accessline 504
"node_modules/get-intrinsic": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - Network accessline 505
"version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - Network accessline 506
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - Network accessline 523
}, "funding": { "url": "https://github.com/sponsors/ljharb" - Network accessline 524
"funding": { "url": "https://github.com/sponsors/ljharb" } - Network accessline 525
"url": "https://github.com/sponsors/ljharb" - Network accessline 528
"node_modules/get-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - Network accessline 529
"version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - Network accessline 530
"resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - Network accessline 541
"node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - Network accessline 542
"version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - Network accessline 543
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - Network accessline 548
}, "funding": { "url": "https://github.com/sponsors/ljharb" - Network accessline 549
"funding": { "url": "https://github.com/sponsors/ljharb" } - Network accessline 550
"url": "https://github.com/sponsors/ljharb" - Network accessline 553
"node_modules/has-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - Network accessline 554
"version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - Network accessline 555
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - Network accessline 560
}, "funding": { "url": "https://github.com/sponsors/ljharb" - Network accessline 561
"funding": { "url": "https://github.com/sponsors/ljharb" } - Network accessline 562
"url": "https://github.com/sponsors/ljharb" - Network accessline 565
"node_modules/hasown": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", - Network accessline 566
"version": "2.0.3", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", - Network accessline 567
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", - Network accessline 577
"node_modules/hono": { "version": "4.12.14", "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.14.tgz", - Network accessline 578
"version": "4.12.14", "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.14.tgz", "integrity": "sha512-am5zfg3yu6sqn5yjKBNqhnTX7Cv+m00ox+7jbaKkrLMRJ4rAdldd1xPd/JzbBWspqaQv6RSTrgFN95EsfhC+7w==", - Network accessline 579
"resolved": "https://registry.npmjs.org/hono/-/hono-4.12.14.tgz", - Network accessline 586
"node_modules/http-errors": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - Network accessline 587
"version": "2.0.1", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", - Network accessline 588
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - Network accessline 601
"funding": { "type": "opencollective", "url": "https://opencollective.com/express" - Network accessline 602
"type": "opencollective", "url": "https://opencollective.com/express" } - Network accessline 603
"url": "https://opencollective.com/express" - Network accessline 606
"node_modules/iconv-lite": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", - Network accessline 607
"version": "0.7.2", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", - Network accessline 608
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", - Network accessline 617
"funding": { "type": "opencollective", "url": "https://opencollective.com/express" - Network accessline 618
"type": "opencollective", "url": "https://opencollective.com/express" } - Network accessline 619
"url": "https://opencollective.com/express" - Network accessline 622
"node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - Network accessline 623
"version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - Network accessline 624
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - Network accessline 628
"node_modules/ip-address": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", - Network accessline 629
"version": "10.1.0", "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", - Network accessline 630
"resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", - Network accessline 637
"node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - Network accessline 638
"version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - Network accessline 639
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - Network accessline 646
"node_modules/is-promise": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - Network accessline 647
"version": "4.0.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", - Network accessline 648
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - Network accessline 652
"node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - Network accessline 653
"version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - Network accessline 654
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - Network accessline 658
"node_modules/jose": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.2.tgz", - Network accessline 659
"version": "6.2.2", "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.2.tgz", "integrity": "sha512-d7kPDd34KO/YnzaDOlikGpOurfF0ByC2sEV4cANCtdqLlTfBlw2p14O/5d/zv40gJPbIQxfES3nSx1/oYNyuZQ==", - Network accessline 660
"resolved": "https://registry.npmjs.org/jose/-/jose-6.2.2.tgz", - Network accessline 662
"license": "MIT", "funding": { "url": "https://github.com/sponsors/panva" - Network accessline 663
"funding": { "url": "https://github.com/sponsors/panva" } - Network accessline 664
"url": "https://github.com/sponsors/panva" - Network accessline 667
"node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - Network accessline 668
"version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - Network accessline 669
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - Network accessline 673
"node_modules/json-schema-typed": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-8.0.2.tgz", - Network accessline 674
"version": "8.0.2", "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-8.0.2.tgz", "integrity": "sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==", - Network accessline 675
"resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-8.0.2.tgz", - Network accessline 679
"node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - Network accessline 680
"version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - Network accessline 681
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - Network accessline 688
"node_modules/media-typer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", - Network accessline 689
"version": "1.1.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", - Network accessline 690
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", - Network accessline 697
"node_modules/merge-descriptors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", - Network accessline 698
"version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", - Network accessline 699
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", - Network accessline 704
}, "funding": { "url": "https://github.com/sponsors/sindresorhus" - Network accessline 705
"funding": { "url": "https://github.com/sponsors/sindresorhus" } - Network accessline 706
"url": "https://github.com/sponsors/sindresorhus" - Network accessline 709
"node_modules/mime-db": { "version": "1.54.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - Network accessline 710
"version": "1.54.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", - Network accessline 711
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - Network accessline 718
"node_modules/mime-types": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", - Network accessline 719
"version": "3.0.2", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", - Network accessline 720
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", - Network accessline 729
"funding": { "type": "opencollective", "url": "https://opencollective.com/express" - Network accessline 730
"type": "opencollective", "url": "https://opencollective.com/express" } - Network accessline 731
"url": "https://opencollective.com/express" - Network accessline 734
"node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - Network accessline 735
"version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - Network accessline 736
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - Network accessline 740
"node_modules/negotiator": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - Network accessline 741
"version": "1.0.0", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", - Network accessline 742
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - Network accessline 749
"node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - Network accessline 750
"version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - Network accessline 751
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - Network accessline 758
"node_modules/object-inspect": { "version": "1.13.4", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - Network accessline 759
"version": "1.13.4", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - Network accessline 760
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - Network accessline 765
}, "funding": { "url": "https://github.com/sponsors/ljharb" - Network accessline 766
"funding": { "url": "https://github.com/sponsors/ljharb" } - Network accessline 767
"url": "https://github.com/sponsors/ljharb" - Network accessline 770
"node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - Network accessline 771
"version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - Network accessline 772
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - Network accessline 782
"node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - Network accessline 783
"version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - Network accessline 784
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - Network accessline 791
"node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - Network accessline 792
"version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - Network accessline 793
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - Network accessline 800
"node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - Network accessline 801
"version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - Network accessline 802
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - Network accessline 809
"node_modules/path-to-regexp": { "version": "8.4.2", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz", - Network accessline 810
"version": "8.4.2", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz", "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==", - Network accessline 811
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz", - Network accessline 814
"funding": { "type": "opencollective", "url": "https://opencollective.com/express" - Network accessline 815
"type": "opencollective", "url": "https://opencollective.com/express" } - Network accessline 816
"url": "https://opencollective.com/express" - Network accessline 819
"node_modules/pkce-challenge": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.1.tgz", - Network accessline 820
"version": "5.0.1", "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.1.tgz", "integrity": "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==", - Network accessline 821
"resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.1.tgz", - Network accessline 828
"node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - Network accessline 829
"version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - Network accessline 830
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - Network accessline 841
"node_modules/qs": { "version": "6.15.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.1.tgz", - Network accessline 842
"version": "6.15.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.1.tgz", "integrity": "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==", - Network accessline 843
"resolved": "https://registry.npmjs.org/qs/-/qs-6.15.1.tgz", - Network accessline 851
}, "funding": { "url": "https://github.com/sponsors/ljharb" - Network accessline 852
"funding": { "url": "https://github.com/sponsors/ljharb" } - Network accessline 853
"url": "https://github.com/sponsors/ljharb" - Network accessline 856
"node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - Network accessline 857
"version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - Network accessline 858
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - Network accessline 865
"node_modules/raw-body": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", - Network accessline 866
"version": "3.0.2", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", - Network accessline 867
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", - Network accessline 880
"node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - Network accessline 881
"version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - Network accessline 882
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - Network accessline 889
"node_modules/router": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", - Network accessline 890
"version": "2.2.0", "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", - Network accessline 891
"resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", - Network accessline 905
"node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - Network accessline 906
"version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - Network accessline 907
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - Network accessline 911
"node_modules/send": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", - Network accessline 912
"version": "1.2.1", "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", - Network accessline 913
"resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", - Network accessline 932
"funding": { "type": "opencollective", "url": "https://opencollective.com/express" - Network accessline 933
"type": "opencollective", "url": "https://opencollective.com/express" } - Network accessline 934
"url": "https://opencollective.com/express" - Network accessline 937
"node_modules/serve-static": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", - Network accessline 938
"version": "2.2.1", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", - Network accessline 939
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", - Network accessline 951
"funding": { "type": "opencollective", "url": "https://opencollective.com/express" - Network accessline 952
"type": "opencollective", "url": "https://opencollective.com/express" } - Network accessline 953
"url": "https://opencollective.com/express" - Network accessline 956
"node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - Network accessline 957
"version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - Network accessline 958
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - Network accessline 962
"node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - Network accessline 963
"version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - Network accessline 964
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - Network accessline 974
"node_modules/shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - Network accessline 975
"version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - Network accessline 976
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - Network accessline 983
"node_modules/side-channel": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - Network accessline 984
"version": "1.1.0", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - Network accessline 985
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - Network accessline 997
}, "funding": { "url": "https://github.com/sponsors/ljharb" - Network accessline 998
"funding": { "url": "https://github.com/sponsors/ljharb" } - Network accessline 999
"url": "https://github.com/sponsors/ljharb" - Network accessline 1002
"node_modules/side-channel-list": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", - Network accessline 1003
"version": "1.0.1", "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", - Network accessline 1004
"resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", - Network accessline 1013
}, "funding": { "url": "https://github.com/sponsors/ljharb" - Network accessline 1014
"funding": { "url": "https://github.com/sponsors/ljharb" } - Network accessline 1015
"url": "https://github.com/sponsors/ljharb" - Network accessline 1018
"node_modules/side-channel-map": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - Network accessline 1019
"version": "1.0.1", "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - Network accessline 1020
"resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - Network accessline 1031
}, "funding": { "url": "https://github.com/sponsors/ljharb" - Network accessline 1032
"funding": { "url": "https://github.com/sponsors/ljharb" } - Network accessline 1033
"url": "https://github.com/sponsors/ljharb" - Network accessline 1036
"node_modules/side-channel-weakmap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - Network accessline 1037
"version": "1.0.2", "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - Network accessline 1038
"resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - Network accessline 1050
}, "funding": { "url": "https://github.com/sponsors/ljharb" - Network accessline 1051
"funding": { "url": "https://github.com/sponsors/ljharb" } - Network accessline 1052
"url": "https://github.com/sponsors/ljharb" - Network accessline 1055
"node_modules/statuses": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - Network accessline 1056
"version": "2.0.2", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - Network accessline 1057
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - Network accessline 1064
"node_modules/toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - Network accessline 1065
"version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - Network accessline 1066
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - Network accessline 1073
"node_modules/type-is": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", - Network accessline 1074
"version": "2.0.1", "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", - Network accessline 1075
"resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", - Network accessline 1087
"node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - Network accessline 1088
"version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - Network accessline 1089
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - Network accessline 1096
"node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - Network accessline 1097
"version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - Network accessline 1098
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - Network accessline 1105
"node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - Network accessline 1106
"version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - Network accessline 1107
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - Network accessline 1120
"node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - Network accessline 1121
"version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - Network accessline 1122
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - Network accessline 1126
"node_modules/zod": { "version": "4.3.6", "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", - Network accessline 1127
"version": "4.3.6", "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", - Network accessline 1128
"resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", - Network accessline 1130
"license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" - Network accessline 1131
"funding": { "url": "https://github.com/sponsors/colinhacks" } - Network accessline 1132
"url": "https://github.com/sponsors/colinhacks" - Network accessline 1135
"node_modules/zod-to-json-schema": { "version": "3.25.2", "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.2.tgz", - Network accessline 1136
"version": "3.25.2", "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.2.tgz", "integrity": "sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==", - Network accessline 1137
"resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.2.tgz",
mcp/package.json
- Executable scriptline 1
Executable file - Network accessline 38
"author": "Brilliant Directories <support@brilliantdirectories.com>", "license": "MIT", "homepage": "https://github.com/brilliantdirectories/brilliant-directories-mcp#readme", - Network accessline 39
"license": "MIT", "homepage": "https://github.com/brilliantdirectories/brilliant-directories-mcp#readme", "repository": { - Network accessline 40
"homepage": "https://github.com/brilliantdirectories/brilliant-directories-mcp#readme", - Network accessline 41
"repository": { "type": "git", "url": "git+https://github.com/brilliantdirectories/brilliant-directories-mcp.git", - Network accessline 42
"type": "git", "url": "git+https://github.com/brilliantdirectories/brilliant-directories-mcp.git", "directory": "mcp" - Network accessline 43
"url": "git+https://github.com/brilliantdirectories/brilliant-directories-mcp.git", - Network accessline 45
}, "bugs": { "url": "https://github.com/brilliantdirectories/brilliant-directories-mcp/issues" - Network accessline 46
"bugs": { "url": "https://github.com/brilliantdirectories/brilliant-directories-mcp/issues" }, - Network accessline 47
"url": "https://github.com/brilliantdirectories/brilliant-directories-mcp/issues"
plugin.json
- Network accessline 5
"author": { "name": "Brilliant Directories", "url": "https://github.com/brilliantdirectories" - Network accessline 6
"name": "Brilliant Directories", "url": "https://github.com/brilliantdirectories" }, - Network accessline 7
"url": "https://github.com/brilliantdirectories" - Network accessline 8
}, "homepage": "https://www.brilliantdirectories.com", "repository": "https://github.com/brilliantdirectories/brilliant-directories-mcp", - Network accessline 9
"homepage": "https://www.brilliantdirectories.com", - Network accessline 10
"repository": "https://github.com/brilliantdirectories/brilliant-directories-mcp",
scripts/build-skill-zip.js
- Executable scriptline 1
#!/usr/bin/env node
scripts/extract-instructions.js
scripts/flatten.py
- Executable scriptline 1
#!/usr/bin/env python3
scripts/schema-drift-check.js
- Executable scriptline 1
#!/usr/bin/env node
scripts/skill-ref-check.py
- Executable scriptline 1
Executable file
scripts/swap-instructions.js
- Executable scriptline 1
Executable file
scripts/verify-instructions-match.js
server.json
- Network accessline 1
{ "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json", - Network accessline 2
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json", - Network accessline 4
"description": "Official MCP server for Brilliant Directories — manage members, posts, leads, reviews, and more.", "repository": { "url": "https://github.com/brilliantdirectories/brilliant-directories-mcp", - Network accessline 5
"repository": { "url": "https://github.com/brilliantdirectories/brilliant-directories-mcp", "source": "github" - Network accessline 6
"url": "https://github.com/brilliantdirectories/brilliant-directories-mcp", - Access to secretsline 20
[Credential-related source omitted] - Network accessline 25
{ "name": "BD_SITE_URL", "description": "Your BD site URL, e.g. https://yoursite.com (BD_API_URL is also accepted as a legacy alias).", - Network accessline 26
"name": "BD_SITE_URL", "description": "Your BD site URL, e.g. https://yoursite.com (BD_API_URL is also accepted as a legacy alias).", "isRequired": true, - Network accessline 27
"description": "Your BD site URL, e.g. https://yoursite.com (BD_API_URL is also accepted as a legacy alias).",
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Signal confidence: 500 facts
- Network access in prose of documentationCONTRIBUTING.md:9Low confidence
- Network access in code of documentationCONTRIBUTING.md:35Low confidence
- Network access in code of documentationCONTRIBUTING.md:39Low confidence
- Network access in code of documentationCONTRIBUTING.md:40Low confidence
- Access to secrets in code of documentationCONTRIBUTING.md:40Low confidence
- Access to secrets in code of documentation: a variable, placeholder or call, not a stored valueCONTRIBUTING.md:41Low confidence
- Network access in prose of documentationCONTRIBUTING.md:49Low confidence
- Executable script in code of a file that runsDockerfile:1High confidence
- Network access in a comment of a file that runsDockerfile:13Low confidence
- Network access in a comment of a file that runsDockerfile:15Low confidence
- Access to secrets in a comment of a file that runsDockerfile:15Low confidence
- Network access in code of a file that runsDockerfile:16High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valueDockerfile:16Low confidence
- Network access in code of a file that runsDockerfile:17High confidence
- Network access in prose of documentationREADME.md:3Low confidence
- Network access in prose of documentationREADME.md:4Low confidence
- Network access in prose of documentationREADME.md:5Low confidence
- Network access in prose of documentationREADME.md:15Low confidence
- Network access in prose of documentationREADME.md:16Low confidence
- Network access in prose of documentationREADME.md:17Low confidence
- Network access in prose of documentationREADME.md:18Low confidence
- Network access in prose of documentationREADME.md:19Low confidence
- Network access in prose of documentationREADME.md:20Low confidence
- Network access in prose of documentationREADME.md:21Low confidence
- Network access in prose of documentationREADME.md:26Low confidence
- Network access in prose of documentationREADME.md:28Low confidence
- Network access in prose of documentationREADME.md:64Low confidence
- Network access in prose of documentationREADME.md:65Low confidence
- Network access in prose of documentationREADME.md:66Low confidence
- Network access in prose of documentationREADME.md:88Low confidence
- Network access in prose of documentationREADME.md:91Low confidence
- Network access in code of documentationREADME.md:101Low confidence
- Network access in code of documentationREADME.md:102Low confidence
- Network access in code of documentationREADME.md:103Low confidence
- Network access in code of documentationREADME.md:104Low confidence
- Network access in code of documentationREADME.md:105Low confidence
- Access to secrets in code of documentationREADME.md:105Low confidence
- Network access in code of documentationREADME.md:106Low confidence
- Network access in prose of documentationREADME.md:113Low confidence
- Access to secrets in prose of documentationREADME.md:113Low confidence
- Network access in prose of documentationREADME.md:123Low confidence
- Network access in prose of documentationREADME.md:124Low confidence
- Network access in code of documentationREADME.md:142Low confidence
- Network access in code of documentationREADME.md:143Low confidence
- Access to secrets in code of documentationREADME.md:143Low confidence
- Network access in code of documentationREADME.md:144Low confidence
- Network access in prose of documentationREADME.md:161Low confidence
- Network access in prose of documentationREADME.md:163Low confidence
- Network access in prose of documentationREADME.md:165Low confidence
- Network access in prose of documentationREADME.md:166Low confidence
and 450 more
Only the first 500 facts are listed.
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Manifest .claude-plugin/marketplace.json | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.