Skip to content

Rename: AttestoMCP → CredentAgent — everywhere (code, docs, repos, website) #37

Description

@dzuluaga

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

  • This repo: phases 1–2, PR, review, merge
  • GitHub repo rename attestomcpcredentagent
  • attestomcp-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 knockout
  • STATUS.md: resolve the rename decision; unblock the publish-0.2.0 decision behind the knockout

Prior art: #8 (attesto→attestomcp, ~same scope) and #30 (AttestoMcp→AttestoMCP casing, ~171 sites) — both landed as single reviewed PRs.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Fields

Priority

None yet

Projects

Status
In progress

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions