Decision
Team decision (2026-07-08): the project renames AttestoMCP → CredentAgent. This executes the rename mandated by LF brand counsel (Daniel Scales): "MCP" fused into the name implies the project is run by the MCP project (AgenticAI Foundation mark) and violates the LF trademark policy; descriptive use survives in the tagline. CredentAgent contains no "MCP" token → satisfies the counsel ruling.
Clearance context (docs/naming-clearance.md, evaluated 2026-07-02): CredentAgent had the cleanest exact clearance of any candidate checked — npm free (credentagent, credent-agent, bare credent), .com/.dev/.io unregistered, zero exact company/product hits. Recorded advisory flags (not blockers, kept for the record): generic "-Agent" suffix weakens the mark; "cred-" root neighbors (Credant/Dell homophone, CredenTek); says credential more than consent. Standing constraint: a professional USPTO+EUIPO knockout (classes 9/36/42) before npm publish — fold CredentAgent into the counsel brief already queued to Daniel.
Canonical forms (the mapping table)
| Context |
Old |
New |
| Brand / class / prose |
AttestoMCP |
CredentAgent |
| Exported class + options |
AttestoMCP, AttestoMCPOptions |
CredentAgent, CredentAgentOptions |
| camelCase (manifest fn) |
attestoMCPManifest |
credentAgentManifest |
| npm packages |
@openmobilehub/attestomcp-gate, -storefront |
@openmobilehub/credentagent-gate, -storefront |
| Routes (ceremony rails) |
/attestomcp/* |
/credentagent/* |
| GitHub repo |
openmobilehub/attestomcp |
openmobilehub/credentagent |
| Website repo |
openmobilehub/attestomcp-website |
openmobilehub/credentagent-website |
| Wallet server working name |
attestomcp-wallet |
credentagent-wallet |
| Standalone legacy brand |
Attesto / attesto (prose, examples) |
CredentAgent / credentagent (case-by-case — see exclusions) |
| Tagline (counsel-compliant) |
— |
"CredentAgent — the consent gate for MCP agents" |
Measured scope (2026-07-08, excl. node_modules/dist/.git)
This repo: AttestoMCP 209× / 55 files · attestomcp 773× / 85 files · attestoMCP 1× · standalone attesto/Attesto ~1,380× / 112 files (mostly substrings; standalone uses need case-by-case review).
attestomcp-website: AttestoMCP 22× / 5 files · attestomcp 35× / 3 files · Attesto 35× / 6 files · attesto 94× / 11 files.
Demo repo (openmobilehub/mcp-apps-shopping-demo): imports AttestoMCP / attestoMCPManifest + workspace deps (tracked there as #26 — retarget it to the new names).
⚠️ Rename-EXEMPT files (lesson from PR #8, which mangled history)
The #8 bulk rename corrupted docs/naming-clearance.md by rewriting historical analysis. These files reference historical names as history and must NOT be blanket-replaced (add a one-line "historical names" note at top instead):
docs/naming-clearance.md, docs/naming-counsel-brief.md
docs/superpowers/research/* (dated research records)
- STATUS.md Done log rows and any dated decision text quoting old names
- CHANGELOG-style history, closed-PR references
Execution plan (single PR after #31/#32 merge)
Phase 0 — Preflight (blocking): merge PR #32 then #31 first (renaming across open PRs = conflict hell). Branch rename/credentagent off clean main. Freeze other work for the day.
Phase 1 — Scripted pass: case-aware replace (AttestoMCP→CredentAgent, attestoMCP→credentAgent, attestomcp→credentagent) over the repo minus the exemption list; then a separate reviewed pass for standalone Attesto/attesto.
Phase 2 — Manual pass: package.json names + lockfile, README badges/links, CLAUDE.md, .github/workflows/* (incl. publish.yml package order), issue/PR templates, examples/, spike docs, route constants + any hardcoded rail URLs in page JS + tests.
Phase 3 — Repo-level ops: GitHub repo rename (old URLs auto-redirect, but update self-references), website repo rename + its Vercel project/domain settings, demo repo PR (retarget #26), org-wide code search for stragglers.
Phase 4 — Verification gates ("no file out of date"):
grep -ri attestomcp (minus exemptions) = 0
grep -riE '\\battesto\\b' (minus exemptions) = 0 or consciously accepted
- Both packages build + full test suite green (228 tests) — the suite itself proves routes/class renames are coherent
- Website builds + link check; demo repo smoke test against workspace
- README/API-surface honesty check (CLAUDE.md rule: READMEs stay in sync)
Phase 5 — Post: STATUS.md decision resolved → Done log; naming docs get closure notes; counsel brief updated to name CredentAgent for the knockout; npm scope reserved (@openmobilehub/credentagent-* — publish stays behind the knockout per standing constraint).
Cross-repo checklist
Prior art: #8 (attesto→attestomcp, ~same scope) and #30 (AttestoMcp→AttestoMCP casing, ~171 sites) — both landed as single reviewed PRs.
Decision
Team decision (2026-07-08): the project renames AttestoMCP → CredentAgent. This executes the rename mandated by LF brand counsel (Daniel Scales): "MCP" fused into the name implies the project is run by the MCP project (AgenticAI Foundation mark) and violates the LF trademark policy; descriptive use survives in the tagline. CredentAgent contains no "MCP" token → satisfies the counsel ruling.
Clearance context (
docs/naming-clearance.md, evaluated 2026-07-02): CredentAgent had the cleanest exact clearance of any candidate checked — npm free (credentagent,credent-agent, barecredent),.com/.dev/.iounregistered, zero exact company/product hits. Recorded advisory flags (not blockers, kept for the record): generic "-Agent" suffix weakens the mark; "cred-" root neighbors (Credant/Dell homophone, CredenTek); says credential more than consent. Standing constraint: a professional USPTO+EUIPO knockout (classes 9/36/42) before npm publish — fold CredentAgent into the counsel brief already queued to Daniel.Canonical forms (the mapping table)
AttestoMCPCredentAgentAttestoMCP,AttestoMCPOptionsCredentAgent,CredentAgentOptionsattestoMCPManifestcredentAgentManifest@openmobilehub/attestomcp-gate,-storefront@openmobilehub/credentagent-gate,-storefront/attestomcp/*/credentagent/*openmobilehub/attestomcpopenmobilehub/credentagentopenmobilehub/attestomcp-websiteopenmobilehub/credentagent-websiteattestomcp-walletcredentagent-walletAttesto/attesto(prose, examples)CredentAgent/credentagent(case-by-case — see exclusions)Measured scope (2026-07-08, excl. node_modules/dist/.git)
This repo:
AttestoMCP209× / 55 files ·attestomcp773× / 85 files ·attestoMCP1× · standaloneattesto/Attesto~1,380× / 112 files (mostly substrings; standalone uses need case-by-case review).attestomcp-website:
AttestoMCP22× / 5 files ·attestomcp35× / 3 files ·Attesto35× / 6 files ·attesto94× / 11 files.Demo repo (
openmobilehub/mcp-apps-shopping-demo): importsAttestoMCP/attestoMCPManifest+ workspace deps (tracked there as #26 — retarget it to the new names).The #8 bulk rename corrupted
docs/naming-clearance.mdby rewriting historical analysis. These files reference historical names as history and must NOT be blanket-replaced (add a one-line "historical names" note at top instead):docs/naming-clearance.md,docs/naming-counsel-brief.mddocs/superpowers/research/*(dated research records)Execution plan (single PR after #31/#32 merge)
Phase 0 — Preflight (blocking): merge PR #32 then #31 first (renaming across open PRs = conflict hell). Branch
rename/credentagentoff cleanmain. Freeze other work for the day.Phase 1 — Scripted pass: case-aware replace (
AttestoMCP→CredentAgent,attestoMCP→credentAgent,attestomcp→credentagent) over the repo minus the exemption list; then a separate reviewed pass for standaloneAttesto/attesto.Phase 2 — Manual pass:
package.jsonnames + lockfile, README badges/links, CLAUDE.md,.github/workflows/*(incl. publish.yml package order), issue/PR templates, examples/, spike docs, route constants + any hardcoded rail URLs in page JS + tests.Phase 3 — Repo-level ops: GitHub repo rename (old URLs auto-redirect, but update self-references), website repo rename + its Vercel project/domain settings, demo repo PR (retarget #26), org-wide code search for stragglers.
Phase 4 — Verification gates ("no file out of date"):
grep -ri attestomcp(minus exemptions) = 0grep -riE '\\battesto\\b'(minus exemptions) = 0 or consciously acceptedPhase 5 — Post: STATUS.md decision resolved → Done log; naming docs get closure notes; counsel brief updated to name CredentAgent for the knockout; npm scope reserved (
@openmobilehub/credentagent-*— publish stays behind the knockout per standing constraint).Cross-repo checklist
attestomcp→credentagentattestomcp-website→ content rename + repo rename (companion issue there)mcp-apps-shopping-demo: update deps/imports (supersedes its Rename public API identifier AttestoMcp → AttestoMCP (all-caps MCP brand token) #26 wording)docs/naming-counsel-brief.md: add CredentAgent as the chosen name for the USPTO/EUIPO knockoutPrior art: #8 (attesto→attestomcp, ~same scope) and #30 (AttestoMcp→AttestoMCP casing, ~171 sites) — both landed as single reviewed PRs.