Privacy and analytics

We use necessary technical cookies and, only with your consent, analytics and marketing pixels to improve the website and measure campaigns.

Privacy policyCookie policy
Docs
English
EspañolEnglishFrançaisDeutschItalianoPortuguês

Getting started

  • What is Nömad?
  • Getting started with Nömad
  • Create your brand and complete the Genome
  • Invite your team
  • Glossary

Brand OS

  • What is inside Brand OS
  • What is the Genome?
  • Who is Nödo?
  • Talk to Nödo: voice, cards and ordering from the Store
  • Conversations: your team and Nödo
  • What does a Brand Manager do?
  • Brand Kit and Library
  • Posts and calendar
  • Connections
  • Meetings
  • Files we send you with NödoTransfer
  • Your quotes

Work

  • Work and tasks
  • Ordering work
  • Following, reviewing and approving deliveries
  • Approving the posts Nömad prepares
  • Custom quotes
  • Brand history
  • Yes, there are humans behind it

Account and billing

  • Plans and pricing
  • Billing and payments
  • Paying from the apps (iPhone and Android)
  • People and access
  • Organization and brand roles
  • Workspaces and multiple brands
  • Your name and @username
  • Languages, apps and data
  • Leave, close or delete: account, brands and workspaces
  • Delete and restore: what goes and what stays
  • Inbox and notifications: how we let you know
  • Push notifications on your phone and browser
  • Nömad emails and your preferences

Help

  • How to get help

API

  • Brand API
    • Errors
    • Permissions and roles
    • Events and webhooks
    • Brand
    • Genome
    • Brand Kit
    • Library
    • Works
    • Calendar
    • Connections
    • Publishing
    • Inbox
    • Team
    • Account and team
    • Conversation
    • Memory
    • Questions
    • Media
    • Store
    • Plan
    • Orders
    • Activity
    • Workspace
    • Your account
    • Billing
    • Sync
    • Website and domains
    • Statistics
    • Events

MCP

  • MCP server

Connectors

  • Brand connectors

Nödo and agents

  • Nödo in the brand

Genome

  • Genome specification
API/Brand API
Reference14 min read

Genome

Who the brand is, what it thinks, how it looks.

On this page
  • genome.read · Read the Genome
  • genome.propose · Propose a change
  • genome.check_copy · Check a text
  • genome.judge_copy · Judge a text against the brand
Русский
한국어
日本語
中文
हिन्दी
Open the app
genome.export · Export the brand
  • genome.audit · Audit the Genome
  • genome.ai_visibility · What AI says about the brand
  • genome.competitors · Tracked competitors
  • genome.import_manual · Import the brand manual
  • genome.report.generate · Generate the brand report
  • genome.name.update · Rename the brand
  • genome.field.update · Edit a Genome field
  • genome.fields.confirm · Confirm Genome data
  • genome.versions.list · Genome versions
  • genome.version.diff · What changed in a Genome version
  • genome.version.restore · Restore a Genome version
  • genome.section.complete · Complete a Genome section
  • genome.public_profile.set · Publish the public profile
  • genome.website_change.review · Mark the website change reviewed
  • genome.inheritance.link · Inherit the Genome from another brand
  • genome.inheritance.unlink · Stop inheriting the Genome
  • genome.summary · Genome summary
  • genome.read · Read the Genome

    Who the brand is, what it thinks and how it looks (Genome v2). Ask only for the sections you need; omit sections for a short summary of all of them.

    FieldValue
    KindRead
    HTTP methodPOST /api/v1/genome.read
    MCP toolgenome_read
    Scopegenome.read
    Minimum roleViewer
    Human confirmationNo
    DoorsNödo, Voice, MCP, API, Chat, Screens, Apps
    StatusAvailable
    Widgetrecord

    Input

    {
      sections?: Array<"metadata" | "visualIdentity" | "executiveSummary" | "identity" | "positioning" | "audiences" | "archetypes" | "verbalSystem" | "messageArchitecture" | "marketLandscape" | "customerJourney" | "creativeTerritories" | "commercial" | "guardrails" | "localization" | "brandMemory" | "diagnosticPlan">  // ≤ 8 items
      format?: "concise" | "detailed"  // default "concise" · `concise` returns names and states only; `detailed` adds ids and full fields.
    }

    Output

    {
      revision: integer  // -9007199254740991–9007199254740991
      generatedAt: string
      sections: Record<string, unknown>
      provenance: {
        confidence: "high" | "medium" | "low" | "unknown"
        researchAsOf: string
      }
    }

    genome.propose · Propose a change

    Files a proposed value for one Genome field (key is the field path inside the section, e.g. purpose in identity or headquarters.city in metadata), citing where it comes from. Text fields only; the Kit is edited in the Kit. Nothing changes until a person accepts it in Genome › Memory, which then writes the field, so it needs no confirmation.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/genome.propose
    MCP toolgenome_propose
    Scopegenome.write
    Minimum roleMember
    Human confirmationNo
    DoorsNödo, MCP, API, Chat, Screens, Apps
    StatusAvailable

    Input

    {
      section: "metadata" | "visualIdentity" | "executiveSummary" | "identity" | "positioning" | "audiences" | "archetypes" | "verbalSystem" | "messageArchitecture" | "marketLandscape" | "customerJourney" | "creativeTerritories" | "commercial" | "guardrails" | "localization" | "brandMemory" | "diagnosticPlan"
      key: string
      value: string  // ≤ 2000
      reason: string  // ≤ 500
      citation: {
        conversationId?: string  // uuid
        messageSequence?: integer  // -9007199254740991–9007199254740991
        url?: string  // uri
      }
    }

    Output

    {
      ok: true
      id?: string
      revision?: integer  // -9007199254740991–9007199254740991
    }

    genome.check_copy · Check a text

    Checks a text against the brand rules in the Genome (forbidden words, don't-say swaps, forbidden claims, form of address, emojis) and the advertising rules of its sector (food, health, finance, gambling, environmental claims). Model-free: same answer every time. Also answers the rule part of the brand checklist (yes/no questions compiled from the brand brief) with a score of questions passed over evaluated. Use it when the person asks to check a text, or before saving copy into a draft or a work; it flags, a person decides.

    FieldValue
    KindRead
    HTTP methodPOST /api/v1/genome.check_copy
    MCP toolgenome_check_copy
    Scopegenome.read
    Minimum roleViewer
    Human confirmationNo
    DoorsNödo, Voice, MCP, API, Chat, Screens, Apps
    StatusAvailable
    Widgetreview

    Input

    {
      text: string  // ≤ 8000
    }

    Output

    {
      ok: boolean  // False when any finding is blocking.
      findings: Array<{
        ruleId: string
        source: string  // `brand` for the Genome rules, otherwise the sector pack.
        severity: "block" | "warn"
        match: string
        index: integer  // -9007199254740991–9007199254740991
        message: {
          es: string
          en: string
        }
        suggestion?: string
        reference: string  // Genome path or norm the rule comes from.
      }>
      packs: Array<{
        id: string
        law: string
      }>
      checklist: Array<{
        id: string  // Stable id of the question within this Genome, e.g. `address`, `forbidden_words`, `pack.food`.
        question: {
          es: string
          en: string
        }  // Yes/no question compiled from the brand brief.
        decidedBy: "rule"  // Answered without a model by the checker.
        path: string  // Genome path or norm the question comes from.
        passed: boolean
        severity?: "block" | "warn"  // Strongest finding behind a failure.
        reasons: Array<{
          match: string
          message: {
            es: string
            en: string
          }
          suggestion?: string
        }>
      }>  // The rule-decidable part of the brand checklist, answered for this text. Questions that need a model (voice, tone, proof) are not answered here.
      score: {
        passed: integer  // 0–9007199254740991
        evaluated: integer  // 0–9007199254740991
        value: number  // 0–1 · passed / evaluated; 1 when nothing could be evaluated.
      }  // Checklist questions passed over questions evaluated, for this text only.
    }

    genome.judge_copy · Judge a text against the brand

    The part of the brand checklist a rule cannot answer (whether it sounds like the brand, tone, writing rules, what the brand stays clear of, proof and invention), answered by a model reading the brand brief: yes or no per question, with the words of the text that decide it and why. One model call charged to the brand's AI budget; use genome.check_copy first for the free rule part, and this one when the person wants the voice checked too.

    FieldValue
    KindRead
    HTTP methodPOST /api/v1/genome.judge_copy
    MCP toolgenome_judge_copy
    Scopegenome.read
    Minimum roleViewer
    Human confirmationNo
    DoorsNödo, Voice, MCP, API, Chat, Screens, Apps
    StatusAvailable

    Input

    {
      text: string  // ≤ 8000
    }

    Output

    {
      judged: Array<{
        id: string  // Stable id of the question within this Genome, e.g. `voice_signature`, `writing_rule.0`, `no_invention`.
        question: {
          es: string
          en: string
        }
        decidedBy: "judge"
        path: string  // Genome path the question comes from.
        passed: boolean
        quote: string  // Words of the text the answer rests on; empty when it is about something missing.
        reason: string  // Why yes or no, in the brand's language.
      }>  // Judge questions answered, in checklist order. A question the model left unanswered is not listed.
      asked: integer  // 0–9007199254740991 · Judge questions put to the model.
      score: {
        passed: integer  // 0–9007199254740991
        evaluated: integer  // 0–9007199254740991
        value: number  // 0–1
      }
    }

    genome.export · Export the brand

    The brand as a file for other tools: BRAND.md (how to write as the brand, for any AI agent or writer), DESIGN.md (how it looks, with accessible colour pairs), brand.json (stable machine projection) or W3C design tokens (DTCG 2025.10).

    FieldValue
    KindRead
    HTTP methodPOST /api/v1/genome.export
    MCP toolgenome_export
    Scopegenome.read
    Minimum roleViewer
    Human confirmationNo
    DoorsNödo, Voice, MCP, API, Chat, Screens, Apps
    StatusAvailable
    Widgetfile

    Input

    {
      format: "brand_md" | "design_md" | "brand_json" | "tokens"
    }

    Output

    {
      filename: string
      mimeType: string
      content: string
    }

    genome.audit · Audit the Genome

    What a strategist would object to before trusting the Genome, model-free: contradictions (its own examples or claims breaking its rules or its sector's), placeholders and filler, an advertising register where analysis belongs, the same few words saturating the whole document, missing parts, unclassified sector, data nobody confirmed, a changed homepage and old research. Use it to decide what to ask or propose; the score is a trend, never a grade to show the brand.

    FieldValue
    KindRead
    HTTP methodPOST /api/v1/genome.audit
    MCP toolgenome_audit
    Scopegenome.read
    Minimum roleViewer
    Human confirmationNo
    DoorsNödo, Voice, MCP, API, Chat, Screens, Apps
    StatusAvailable
    Widgetreview

    Input

    {}

    Output

    {
      score: integer  // 0–100
      issues: Array<{
        kind: "contradiction" | "placeholder" | "filler" | "ornament" | "fixation" | "repetition" | "missing_part" | "unclassified" | "unconfirmed" | "undecided_tone" | "website_changed" | "refresh_due"
        severity: "high" | "medium" | "low"
        path: string
        detail: string
      }>
    }

    genome.ai_visibility · What AI says about the brand

    The latest review of what an AI assistant with web search answers when a customer asks about the brand, compared with the Genome: what it gets right, wrong and misses. Paid plans get it monthly (ai_visibility_audits_per_month); free plans once, as a welcome. Use it to propose content or Genome fixes that close the gaps.

    FieldValue
    KindRead
    HTTP methodPOST /api/v1/genome.ai_visibility
    MCP toolgenome_ai_visibility
    Scopegenome.read
    Minimum roleViewer
    Human confirmationNo
    DoorsNödo, Voice, MCP, API, Chat, Screens, Apps
    StatusAvailable
    Widgetreview

    Input

    {}

    Output

    {
      audit: {
        assistant: string
        createdAt: string
        question: string
        recognized: boolean
        accuracy: integer | null
        summary: string
        correct: string[]
        wrong: Array<{
          claim: string
          genomeSays: string
        }>
        missing: string[]
        sourceDomains: string[]
      }
      | null
      monthlyAllowance: integer  // -9007199254740991–9007199254740991 · Reviews per month on the current plan; 0 means only the welcome review.
    }

    genome.competitors · Tracked competitors

    The brand's competitors as light Genomes: what they sell, how they position themselves, how they talk, their prices, recent moves and how they differ from the brand. Paid plans keep them current monthly (competitor_genomes); free plans get a welcome look at two. Use it for positioning, content angles and pricing conversations.

    FieldValue
    KindRead
    HTTP methodPOST /api/v1/genome.competitors
    MCP toolgenome_competitors
    Scopegenome.read
    Minimum roleViewer
    Human confirmationNo
    DoorsNödo, Voice, MCP, API, Chat, Screens, Apps
    StatusAvailable
    Widgetlist

    Input

    {}

    Output

    {
      competitors: Array<{
        name: string
        website: string | null
        origin: "genome" | "discovered"
        researchedAt: string
        whatItSells: string
        positioning: string
        voice: string[]
        priceSignal: string
        strengths: string[]
        weaknesses: string[]
        recentMoves: string[]
        differenceVsBrand: string
      }>
      tracked: integer  // -9007199254740991–9007199254740991 · Competitors the plan keeps current; 0 means only the welcome look.
    }

    genome.import_manual · Import the brand manual

    Reads a brand manual (PDF) from the Library and files, in Genome › Memory, one proposal per Genome field the manual defines (voice, rules, form of address, positioning, limits…), citing the page and the exact sentence. Runs in the background; nothing changes until a person accepts each proposal, so it needs no confirmation. fileId is a Library document id.

    Consumes the brand AI budget.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/genome.import_manual
    MCP toolgenome_import_manual
    Scopegenome.write
    Minimum roleAdmin
    Human confirmationNo
    DoorsNödo, MCP, API, Chat, Screens, Apps
    StatusAvailable
    Widgetprogress

    Input

    {
      fileId: string  // uuid
    }

    Output

    {
      ok: true
      id?: string
      revision?: integer  // -9007199254740991–9007199254740991
    }

    genome.report.generate · Generate the brand report

    Queues the research run that writes the brand report. It runs in the background and a repeat within five minutes is not queued twice. Returns as soon as it is queued.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/genome.report.generate
    MCP toolgenome_report_generate
    Scopegenome.write
    Minimum roleAdmin
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {}

    Output

    {
      ok: true
      id?: string
      revision?: integer  // -9007199254740991–9007199254740991
    }

    genome.name.update · Rename the brand

    Changes the brand display name in the Genome and its brand projection, recording it in the activity. Brands without a Genome yet change the brand record directly.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/genome.name.update
    MCP toolgenome_name_update
    Scopegenome.write
    Minimum roleAdmin
    Human confirmationYes
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      name: string  // ≤ 200
    }

    Output

    {
      ok: true
      id?: string
      revision?: integer  // -9007199254740991–9007199254740991
    }

    genome.field.update · Edit a Genome field

    Sets one Genome field by its dot path (for example strategy.identity.essence) and saves a new revision. Fails on an unknown path, an invalid value or a section inherited from a parent brand.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/genome.field.update
    MCP toolgenome_field_update
    Scopegenome.write
    Minimum roleAdmin
    Human confirmationYes
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      path: string  // ≤ 200
      value: unknown
    }

    Output

    {
      ok: true
      id?: string
      revision?: integer  // -9007199254740991–9007199254740991
    }

    genome.fields.confirm · Confirm Genome data

    Confirms up to 40 Genome fields as they are (what research proposed) without changing their value. Same revision rules as an edit.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/genome.fields.confirm
    MCP toolgenome_fields_confirm
    Scopegenome.write
    Minimum roleAdmin
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      paths: string[]  // ≤ 40 items
    }

    Output

    {
      ok: true
      id?: string
      revision?: integer  // -9007199254740991–9007199254740991
    }

    genome.versions.list · Genome versions

    Every state the brand Genome reached (edits, confirmations, regenerations, restores), newest first, with who made it and which strategy sections changed against the one before. The baseline is the snapshot taken before Genome v3. Content is not returned.

    FieldValue
    KindRead
    HTTP methodPOST /api/v1/genome.versions.list
    MCP toolgenome_versions_list
    Scopegenome.read
    Minimum roleViewer
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      limit?: integer  // 1–60
    }

    Output

    {
      versions: Array<{
        id: string  // uuid
        revision: integer  // -9007199254740991–9007199254740991
        reason: "baseline" | "edit" | "generation" | "restore" | "sync"
        label: string | null
        createdAt: string
        author: string | null  // Display name of who made the change; null for research and automation.
        restoredFrom: string | null
        changedSections: string[]  // Strategy sections that changed against the version before it.
        current: boolean
      }>
    }

    genome.version.diff · What changed in a Genome version

    The Genome fields a version changed against the version before it (same brand): each leaf path with the page section that shows it and the value before and after as short text. Use genome.versions.list for the version ids. The first version has no previous one: every field reads as added.

    FieldValue
    KindRead
    HTTP methodPOST /api/v1/genome.version.diff
    MCP toolgenome_version_diff
    Scopegenome.read
    Minimum roleViewer
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      versionId: string  // uuid
    }

    Output

    {
      versionId: string  // uuid
      previousId: string | null
      changes: Array<{
        path: string  // Leaf path in the Genome document, e.g. `strategy.verbalSystem.toneSliders.formality`.
        section: string | null  // Section of the Genome page that shows it (`voice`, `positioning`, `overview`…); null when the page does not draw it.
        field: string  // The field that names the change: the key under the chapter or under `metadata`.
        detail: string  // What lies below that field on the path; empty for the field itself.
        before: string  // The value before, as short text (lists joined, records by their main text); empty when there was none.
        after: string  // The value after, as short text; empty when it was removed.
        change: "added" | "removed" | "changed"
      }>
      truncated: boolean  // True when more fields changed than the 200 returned.
    }

    genome.version.restore · Restore a Genome version

    Writes the strategy and confirmations of an earlier version back as a new revision. Nothing is lost: the current one stays in the history. The profile (name, place, language), the Kit and sections inherited from a parent brand stay as they are now.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/genome.version.restore
    MCP toolgenome_version_restore
    Scopegenome.write
    Minimum roleAdmin
    Human confirmationYes
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      versionId: string  // uuid
    }

    Output

    {
      ok: true
      id?: string
      revision?: integer  // -9007199254740991–9007199254740991
    }

    genome.section.complete · Complete a Genome section

    Fills with AI the completable parts a Genome section lacks (positioning, verbalSystem, commercial or localization). Returns the completed paths and their sources; an already complete section returns an empty list.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/genome.section.complete
    MCP toolgenome_section_complete
    Scopegenome.write
    Minimum roleAdmin
    Human confirmationYes
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      section: "positioning" | "verbalSystem" | "commercial" | "localization"
    }

    Output

    {
      completed: string[]
      sources: Record<string, unknown>[]
    }

    genome.public_profile.set · Publish the public profile

    Turns the brand public schema.org profile on or off. Returns the profile that is (or would be) published, or null when it cannot be composed.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/genome.public_profile.set
    MCP toolgenome_public_profile_set
    Scopegenome.write
    Minimum roleAdmin
    Human confirmationYes
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      enabled: boolean
    }

    Output

    {
      profile: Record<string, unknown> | null
    }

    genome.website_change.review · Mark the website change reviewed

    Records that the person looked at the detected change of the brand homepage against the Genome, so it stops being flagged.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/genome.website_change.review
    MCP toolgenome_website_change_review
    Scopegenome.write
    Minimum roleAdmin
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {}

    Output

    {
      ok: true
      id?: string
      revision?: integer  // -9007199254740991–9007199254740991
    }

    genome.inheritance.link · Inherit the Genome from another brand

    This brand inherits some Genome sections from another brand of its organization. The caller needs Genome edit rights in both brands; status says why a link did not happen.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/genome.inheritance.link
    MCP toolgenome_inheritance_link
    Scopegenome.write
    Minimum roleAdmin
    Human confirmationYes
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {
      parentBrandId: string  // uuid
      sections: string[]  // ≤ 40 items
    }

    Output

    {
      status: string
    }

    genome.inheritance.unlink · Stop inheriting the Genome

    The brand stops inheriting its Genome: it keeps the Genome as it is and can edit it again.

    FieldValue
    KindWrite
    HTTP methodPOST /api/v1/genome.inheritance.unlink
    MCP toolgenome_inheritance_unlink
    Scopegenome.write
    Minimum roleAdmin
    Human confirmationYes
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {}

    Output

    {
      unlinked: boolean
    }

    genome.summary · Genome summary

    The Genome's state and a few lines of it: industry, essence, positioning, personality and organisation facts (type, city, country, founding year, language). toConfirm lists the core data no person has confirmed yet (path, current value, review when someone disputed it), without what the brand inherits; confirm them with genome.fields.confirm or correct them with genome.field.update. For the whole document use genome.read.

    FieldValue
    KindRead
    HTTP methodPOST /api/v1/genome.summary
    MCP toolgenome_summary
    Scopegenome.read
    Minimum roleViewer
    Human confirmationNo
    DoorsAPI, MCP, Screens, Apps, Nödo
    StatusAvailable

    Input

    {}

    Output

    {
      status: string
      toConfirm?: Array<{
        path: string
        review: boolean
      }>
    }

    Updated on January 1, 1970

    PreviousBrandNextBrand Kit

    In this section

    • Errors
    • Permissions and roles
    • Events and webhooks
    • Brand
    • Brand Kit
    • Library
    • Works
    • Calendar
    Can't find what you need? Write to usWrite to usGo to the app
    © 2026 Nömad · Nömad documentationLinkedInInstagramThreadsFacebookTikTokYouTubeX
    Go to nomad.oooBack to top

    On this page

    • genome.read · Read the Genome
    • genome.propose · Propose a change
    • genome.check_copy · Check a text
    • genome.judge_copy · Judge a text against the brand
    • genome.export · Export the brand
    • genome.audit · Audit the Genome
    • genome.ai_visibility · What AI says about the brand
    • genome.competitors · Tracked competitors
    • genome.import_manual · Import the brand manual
    • genome.report.generate · Generate the brand report
    • genome.name.update · Rename the brand
    • genome.field.update · Edit a Genome field
    • genome.fields.confirm · Confirm Genome data
    • genome.versions.list · Genome versions
    • genome.version.diff · What changed in a Genome version
    • genome.version.restore · Restore a Genome version
    • genome.section.complete · Complete a Genome section
    • genome.public_profile.set · Publish the public profile
    • genome.website_change.review · Mark the website change reviewed
    • genome.inheritance.link · Inherit the Genome from another brand
    • genome.inheritance.unlink · Stop inheriting the Genome
    • genome.summary · Genome summary