configure_project
Register a project and associate it with your app's URLs so the Pincushion extension automatically activates for visitors on those URLs.
Instructions
Register a Pincushion project and associate it with your app's URLs. Once registered, anyone visiting those URLs with the Pincushion extension installed will automatically see the pin UI — no meta tag or manual setup needed. Pass both your local dev URL and your live/staging URL so the extension activates in all environments. Optional traceability knobs (commitTrailers, attributionComments, recordCommitSha) control how implemented pins are recorded in git and source — see each property's description. NOTE for read-only use cases: if you only need to look up brand context, URLs, or other project metadata, call get_project_context instead — configure_project mutates state (upserts the project row, syncs to cloud, creates a deploy hook, idempotently inserts the bot member).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Human-readable project name (e.g. "Superbill Pro", "My SaaS Staging") | |
| urls | No | URLs or origins where this project lives. Include both local and live environments (e.g. ["localhost:3000", "superbill-pro.vercel.app"]). The extension activates automatically on any matching URL. | |
| autoCritique | No | When true (default for Pro/Team), every deploy-hook trigger enqueues an AI critique request the dev can run via /critique-latest-deploy. Set false to opt out without dropping plan. Free licenses ignore this — auto-queue is a Pro/Team feature. | |
| brandContext | No | LEGACY single-blob brand context (max 2048 chars). Kept for back-compat. Prefer the layered `critiqueContext` + `critiquePolicy` + `critiqueSignals` triplet — `get_project_context` falls back to brandContext only when no compiled critique context exists. | |
| commentAccess | No | Who can drop pins on this project. "open" (default — Free, Pro, Team) — anyone with the URL. "domain" (Pro/Team) — only emails in the allowedDomains list. "invited" (Pro/Team) — only emails added via add_member. Free projects can only use "open"; the server returns 402 plan_required if a Free license attempts "domain" or "invited". | |
| allowedDomains | No | Bare domains permitted to comment when commentAccess is "domain" (e.g. ["acme.com", "acme.co.uk"]). Required for "domain" mode, ignored otherwise. | |
| commitTrailers | No | Which trailers go in the body of pin commits. "minimal" (default): Pin-ID only — today's behavior. "standard": adds Reviewed-By with the pin's approver, suppressed when the approver is the same person as the committer. "full": standard plus Pincushion-Pin-Url for terminal-first workflows. Per-shell override: set env PINCUSHION_TRAILERS=off to force minimal regardless of project setting. | |
| critiquePolicy | No | User-editable critique policy override (max 4096 chars). Survives recompiles, so users can hand-tune what good critique looks like for their project. Example: "Weight copy concerns 2x. Ignore AAA contrast — audience is technical developers. Reject playful microcopy; tone is restrained, confident." Empty / null means "no override — use signals alone". | |
| critiqueContext | No | Compiled critique brief (max 8192 chars). The Pincushion AI critic loads THIS into its prompt at pin time. Produced by the dev agent at /setup or /refresh-brand by synthesizing `critiqueSignals` + `critiquePolicy` + recent resolved-pin patterns into a tight markdown brief. Updating this stamps `critiqueContextCompiledAt` + a pin-count baseline for staleness detection. Pass null to clear and force a recompile. | |
| critiqueSignals | No | Raw brand signals the dev agent gathered from the repo at /setup or /refresh-brand. Shape is flexible JSONB — recommended keys: { framework: e.g. "next-app-router"|"astro"|"static-html", projectType: "marketing"|"app"|"mixed", pages: [{ url, source, slice, headings, ctas, components, bodyExcerpt }], themeTokens, brandDocs, readmeExcerpt, competitors, mission, audience, tone, tenantContexts (reserved/null in v1 — future multi-tenant SaaS support keyed by pageUrl prefix), sources }. Retained for traceability + future recompiles; the AI critic does NOT read this directly — it reads the compiled `critiqueContext` instead. | |
| recordCommitSha | No | Whether fix_and_resolve stores the implementing commit SHA on the pin for the dashboard backlink. Default: true. Invisible plumbing — has no source-code or commit-log cost. Set false only if you specifically don't want commit SHAs synced to Pincushion. | |
| attributionComments | No | When the implementing agent should leave inline source comments. "off" (default): never — keep code clean, rely on the commit. "context-warrants": one-line comment ONLY when the pin captures a non-obvious WHY (a constraint, intent, or rationale not self-evident from the diff). "always": every Pincushion-implemented change gets a comment (escape hatch for teams that want maximum visibility and accept the rot risk). Format is fixed: // Pincushion <pinId>: <one-line WHY>. |