{"bomFormat":"CycloneDX","specVersion":"1.5","version":1,"serialNumber":"urn:uuid:890c84bc-1175-4c50-9c0c-bd41cdee25b3","metadata":{"timestamp":"2026-10-10T19:28:57Z","tools":[{"vendor":"Ecosystems","name":"Ecosystems SBOM Generator"}],"component":{"type":"application","name":"cameri/ynab-mcp-python"}},"components":[{"type":"library","name":"actions/checkout","version":"v4","purl":"pkg:githubactions/actions/checkout","properties":[{"name":"filePath","value":".github/workflows/main.yml"}]},{"type":"library","name":"actions/setup-python","version":"v5","purl":"pkg:githubactions/actions/setup-python","properties":[{"name":"filePath","value":".github/workflows/main.yml"}]},{"type":"library","name":"aiohappyeyeballs","version":"2.6.1","purl":"pkg:pypi/aiohappyeyeballs","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"aiohttp","version":"3.12.14","purl":"pkg:pypi/aiohttp","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"aiosignal","version":"1.4.0","purl":"pkg:pypi/aiosignal","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"airtrain","version":"0.1.68","purl":"pkg:pypi/airtrain","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"annotated-types","version":"0.7.0","purl":"pkg:pypi/annotated-types","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"anthropic","version":"0.59.0","purl":"pkg:pypi/anthropic","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"anyio","version":"4.9.0","purl":"pkg:pypi/anyio","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"asyncstdlib","version":"3.13.1","purl":"pkg:pypi/asyncstdlib","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"attrs","version":"25.3.0","purl":"pkg:pypi/attrs","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"backoff","version":"2.2.1","purl":"pkg:pypi/backoff","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"betterproto","version":"2.0.0b7","purl":"pkg:pypi/betterproto","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"black","version":"25.1.0","purl":"pkg:pypi/black","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"boto3","version":"1.39.14","purl":"pkg:pypi/boto3","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"botocore","version":"1.39.14","purl":"pkg:pypi/botocore","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"cachecontrol","version":"0.14.3","purl":"pkg:pypi/cachecontrol","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"cachetools","version":"5.5.2","purl":"pkg:pypi/cachetools","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"cerebras-cloud-sdk","version":"1.35.0","purl":"pkg:pypi/cerebras-cloud-sdk","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"certifi","version":"2025.7.14","purl":"pkg:pypi/certifi","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"cffi","version":"1.17.1","purl":"pkg:pypi/cffi","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"cfgv","version":"3.4.0","purl":"pkg:pypi/cfgv","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"charset-normalizer","version":"3.4.2","purl":"pkg:pypi/charset-normalizer","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"click","version":"8.1.8","purl":"pkg:pypi/click","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"colorama","version":"0.4.6","purl":"pkg:pypi/colorama","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"cryptography","version":"45.0.5","purl":"pkg:pypi/cryptography","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"distlib","version":"0.4.0","purl":"pkg:pypi/distlib","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"distro","version":"1.9.0","purl":"pkg:pypi/distro","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"eval-type-backport","version":"0.2.2","purl":"pkg:pypi/eval-type-backport","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"filelock","version":"3.18.0","purl":"pkg:pypi/filelock","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"firebase-admin","version":"7.0.0","purl":"pkg:pypi/firebase-admin","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"fireworks-ai","version":"0.16.4","purl":"pkg:pypi/fireworks-ai","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"frozenlist","version":"1.7.0","purl":"pkg:pypi/frozenlist","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"google-ai-generativelanguage","version":"0.6.15","purl":"pkg:pypi/google-ai-generativelanguage","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"google-api-core","version":"2.25.1","purl":"pkg:pypi/google-api-core","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"google-api-python-client","version":"2.177.0","purl":"pkg:pypi/google-api-python-client","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"google-auth","version":"2.40.3","purl":"pkg:pypi/google-auth","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"google-auth-httplib2","version":"0.2.0","purl":"pkg:pypi/google-auth-httplib2","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"google-cloud-core","version":"2.4.3","purl":"pkg:pypi/google-cloud-core","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"google-cloud-firestore","version":"2.21.0","purl":"pkg:pypi/google-cloud-firestore","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"google-cloud-storage","version":"3.2.0","purl":"pkg:pypi/google-cloud-storage","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"google-crc32c","version":"1.7.1","purl":"pkg:pypi/google-crc32c","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"google-genai","version":"1.27.0","purl":"pkg:pypi/google-genai","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"google-generativeai","version":"0.8.5","purl":"pkg:pypi/google-generativeai","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"google-resumable-media","version":"2.7.2","purl":"pkg:pypi/google-resumable-media","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"googleapis-common-protos","version":"1.70.0","purl":"pkg:pypi/googleapis-common-protos","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"groq","version":"0.30.0","purl":"pkg:pypi/groq","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"grpcio","version":"1.74.0","purl":"pkg:pypi/grpcio","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"grpcio-status","version":"1.71.2","purl":"pkg:pypi/grpcio-status","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"grpclib","version":"0.4.8","purl":"pkg:pypi/grpclib","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"h11","version":"0.16.0","purl":"pkg:pypi/h11","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"h2","version":"4.2.0","purl":"pkg:pypi/h2","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"hpack","version":"4.1.0","purl":"pkg:pypi/hpack","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"httpcore","version":"1.0.9","purl":"pkg:pypi/httpcore","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"httplib2","version":"0.22.0","purl":"pkg:pypi/httplib2","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"httpx","version":"0.28.1","purl":"pkg:pypi/httpx","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"httpx-sse","version":"0.4.1","purl":"pkg:pypi/httpx-sse","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"httpx-ws","version":"0.7.2","purl":"pkg:pypi/httpx-ws","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"hyperframe","version":"6.1.0","purl":"pkg:pypi/hyperframe","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"identify","version":"2.6.12","purl":"pkg:pypi/identify","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"idna","version":"3.10","purl":"pkg:pypi/idna","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"iniconfig","version":"2.1.0","purl":"pkg:pypi/iniconfig","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"isort","version":"5.13.2","purl":"pkg:pypi/isort","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"jinja2","version":"3.1.6","purl":"pkg:pypi/jinja2","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"jiter","version":"0.10.0","purl":"pkg:pypi/jiter","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"jmespath","version":"1.0.1","purl":"pkg:pypi/jmespath","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"loguru","version":"0.7.3","purl":"pkg:pypi/loguru","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"markdown-it-py","version":"3.0.0","purl":"pkg:pypi/markdown-it-py","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"markupsafe","version":"3.0.2","purl":"pkg:pypi/markupsafe","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"mdformat","version":"0.7.22","purl":"pkg:pypi/mdformat","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"mdformat-pyproject","version":"0.0.2","purl":"pkg:pypi/mdformat-pyproject","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"mdurl","version":"0.1.2","purl":"pkg:pypi/mdurl","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"mmh3","version":"5.1.0","purl":"pkg:pypi/mmh3","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"modelcontextprotocol","version":"0.1.0","purl":"pkg:pypi/modelcontextprotocol","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"msgpack","version":"1.1.1","purl":"pkg:pypi/msgpack","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"multidict","version":"6.6.3","purl":"pkg:pypi/multidict","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"mypy-extensions","version":"1.1.0","purl":"pkg:pypi/mypy-extensions","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"nodeenv","version":"1.9.1","purl":"pkg:pypi/nodeenv","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"numpy","version":"2.3.2","purl":"pkg:pypi/numpy","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"openai","version":"1.97.1","purl":"pkg:pypi/openai","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"packaging","version":"25.0","purl":"pkg:pypi/packaging","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"pathspec","version":"0.12.1","purl":"pkg:pypi/pathspec","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"pillow","version":"11.3.0","purl":"pkg:pypi/pillow","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"platformdirs","version":"4.3.8","purl":"pkg:pypi/platformdirs","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"pluggy","version":"1.6.0","purl":"pkg:pypi/pluggy","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"posthog","version":"6.3.1","purl":"pkg:pypi/posthog","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"pre-commit","version":"4.2.0","purl":"pkg:pypi/pre-commit","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"prompt-toolkit","version":"3.0.51","purl":"pkg:pypi/prompt-toolkit","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"propcache","version":"0.3.2","purl":"pkg:pypi/propcache","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"proto-plus","version":"1.26.1","purl":"pkg:pypi/proto-plus","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"protobuf","version":"5.29.5","purl":"pkg:pypi/protobuf","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"pyasn1","version":"0.6.1","purl":"pkg:pypi/pyasn1","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"pyasn1-modules","version":"0.4.2","purl":"pkg:pypi/pyasn1-modules","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"pycparser","version":"2.22","purl":"pkg:pypi/pycparser","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"pydantic","version":"2.11.7","purl":"pkg:pypi/pydantic","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"pydantic-core","version":"2.33.2","purl":"pkg:pypi/pydantic-core","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"pygments","version":"2.19.2","purl":"pkg:pypi/pygments","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"pyjwt","version":"2.10.1","purl":"pkg:pypi/pyjwt","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"pyparsing","version":"3.2.3","purl":"pkg:pypi/pyparsing","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"pytest","version":"8.4.1","purl":"pkg:pypi/pytest","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"python-dateutil","version":"2.9.0.post0","purl":"pkg:pypi/python-dateutil","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"python-dotenv","version":"1.1.1","purl":"pkg:pypi/python-dotenv","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"pyyaml","version":"6.0.2","purl":"pkg:pypi/pyyaml","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"requests","version":"2.32.4","purl":"pkg:pypi/requests","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"rich","version":"14.1.0","purl":"pkg:pypi/rich","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"rsa","version":"4.9.1","purl":"pkg:pypi/rsa","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"ruff","version":"0.12.5","purl":"pkg:pypi/ruff","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"s3transfer","version":"0.13.1","purl":"pkg:pypi/s3transfer","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"shellingham","version":"1.5.4","purl":"pkg:pypi/shellingham","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"six","version":"1.17.0","purl":"pkg:pypi/six","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"sniffio","version":"1.3.1","purl":"pkg:pypi/sniffio","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"tabulate","version":"0.9.0","purl":"pkg:pypi/tabulate","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"tenacity","version":"8.5.0","purl":"pkg:pypi/tenacity","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"together","version":"1.5.21","purl":"pkg:pypi/together","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"tqdm","version":"4.67.1","purl":"pkg:pypi/tqdm","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"typer","version":"0.15.4","purl":"pkg:pypi/typer","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"typing-extensions","version":"4.14.1","purl":"pkg:pypi/typing-extensions","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"typing-inspection","version":"0.4.1","purl":"pkg:pypi/typing-inspection","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"uritemplate","version":"4.2.0","purl":"pkg:pypi/uritemplate","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"urllib3","version":"2.5.0","purl":"pkg:pypi/urllib3","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"virtualenv","version":"20.32.0","purl":"pkg:pypi/virtualenv","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"wcwidth","version":"0.2.13","purl":"pkg:pypi/wcwidth","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"websockets","version":"15.0.1","purl":"pkg:pypi/websockets","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"win32-setctime","version":"1.2.0","purl":"pkg:pypi/win32-setctime","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"wsproto","version":"1.2.0","purl":"pkg:pypi/wsproto","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"yarl","version":"1.20.1","purl":"pkg:pypi/yarl","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"ynab","version":"1.6.0","purl":"pkg:pypi/ynab","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"pytest","version":"^8.4.1","purl":"pkg:pypi/pytest","properties":[{"name":"filePath","value":"pyproject.toml"}]},{"type":"library","name":"ruff","version":"^0.12.5","purl":"pkg:pypi/ruff","properties":[{"name":"filePath","value":"pyproject.toml"}]},{"type":"library","name":"black","version":"^25.1.0","purl":"pkg:pypi/black","properties":[{"name":"filePath","value":"pyproject.toml"}]},{"type":"library","name":"pre-commit","version":"^4.2.0","purl":"pkg:pypi/pre-commit","properties":[{"name":"filePath","value":"pyproject.toml"}]},{"type":"library","name":"mdformat","version":"^0.7.16","purl":"pkg:pypi/mdformat","properties":[{"name":"filePath","value":"pyproject.toml"}]},{"type":"library","name":"mdformat-pyproject","version":"^0.0.2","purl":"pkg:pypi/mdformat-pyproject","properties":[{"name":"filePath","value":"pyproject.toml"}]},{"type":"library","name":"httpx","version":"^0.28.1","purl":"pkg:pypi/httpx","properties":[{"name":"filePath","value":"pyproject.toml"}]},{"type":"library","name":"ynab","version":"(\u003e=1.6.0,\u003c2.0.0)","purl":"pkg:pypi/ynab","properties":[{"name":"filePath","value":"pyproject.toml"}]},{"type":"library","name":"modelcontextprotocol","version":"(\u003e=0.1.0,\u003c0.2.0)","purl":"pkg:pypi/modelcontextprotocol","properties":[{"name":"filePath","value":"pyproject.toml"}]}]}