{
  "markdown": "<a href=\"https://playbykey.com\">\n  <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"assets/logo-dark.svg\" />\n    <img src=\"assets/logo-light.svg\" alt=\"PlayByKey\" width=\"220\" height=\"42\" />\n  </picture>\n</a>\n\n# Developer Tools\n\nPackages for PlayByKey - see the table below for what's here.\n\n- **npm:** [npmjs.com/package/@playbykey/theory](https://www.npmjs.com/package/@playbykey/theory)\n- **Documentation:** [theory-engine.docs.playbykey.com](https://theory-engine.docs.playbykey.com) - interactive playgrounds\n- **Changelog:** [GitHub Releases](https://github.com/DigitalBrewLLC/playbykey-dev-tools/releases)\n\n---\n\n## Install\n\n```sh\nnpm install @playbykey/theory\npnpm add @playbykey/theory\nyarn add @playbykey/theory\nbun add @playbykey/theory\n```\n\nQuickstart and API examples: [packages/theory/README.md](./packages/theory)\n\n---\n\n## Why @playbykey/theory\n\n- **Foundation music theory engine:** music theory as code. Modes, keys, intervals, and scale relationships resolved deterministically; one source of truth every app, notation tool, or AI agent can build on.\n- **Zero dependencies:** no transitive baggage; safe for agents, edge runtimes, and tight bundles\n- **Strictly typed:** every function's types exported alongside it, no `any`\n- **Agent-ready:** copy-paste LLM context prompt and [interactive docs](https://theory-engine.docs.playbykey.com)\n- **Sharps-only notation:** one canonical spelling per note (`C#`, not `Db`) keeps the `Note` type safe and unambiguous. Flats are fully supported for both input (`parseNote`/`parseNoteToken` accept `Db`, `Eb`, `Gb`, `Ab`, `Bb`) and output (`getFlats`/`getEnharmonicLabels`), without extending `Note` itself.\n\n---\n\n## Packages\n\n| Package                                          | Description                                                                                             | Links                                                                                                                                                                                   |\n| ------------------------------------------------ | ------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [`@playbykey/theory`](./packages/theory)         | Zero-dependency music theory engine - scales, modes, intervals, chords, progressions, key relationships | [npm](https://www.npmjs.com/package/@playbykey/theory) · [docs](https://theory-engine.docs.playbykey.com) · [changelog](https://github.com/DigitalBrewLLC/playbykey-dev-tools/releases) |\n| [`@playbykey/theory-mcp`](./packages/theory-mcp) | MCP server that exposes the theory engine as AI-callable tools                                          | [npm](https://www.npmjs.com/package/@playbykey/theory-mcp) · [README](./packages/theory-mcp)                                                                                            |\n| [`theory-docs`](./packages/theory-docs)          | Starlight documentation site (private workspace package)                                                | [live site](https://theory-engine.docs.playbykey.com) · [README](./packages/theory-docs)                                                                                                |\n\n---\n\n## License\n\nMIT for the repository tooling and `@playbykey/theory`. See [LICENSE](./LICENSE).\nIndividual packages may declare their own license in their `package.json`.\n",
  "bytes": 3601,
  "sha": "a456b6f3f0c2a856240c6240e1fbf6ef7e3f8ca961758bb5ce042831c3c8aa7a",
  "repo_slug": "digitalbrewllc/playbykey-dev-tools",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_com_playbykey_theory_mcp_4ae650f5/readme"
}