{"service":"Brand Guide","protocol":{"transport":"A2A JSON-RPC 2.0 over HTTPS POST","endpoint":"https://brand.neverunless.com/a2a/","auth":"Authorization: Bearer <pspace platform token>","methods":["message/send","tasks/get","tasks/cancel"],"limits":{"max_part_bytes":65536}},"skills":{"brand-identity-brief":{"what":"The structured seven-phase working brief for creating a brand identity, with your inputs slotted in.","send":{"method":"message/send","params":{"metadata":{"skill_id":"brand-identity-brief"},"message":{"parts":[{"type":"data","data":{"brand_name":"<name>","audience":"<who it's for>","core":"<value / mission / story / idea>"}}]}}},"returns":"brief, phases[] (step, name, produce[], gates[]), how_to_run, after[]","honesty":"The service guarantees the methodology; your model does the creative work."},"brand-context":{"what":"Brand facts converted into Design Guide's params.context.brand layer — inline facts, or a stored brand resolved by slug.","send":{"method":"message/send","params":{"metadata":{"skill_id":"brand-context"},"message":{"parts":[{"type":"data","data":{"facts":{"brand_name":"<name>","voice_rules":["<rule>"],"palette":["#20564a"],"tone":"<tone>","banned_terms":["<term>"]}}}]}}},"stored_form":{"data":{"slug":"<brand slug>","version":"<optional; omit for latest>"}},"returns":"context.brand { rules[] with stable ids, vendor_terms[] }; stored resolutions add source (brand XRI) + synced_at","composes_with":"https://design.neverunless.com/docs"},"detect-brand":{"what":"The brand elements that already exist in a project, each framed as a decision: persist, change, or add to.","send":{"method":"message/send","params":{"metadata":{"skill_id":"detect-brand"},"message":{"parts":[{"type":"data","data":{"brand_name":"<optional>","css":"<concatenated stylesheets>","html":"<a representative page>","copy":"<product copy samples>","file_hints":["logo.svg","favicon.ico"]}}]}}},"returns":"detected { palette with role guesses, tokens, typography, dark_theme, logo_candidates }, triage[] (element, evidence, decide: persist|change|add), draft_facts ready for put-brand after the human decides","honesty":"This service reads only what you send; your agent extracts from the project. Detection counts and measures — naming the tone and making the persist/change/add calls stays with the human."},"direction-board":{"what":"An interactive direction-choice page: 2-4 contrasting directions, each rendered in light and dark with computed contrast, stored and served at a shareable URL.","send":{"method":"message/send","params":{"metadata":{"skill_id":"direction-board"},"message":{"parts":[{"type":"data","data":{"brand_name":"<name>","directions":[{"name":"<direction name>","idea":"<one line>","big_word":"<one evocative word set huge in the display face>","mood":{"feels":["edited","confident"],"never_feels":["corporate"],"tensions":[{"axis":"calm — urgent","position":0.7}]},"references":{"words":["galley proofs","brass"],"anti":["startup gradients"]},"mandatories":{"colors":[{"hex":"#C8102E","role":"accent","why":"the red on the truck since 1994"}],"words":["<phrases that must survive>"]},"display_font":"ui-serif, Georgia, serif","body_font":"ui-sans-serif, system-ui, sans-serif","light":{"bg":"#f7f5f0","ink":"#1f1d18","soft":"#5d594f","accent":"#20564a","accent_ink":"#f4f1ea"},"dark":{"bg":"#161510","ink":"#ebe7dd","soft":"#a49f92","accent":"#8cc5b3","accent_ink":"#11221d"},"sample":{"headline":"<h1 to show>","body":"<short paragraph>","button":"<cta>"}}]}}]}}},"returns":"board_url (open it; a human picks 'direction, look N'), directions[], contrast_failures[] when any pair misses WCAG — mandatory colors are audited on both theme backgrounds","honesty":"The board renders and measures; it does not choose. A mandated accent color REPLACES the palette accent in both themes — non-negotiables are working colors, not captions. Both color schemes are always shown because the theme you don't develop in is where bugs live."},"get-brand":{"what":"A stored brand by slug (latest) or slug+version.","send":{"method":"message/send","params":{"metadata":{"skill_id":"get-brand"},"message":{"parts":[{"type":"data","data":{"slug":"<slug>","version":1}}]}}},"returns":"xri (pspace://brand/<slug>@<version>), slug, version, latest, created_at, author, facts (brandy-facts@0.1)"},"put-brand":{"what":"Store a brandy-facts document as a new immutable brand version.","send":{"method":"message/send","params":{"metadata":{"skill_id":"put-brand"},"message":{"parts":[{"type":"data","data":{"facts":"<brandy-facts@0.1 document>"}}]}}},"auth":"Organizer-gated: the JSON-RPC envelope's top-level meta.attestation_proof_jwt must verify against the platform JWKS and carry the organizer role for the Lovely Design possibility.","returns":"xri, slug, version, previous_version"}},"example_curl":"curl -s https://brand.neverunless.com/a2a/ -H 'Authorization: Bearer <token>' -H 'Content-Type: application/json' -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"message/send\",\"params\":{\"metadata\":{\"skill_id\":\"brand-identity-brief\"},\"message\":{\"parts\":[{\"type\":\"data\",\"data\":{\"brand_name\":\"Acme\",\"audience\":\"solo founders\",\"core\":\"calm tools for chaotic weeks\"}}]}}}'"}