{"record":{"id":"844b71450ffd0775","repo":"langchain-ai/deepagents","slug":"no-marketplace-manifest-found-under-root","errorCode":null,"errorMessage":"No marketplace manifest found under {root}","messagePattern":"No marketplace manifest found under (.+?)","errorType":"exception","errorClass":"MarketplaceError","httpStatus":null,"severity":"error","filePath":"libs/code/deepagents_code/plugins/marketplace.py","lineNumber":858,"sourceCode":"\n\ndef load_marketplace(root: Path) -> PluginMarketplace:\n    \"\"\"Load a marketplace manifest from a root directory.\n\n    Args:\n        root: Marketplace root directory.\n\n    Returns:\n        Parsed marketplace.\n\n    Raises:\n        MarketplaceError: If no marketplace manifest exists or it is invalid.\n    \"\"\"\n    root = root.expanduser().resolve()\n    manifest_path = find_marketplace_manifest(root)\n    if manifest_path is None:\n        msg = f\"No marketplace manifest found under {root}\"\n        raise MarketplaceError(msg)\n    return _load_marketplace_from_path(root, manifest_path)\n","sourceCodeStart":840,"sourceCodeEnd":860,"githubUrl":"https://github.com/langchain-ai/deepagents/blob/a1af029e6e73cb17c36bff823d227747b28e91e1/libs/code/deepagents_code/plugins/marketplace.py#L840-L860","documentation":"load_marketplace resolves the given root directory and searches for a marketplace manifest with find_marketplace_manifest. If no recognizable manifest file exists anywhere under the root, MarketplaceError 'No marketplace manifest found under {root}' is raised. This is the discovery-failure case, distinct from a manifest that exists but is invalid.","triggerScenarios":"Calling load_marketplace(root) (directly or via add_local_marketplace, _validate_marketplace_repository, materialize_marketplace_source, load_marketplace_location) with a directory that contains no manifest matching find_marketplace_manifest's expected filename(s).","commonSituations":"Pointing at the wrong directory (repo root instead of subdirectory holding the manifest, or vice versa); cloning a repo that stores the manifest under a different name; typos in the configured marketplace path; empty or partially cloned checkout.","solutions":["Verify the directory contains the expected manifest filename (e.g. marketplace.json / .marketplace.json) with `ls`; point load_marketplace at the directory that actually holds it.","Fix the configured path/typo in your marketplace settings.","If the manifest is at the repo root but you pass a subdirectory, pass the root; complete a partial clone (`git checkout`) if files are missing."],"exampleFix":"// before\nmp = load_marketplace(Path('~/src/team-market/plugins'))\n// after (manifest lives at repo root)\nmp = load_marketplace(Path('~/src/team-market'))","handlingStrategy":"validation","validationCode":"from pathlib import Path\n\ndef marketplace_root_ok(root: str) -> bool:\n    r = Path(root).expanduser().resolve()\n    return r.is_dir() and any(r.glob(\"*.json\"))  # then confirm the manifest filename matches the library's expectation","typeGuard":"def is_marketplace_dir(p: object) -> TypeGuard[Path]:\n    return isinstance(p, Path) and p.is_dir() and find_marketplace_manifest(p) is not None","tryCatchPattern":"from deepagents_code.plugins import MarketplaceError\ntry:\n    mp = load_marketplace(Path(path_arg))\nexcept MarketplaceError as exc:\n    if str(exc).startswith(\"No marketplace manifest\"):\n        print(f\"{path_arg} has no marketplace manifest; point at the dir containing it\")\n        sys.exit(2)","preventionTips":["Run find_marketplace_manifest (or a glob) on the directory before registering it.","Store the directory that directly contains the manifest, not a parent or sibling.","Log the resolved absolute root in install scripts to catch path typos early."],"tags":["marketplace","config","path","discovery"],"backgroundTag":"manifest-not-found","analyzedSha":"a1af029e6e73cb17c36bff823d227747b28e91e1","analyzedAt":"2026-08-29T11:43:24.718Z","schemaVersion":2},"datasetVersion":"2026-08-29T12:17:43.993Z"}