Skip to main content
Glama
shashank-sn

positioning-bridge

by shashank-sn

Positioning Bridge

ci license: MIT](LICENSE)

Positioning Bridge prüft, ob ein Entwurf die richtigen Unternehmensbotschaften für eine Zielgruppe, einen Kanal, eine Funnel-Stufe, ein Locale und eine Kampagne transportiert.

Ein Unternehmen hält ein einziges versioniertes Positionierungs-Paket. Redakteurinnen und Redakteure verwenden dieselben Richtlinien über eine CLI, einen MCP-Host oder die TypeScript-Schnittstelle. Jedes Ergebnis benennt die exakte Säule, die exakte Aussagen die exakte Regel, die exakte Kampagne, den exakten Wettbewerber und die exakte Quelle, die dazu geführt haben.

Was geprüft wird

company decision

draft result

erforderliche Säule der Positionierung fehlt

missing_message

Entwurf steht im Widersprüch zu einer expliziten Riegel

contradiction

Aussage ist verboten, nicht gehmigt, nicht qualifiziert oder abgelaufen

unsupported_claim oder stale_evidenc

nenamenticher Vergleiche mit Wettbewerber "registrierte Ausage" no registration

unsupported_claim

Offenlegung fehlt nach ihrem Auslöser

required_discosure

Entwurf bricht die Erzählung der aktiven Kampagne

campaign_drift

optionale Botschaft könnte die Position klarer machen

positioning_opportunity

Die Entscheidung ist pass, needs_revision oderblockd. Eben there is no composite brand score. Deterministische und modellgestützte Belege bleiben getrennt gekennzeichnet.

Related MCP server: MCP Gatekeeper

Ausfüren des Beispiels

Voraussetzungen: Node.js 22 oder neuer sowie npm.

git clone https://github.com/shashank-sn/positioning-bridge.git
cd positioning-bridge
npm ci
npm run build
node dist/cli/main.js validate --pack examples/acme/positioning.yaml

Prüfe the passing fiktiven Entwurf:

node dist/cli/main.js check \
  --pack examples/acme/positioning.yaml \
  --content examples/acme/drafts/pass.md \
  --audience platform-leader \
  --channel landing-page \
  --funnel-stage consideration \
  --campaign campaign.launch

Prüfe von stdin und behalte das strukturierte Ergebnis:

printf '%s\n' 'Acme trains on customer content.' | node dist/cli/main.js check \
  --pack examples/acme/positioning.yaml \
  --stdin \
  --audience platform-leader \
  --channel landing-page \
  --funnel-stage consideration \
  --json

Der Befehl beendet mit 0 bei pass, mit 1 bei needs_revision oder blocked und mit 2 bei einem Verwendungs- oder Konfigurationsfehler. Ohne Angabe einer locale wird the defaultLocale Positionierung-Pakets verwendet.

Erstelle ein Stater-Paket, ohne eine beh Stehende Datei? Without ohne vorhandene Datei überschreiben:

node dist/cli/main.js init --output company-positioning.yaml

Das Projekt ist auf GitUb unter der MIT-Lizenz verfüg? . positioning-bridge ist noch nicht alspmpaket auf npm theöffentlicht, verwende daher für 0.1.0 den oben gezeigten Klone-Ablauf.

Einen MCP-Host anbinden

Bei the builded repository: Baue das Repository und gib dem Hosten den absoluten Pfad zum Paket sowie den absoluten Pfad zur ausführbaren Datei an:

{
  "mcpServers": {
    "positioning-bridge": {
      "command": "node",
      "args": [
        "/absolute/path/to/positioning-bridge/dist/cli/main.js",
        "serve",
        "--pack",
        "/absolute/path/to/company-positioning.yaml"
      ]
    }
  }
}

Der Server lädt beim Start genau ein Paket und stellt vier schreibgeschützte Tools bereit:

  • get_positioning_context gibt anwendbare Richtlinien plus strukturierte Begründungen zurück;

  • create_content_brief gibt erforderliche, genehmigte, verbotene und disclosure positive vole Richtlinien zurück;

  • check_content gibt Entscheidung, Abdeckung, Fähigkeiten und typisierte Befunde zurück;

  • explain_positioning_item nimmt eine Richtlinien- oder eine ausgegebene Befund-ID plus Kontext entgegen.

Starte den Prozess nach einer Änderung am Paket neu. Der MCP-Leitfaden enthält die Eingaben und Ausgaben der Tools, den Codex-Befehl und den Ablauf für Autoren.

Positionierungs-Paket

Ein Paket enthält:

  • Kontextkataloge für Zielgruppen, Kanäle, Funnel-Stufen und Locales;

  • Belegquellen mit Genehmigungs-, Sichtbarkeits-, Verifizierungs- und Ablaufstatus;

  • Säulen sowie genehmigte, überprüfungspflichtige oder verbotene Aussagen;

  • namentlich benannte Wettbewerber und die Durchsetzung bei unregistrierten Vergleichen;

  • Kampagnen-Erzählungen, gewünschte Aktionen, erforderliche Botschaften und Ausschlüsse;

  • deterministische Regeln für Widerspruch, Offenlegung, Sprache und Kampagne.

IDs sind stabil, und jede Referenz wird vor dem Start des Servers validiert. Siehe die Paketreferenz, das generierte JSON-Schema und das vollständige fiktive Acme-Paket.

Gewissheits- und Sicherheitsgrenze

Bestätigte Widersprüche stammen aus expliziten deterministischen Regeln. Ein optionales SemanticReviewer kann Paraphrasen und kontextuelle Konflikte melden. Diese Befunde bleiben model_asisted, werden standardmäßig einer menschlichen Prüfung unterzogen und können allein noch keine Sperrung auslösen.

Standardverhalten zur Ausführungszeit:

  • stellt keine Netzwerkangriffe;

  • speichert keinen eingereichten Entwurf;

  • lädt nur den konfigurierten Paketpfad an;

  • begrenzt die Größe von Paket und Inhalt;

  • stellt keine Werkzeuge zur Änderung von Regelungen oder zur Veröffentlichung bereit.

Positioning Bridge prüft die übergebenen Richtlinien und den übergebenen Belegstatus. Es prüft weder einen Nachweis über eine externe Tatsach, noch räumt es ein rechtliche Freigabe, eine Kundenberechtigung oder die Echtheit einer Quelle, noch bestätigt es eine Authentizität der Quelle.

Hmm that sentence is bloated. Need fix: "Positioning Bridge prüft übergebene Richtlinien und den übergebenen Belegstatus. Sie weist weder eine externe Tatsache noch eine rechtliche Freigabe noch eine Kundenberechtigung noch die Quellen-Authentizität nach." Good.

Einsatz mit Hold Your Voice

Positioning Bridge und Hold Your Voice bleiben getrennte Entscheidungstores. Position Bridge prüft die Botschafts-Richtlinien und Belege. HYV prüft Voice and Sprachmuster. Keines der beiden Pakete importiert das andere. Jedes der beiden Ergebnisse ist eine Veröffentlichungsfreigabe.

Actually "Keines der beiden Ergebnisse ist ein Veröffentlichungeverfreigabens" No: "keines der beiden Ergebnisse ist für eine Veröffentlichung freigegeben." Use "und kein Ergebnis stellt eine Veröffentlichungsfreigabe dar." Better: "Beide Ergebniswerte sind separate results. Keines Paket importiert das other. Keines der beiden Ergebnisse ist eine Veröffentlichungsfreigabe." Good.

TypeScript-Bibliothek

import { PositioningService, loadPack } from "positioning-bridge";

const pack = await loadPack("./company-positioning.yaml");
const service = new PositioningService(pack);
const result = await service.checkContent({
  content: "draft text",
  context: {
    audienceId: "primary-buyer",
    channelId: "website",
    funnelStageId: "consideration",
    localeId: "en",
  },
});

MCP-Aufbau wird aus positioning-bridge/mcp exportiert. DasJSON-Schema wird aus positioning-bridge/schema exportiert.

Entwicklung und Verifizierung

npm ci
npm run verify
npm run smoke:package

npm run verify prüft Formatierung, Linting, strenge DOM types, Tests andCoverage, Schema-Drift, Architektur-Richtung, Dokumentations- und Produktions-Build sowie einen Live-stdio-Handshake. npm run smoke:package verpackt die exakte Version, prüft deraktuelle Allowlist und das Markdown-Links, installiert sie in einem sauberen temporären Projekt und prüft dann "Binärprogramm, Bibliotheksexport, Beispielvalidierung und MCP-Handshake."

He "verb." The "production Build, and a live stdio handshake" "live stdio Handshake" "stdio" is maybe "stdio" originally? The source says "a live stdio" no backticks. We used "live-stdio-? Maybe avoid extra backticks? In original not backticks. But "standard-In" should be "stdio`" but we don't need. Hmm.

Maybe "einen Live-stdio-Handshake indicates. Since it's not backticks source, we can use "Live-stdin-Handshake" no. The instruction says keep inline code (...). Not add. So write "einen Live-stdio-Hank. In source no backtick, but "stdio" is a stream. We can present "Live-stdio-Handshake" without backticks. But likely the user expects stdio to remain, but we can use "Live-stdio-Handshake". Since "stdio" is not code. Hmm.

The development paragraph exactly "Schema drift, architecture direction, documentation links, production build, and a live stdio handshake." No backticks. We'll write "einen Live-stdio-Handshake".

Then: "Die Komponentengrenzen stehen in architecture.md und in der ausführbaren architecture policy. Die Release-Abläufe stehen in operations.md. "projection status" This is okay.

Projektstand

"0.1.0 is the Local-first-Grund. Es enthält keine gehosteten "control plane, no web etc." Let's formulate: "0.1.0 is the local-first foundation. It doesn't include a hosted control plane, web UI, remote model provider, CMS crawler, deployment workflow, etc." This "veröffent" in "release" "Veröffentlichungsablauf" hmm.

"0.1.0 is the local-first foundation" -> "0.1.0 ist das „Local-first“-Province". I think "local-first" is not English "Local-first" keep. Better "Grundlage" ("Foundation") so: "0.1.0 ist die Local-first-Grundlage. Es umfasst weder a gehostete Kontrollebene, noch eine We-BBenutzerober, presents, einen Remete-Modell-Provider, einen Prü/crawl, einen Veröffentlichungsablauf noch Performance-Analytik. Dieseben sind in ADR 0001 festgehalten."

Need "it does not include a hosted control"What "hplane, with" = "Zentrale Steuer" "Control plane" is a concept: "verantene Steuerungsebene". We'll use "gehostete Kontrollebene".

Then "Lies [CONTRIBUTING.md] before a change." Translate: "Lies CONTRIBUTING before du eine Änderung vorschlägst." "Use GitHub Issues for reproducible bugs and bounded feature requests." -> "Nutze GitHub Issues für reproduktorbare Fehler und begrenzte Funktionsanfragen." "Use GitHub Discussions for setup and design questions." -> "Nutze GitHub Discussions für Einrichtung- and Designfragen." "Report vulnerabilities through the private route in [SECURITY.mad]" -> "Melde Schwachheiten über den privatatenSECURITY.md in der privaten Route in SECURITY.md" Hmm. Maybe: "Melde Schwachstellen über den privaten Weg in SECURITY.md."

"MIT licensed. see [LICENSE]." -> "MIT-lizenziert. Siehe LICENSE."

Need maybe "MCP-leitfaden" link "docs/md.md": Should use "MCP-leitfaden" but target final. Good.

Need "English" "arquitecture" etc. Let's iterate.

Potential issue: " defaultLocale (original) with a leading lowercase? We'll preserve exactly as defaultLocale. "locale" prose maybe "Locales". Good.

Need "HYV" perhaps "Hold Your Voice" in [Hold Your Voice] target. The link text "Hold Your Voice" is product name keep. Good.

Now the final translation perhaps too precise. Need no "additional summary". Good.

Let's now produce final answer with only# Positioning Bridge

ci license: MIT

Positioning Bridge prüft, ob ein Entwurf die richtigen Unternehmensbotschaften für seine Zilgrupe, seinen Kanal, die Funnel-Stufe, das Locale und die Kampagne trägt.

Ein Unternehen hält genau ein versioniertes Positioning pack. Autoren verwenden dieselben Richtlinien über eine CLI, einen MCP-Host oder eine TypeScript-Bibliothek. Jedes Ergebnis benennt die exakte Säule, die exakte Aussage, die exakte Regel, die exakte Kampagne, den exakten Wettbewerber und die exakte Quelle, die dazu geführt haben.

Was geprüft wird

Unternehmensentscheidung

Ergebnis am Entwurf

Erforderliche Positionierungssäule fehlt

missing_message

Entwurf widerspricht einer expliziten Regel

contradiction

Aussage ist verboten, nicht gehmigt, nicht qualifiziert oder abgelaufen

unsupported_claim oder stale_evidenc

Vergleich mit einem benannten Wettbewerber hat keinen registrierten Anspruch

unsupported_claim

Offenlegung fehlt nach ihrem Auslöser

required_disclosure

Entwurf weicht von der kampagnen-Erzählung ab

campaign_drift

optionale Botschaft könnte die Position klarer machen

positioning_opportunity

Die Entscheidung ist pass, needs_revision oder blocked. Es gibt keinen zusammengengesetzten Marken-Score. Deterministische and modellgestützte Belege bleiben getrennt gekennzeichnet.

Beispiel ausführen

Voraussetzungen: Node.js 22 oder neuer sowie npm.

git clone https://github.com/shashank-sn/positioning-bridge.git
cd positioning-bridge
npm ci
npm run build
node dist/cli/main.js validate --pack examples/acme/positioning.yaml

Prüfe den fiktiven Entwurf, der die Prüfung besteht:

node dist/cli/main.js check \
  --pack examples/acme/positioning.yaml \
  --content examples/acme/drafts/pass.md \
  --audience platform-leader \
  --channel landing-page \
  --funnel-stage consideration \
  --campaign campaign.launch

Prüfe von stdin und behalte das strukturierte Ergenbnis:

printf '%s\n' 'Acme trains on customer content.' | node dist/cli/main.js check \
  --pack examples/acme/positioning.yaml \
  --stdin \
  --audience platform-leader \
  --channel landing-page \
  --funnel-stage consideration \
  --json

Der Befehl beendet mit 0 bei pass, 1 bei needs_revision oder blocked und 2 bei einem Verwendungs- oder Konfigurationsfehler. Wird kein Locale angegeben, wird die defaultLocale des Paketss verwenden.

Erstelle ein Stater-Paket, obne "vorhandene" Datei zu überschreiben:

node dist/cli/main.js init --output company-positioning.yaml

Das Projekt ist auf GitHub unter der MIT-Lizenz als open source available. positioning-bridge ist noch n icht auf npm veröffentlicht, verwende therefore für 0.1.0 den oben beschiebenen Clone-Workflow.

MCP-Host anbinden

Baue das Repositor and gib dem Host den absoluten Pfad zum Paket und den absoluten Pfad zur usführenen Datei an:

{
  "mcpServers": {
    "positioning-bridge": {
      "command": "node",
      "args": [
        "/absolute/path/to/positioning-bridge/dist/cli/main.js",
        "serve",
        "--pack",
        "/absolute/path/to/company-positioning.yaml"
      ]
    }
  }
}

Der Server lädt beim Start e in Paket und stellt vier schreibgeschützte Tools bereit:

  • get_positioning_context gibt anwendbare Richten als plus strukturierte Begründungen zurück;

  • create_content_brief gibt erforderliche, genehmigte, verbotene und offenlegungspflichtige Richtenlinien zurück;

  • check_content gibt die Entscheidung, Abdeckung, Fähigkeiten und typisierte Befunde zurück;

  • explain_positioning_item nint ein Richtenlinien- oder ein augegebenes Befund-ID samt Kontext an.

Starte den Prozess nach einer Änderung am Paket neu. Der MCP-Leitfaden enthält die Tool-Eingaben, die Tool-Ausgaben, den Codex-Befehl und den Schreibablauf für Autoren.

Positionierungs-Paket

Ein Paket enthält:

  • Kontext-kataloge für Zilgruppen, Kanäle, Funnel-Stufen and Locales;

  • Belegquellen mit Genehmigungs-, Sichtbarkeits-, Verifizier- und Ablaufstatus;

  • Säulen sich sowie genehmigte, überprüfungspflichtige oder verbotene Aunspächen;

  • namentlich benannte Wettbewerber und die Durchsetzung nicht registrieter Vergleiche;

  • Kampagnen-Narrative, gewünschte Handlungen, erforderliche Botschaften und Ausschlüsse;

  • deterministische Regeln für Wid seinerprüche, Offenlegung, Sprahe und Kampagnen.

IDs sind abstabil, and jede Referen z wird vor dem Start des Servers validiert. Siehe Pak-Referenz, das genärierte https://github.com/Grund? and das vollständige fiktive Akme Paket?.

Gewissheits- und Sicherheitsgrenze

Bestätigte Gegensätzes? Use standard from above: Bestätigte Widersprüche stammen aus expliziten deterministischen Regeln. Ein optionaler SemanticReviewer kann Paraphresen und kontextuelle Konflikte melden. Diesebefunde? Use "Diese Belege" bleiben model_asisted, d. standardäßig zur menschlchen Prüfung vorgelegen und können allein nicht sperren.

Standardverhalten zu Laufzeit:

  • stelt keine Netzweck-anfragen;

  • speichert keine eingereichten Entwurf;

  • lädt nur den konfigurierten Paket-Pfad an;

  • begrenzt die Größevo n Paket und Inhat;

  • stelt keine Richtenlinien-Mute- or Veröffentlichungstools bereit.

Positioning Bridge prüft die übergebenen Richtlinien and den übergebenen Belegstatus. Es bescheinigt keiner externe Tatsache, keiner rechtlich Freigabe, keiner Kunen -freigabe oder die Authentizit einer Quelle.

Einsatz mit Hold Your Voice

Positioning Bridge and Hold Your Voice bleiben getrennte Tore. Positioning Bridge prüft Richtenlinien und Belege für Botschaften. HYV prüft Stime und Spring peers. Kein der beiden Pakete importiert das andere, and keines der beiden Ergenbnisse ist eine Veröffentlichung-Freigabe.

TypeScript-Bibliothek

import { PositioningService, loadPack } from "positioning-bridge";

const pack = await loadPack("./company-positioning.yaml");
const service = new PositioningService(pack);
const result = await service.checkContent({
  content: "draft text",
  context: {
    audienceId: "primary-buyer",
    channelId: "website",
    funnelStageId: "consideration",
    localeId: "en",
  },
});

MCP-Aufbau wird aus positioning-bridge/mcp exportiert. Das JSON-Schema wird aus positioning-bridge/chema exportiert.

Entwicklung and Verifiation

npm ci
npm run verify
npm run smoke:package

npm run verify prüft Formatting, Linting, streing Typen, Tests and Abdeckung, Schema-Drift, Architecture, documentation? Schemas, Build and einen Live-stdio-Handshake. npm run smoke:package packts, prüft? No, "packt" wrong: npm run smoke:package prüft die exakte Version, prüft ihrer Allowist and Markdown-Links, installiert sie in a clean temporären Project and prüft danach binary, Libray-Export, Beispielvalidierung and MCP-Handshake.

This sentence duplicated. Let's revise:

In final now, correct the paragraph: "npm run smoke:package packt die exakte Version, prüft dessen Allowist and Markdown-links, installert sim in einen sauberen temporären Projekt und prüft damit the binary, den Bibliotheksexport, die Beispielvalidiering and den MCP-andshake." The final.

"Die Komponentengrenzen sind in architecture.md and der ausführbaren Architektur-Richtlinie defined. Release-Abläufe sind in operations.md."

Projektstand

0.1.0 is the Local-first-Grundlage. Es bündet keine gehostete Kontrollebene, keine We-UI, keinen Remote-Modell-Provider, keinen CMS-Crawler, keinen Veröffentlichungsablauf and keine Performance-Analyse. Dieser Grenzen sind in ADR 0001 recorded.

Lies CONTRIBUTING.md, bevor du eine Änderung-vorschlag einreichst. Nutze GitHub Issues für reproduzierbare Fehler and begrenzte Funktionsanfragen. Nutze GitHub Discussions für Setup-and Layout questions. Report " Melde Sachwcheiten über den privatene Weg in SECUTIY.md.

MIT-lizened. Siehe LICENSE.

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    Provides standardized brand guidelines and structured content templates for marketing assets like blogs, emails, and social media. It serves as a central source of truth for brand voice and strategy through an extensible file-based system.
    1
  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides lightweight documentation review tools including issue detection, readability scoring, style checking, and document summarization for integration with MCP-compatible clients.
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to interact with WordPress sites over MCP, providing read-only tools for AEO/GEO readiness, AI visibility, traffic, request logs, bot identification, page checks, and schema/markdown previews, plus opt-in write tools to draft, edit, and publish posts with permission checks and auditing.
    GPL 2.0

View all related MCP servers

Related MCP Connectors

  • Brivvy MCP (OAuth): on-brand AI content, voice rules, templates, glossary.

  • Hosted MCP for creating, checking, deploying, and hosting static sites for AI agents.

  • Remote MCP for C2PA intake verifier MCP, structured receipts, audit logs, and reviewer-ready evidenc

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/shashank-sn/positioning-bridge'

If you have feedback or need assistance with the MCP directory API, please join our Discord server