Catalog npm
PACKAGE EXPLORERView in registry

@0xhoneyjar/beacon-schema

npm

Sealed Effect Schema for the Freeside MCP federation beacon contract. Cycle C base · Cycle D extends with docs.* additively.

Versions collected1
Direct dependencies5From release 0.1.0
Last observed21 Oct, 08:56 UTC

README

Current package documentation

@0xhoneyjar/beacon-schema

Sealed Effect Schema for the Freeside MCP federation beacon contract. Workspace package inside freeside-mcp-gateway/packages/beacon-schema/.

Cycle C v0.3 broadcast layer · base shape (schema_version: "2"). Cycle D extends the docs.* block additively (no breaking change · v0.2.0 bump).

Disambiguation

Two names look similar — they are not the same thing.

NameWhatWhereAudience
construct-beaconConstruct in the constructs-network registry · ships SKILLS for AI-content-readability + MCP-codegen authoring (auditing-content, defining-mcp-tools, generating-markdown, accepting-payments)constructs.networkAuthors writing a beacon.yaml for their MCP construct
@0xhoneyjar/beacon-schemanpm package · sealed Effect Schema for BeaconV2Schema runtime validation + JSON Schema export + build-beacon-json CLInpm registry · gateway monorepoGateway implementation + construct build steps + future external integrators

Read it as: construct-beacon HELPS YOU AUTHOR a beacon.yaml; @0xhoneyjar/beacon-schema VALIDATES that your beacon.yaml conforms to the federation contract.

Install

pnpm add -D @0xhoneyjar/beacon-schema
# requires effect ^3.10.0 as peerDep

Use · validate a beacon at runtime

import { BeaconV2Schema, decodeBeacon } from "@0xhoneyjar/beacon-schema";
import { Effect } from "effect";

const result = await Effect.runPromise(
  decodeBeacon(JSON.parse(rawBeaconJson))
);
// result is a typed BeaconV2 · throws on invalid input

Use · YAML→JSON adapter (build step)

npx build-beacon-json --in beacon.yaml --out app/.well-known/beacon.json

Wired into each construct's package.json:

{
  "scripts": {
    "build:beacon": "build-beacon-json --in beacon.yaml --out app/.well-known/beacon.json"
  }
}

Exit codes:

CodeMeaning
0Validation passed · JSON written
1Validation failed · ParseError on stderr
2Usage error (missing --in / --out)

Use · JSON Schema export

import { BeaconV2JsonSchema } from "@0xhoneyjar/beacon-schema";
// canonical JSON Schema · publish at /.well-known/beacon-schema/v2.json

Schema shape (v2)

# beacon.yaml v2 · minimal
schema_version: "2"
mcp:
  shape: data | tool | proxy
  paths: [stdio, remote-http]
  remote: { transport: streamable-http, endpoint: ... }    # required if paths includes remote-http
  auth: { kind: none | api-key, header?, credentials_ref? }
  capabilities: [tools, resources, prompts, sampling, logging]
  tools: [...]
  pricing: { model: free | per-call | subscription | pay-per-call, description }
  publisher: <org>

Auth refine rules

auth.kindheadercredentials_ref
noneMUST be omittedMUST be omitted
api-keyREQUIREDREQUIRED
jwt, oauthreserved · v0.3 schema accepts but gateway throws CredentialResolverNotImplemented at boot

credentials_ref.key convention

SCREAMING_SNAKE_CASE only (Railway env-var pattern · max 128 chars).

docs: block

Cycle C ships docs: Schema.optional(Schema.Unknown) — accepts any docs payload during the transition. Cycle D files an additive PR replacing Schema.Unknown with a concrete DocsBlockSchema (tagline + example_invocations + assets + changelog_url). See Cycle D coordination contract.

Develop

pnpm install        # from repo root · workspace setup
pnpm typecheck      # tsc --noEmit
pnpm build          # tsc -b → dist/
pnpm test           # tsx --test tests/*.test.ts (14 tests)

Versioning

VersionCycleChange
0.1.0Cycle C v0.3 (this)Base BeaconV2Schema · mcp + cli + payment + auth + credentials_ref · docs:Schema.Unknown placeholder
0.2.0Cycle D (planned · additive PR)Replaces docs: Schema.Unknown with DocsBlockSchema (tagline + example_invocations + assets + changelog_url)
1.0.0After v0.3 stablePromote to 1.0 once schema is exercised by 3+ tenants in production

License

MIT

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Versions 1

Collected releases
VersionPublishedDirect dependenciesOpen version
0.1.0Registry latest3 May 20265

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Metadata history

Meaningful changes
Current collected state Current

Observed since 21 Oct, 08:56 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:5ede2ba66b51f9edcfe074a6b8a081b41d68866d72da531b341b2632e94b3724