naftiko: 1.0.0-alpha2 info: label: LangSmith — repos description: 'LangSmith — repos. 9 operations. Lead operation: List Repos. Self-contained Naftiko capability covering one Langsmith business surface.' tags: - Langsmith - repos created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: LANGSMITH_API_KEY: LANGSMITH_API_KEY capability: consumes: - type: http namespace: langsmith-repos baseUri: '' description: LangSmith — repos business capability. Self-contained, no shared references. resources: - name: api-v1-repos path: /api/v1/repos operations: - name: listreposapiv1reposget method: GET description: List Repos outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: with_latest_manifest in: query type: boolean - name: limit in: query type: integer - name: offset in: query type: integer - name: tenant_handle in: query type: string - name: tenant_id in: query type: string - name: query in: query type: string - name: has_commits in: query type: string - name: tags in: query type: string - name: is_archived in: query type: string - name: is_public in: query type: string - name: upstream_repo_owner in: query type: string - name: upstream_repo_handle in: query type: string - name: tag_value_id in: query type: string - name: repo_type in: query type: string - name: repo_types in: query type: string - name: source in: query type: string - name: sort_field in: query type: string - name: sort_direction in: query type: string - name: createrepoapiv1repospost method: POST description: Create Repo outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: deletereposapiv1reposdelete method: DELETE description: Delete Repos outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: repo_ids in: query type: array required: true - name: api-v1-repos-optimize-job path: /api/v1/repos/optimize-job operations: - name: optimizepromptjobapiv1reposoptimizejobpost method: POST description: Optimize Prompt Job outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: api-v1-repos-tags path: /api/v1/repos/tags operations: - name: listrepotagsapiv1repostagsget method: GET description: List Repo Tags outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: limit in: query type: integer - name: offset in: query type: integer - name: tenant_handle in: query type: string - name: tenant_id in: query type: string - name: query in: query type: string - name: has_commits in: query type: string - name: tags in: query type: string - name: is_archived in: query type: string - name: is_public in: query type: string - name: upstream_repo_owner in: query type: string - name: upstream_repo_handle in: query type: string - name: tag_value_id in: query type: string - name: repo_type in: query type: string - name: repo_types in: query type: string - name: source in: query type: string - name: api-v1-repos-owner-repo path: /api/v1/repos/{owner}/{repo} operations: - name: getrepoapiv1reposownerrepoget method: GET description: Get Repo outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: owner in: path type: string required: true - name: repo in: path type: string required: true - name: updaterepoapiv1reposownerrepopatch method: PATCH description: Update Repo outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: owner in: path type: string required: true - name: repo in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: true - name: deleterepoapiv1reposownerrepodelete method: DELETE description: Delete Repo outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: owner in: path type: string required: true - name: repo in: path type: string required: true - name: api-v1-repos-owner-repo-fork path: /api/v1/repos/{owner}/{repo}/fork operations: - name: forkrepoapiv1reposownerrepoforkpost method: POST description: Fork Repo outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: owner in: path type: string required: true - name: repo in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: true authentication: type: bearer token: '{{env.LANGSMITH_API_KEY}}' exposes: - type: rest namespace: langsmith-repos-rest port: 8080 description: REST adapter for LangSmith — repos. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/api/v1/repos name: api-v1-repos description: REST surface for api-v1-repos. operations: - method: GET name: listreposapiv1reposget description: List Repos call: langsmith-repos.listreposapiv1reposget with: with_latest_manifest: rest.with_latest_manifest limit: rest.limit offset: rest.offset tenant_handle: rest.tenant_handle tenant_id: rest.tenant_id query: rest.query has_commits: rest.has_commits tags: rest.tags is_archived: rest.is_archived is_public: rest.is_public upstream_repo_owner: rest.upstream_repo_owner upstream_repo_handle: rest.upstream_repo_handle tag_value_id: rest.tag_value_id repo_type: rest.repo_type repo_types: rest.repo_types source: rest.source sort_field: rest.sort_field sort_direction: rest.sort_direction outputParameters: - type: object mapping: $. - method: POST name: createrepoapiv1repospost description: Create Repo call: langsmith-repos.createrepoapiv1repospost with: body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: deletereposapiv1reposdelete description: Delete Repos call: langsmith-repos.deletereposapiv1reposdelete with: repo_ids: rest.repo_ids outputParameters: - type: object mapping: $. - path: /v1/api/v1/repos/optimize-job name: api-v1-repos-optimize-job description: REST surface for api-v1-repos-optimize-job. operations: - method: POST name: optimizepromptjobapiv1reposoptimizejobpost description: Optimize Prompt Job call: langsmith-repos.optimizepromptjobapiv1reposoptimizejobpost with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/api/v1/repos/tags name: api-v1-repos-tags description: REST surface for api-v1-repos-tags. operations: - method: GET name: listrepotagsapiv1repostagsget description: List Repo Tags call: langsmith-repos.listrepotagsapiv1repostagsget with: limit: rest.limit offset: rest.offset tenant_handle: rest.tenant_handle tenant_id: rest.tenant_id query: rest.query has_commits: rest.has_commits tags: rest.tags is_archived: rest.is_archived is_public: rest.is_public upstream_repo_owner: rest.upstream_repo_owner upstream_repo_handle: rest.upstream_repo_handle tag_value_id: rest.tag_value_id repo_type: rest.repo_type repo_types: rest.repo_types source: rest.source outputParameters: - type: object mapping: $. - path: /v1/api/v1/repos/{owner}/{repo} name: api-v1-repos-owner-repo description: REST surface for api-v1-repos-owner-repo. operations: - method: GET name: getrepoapiv1reposownerrepoget description: Get Repo call: langsmith-repos.getrepoapiv1reposownerrepoget with: owner: rest.owner repo: rest.repo outputParameters: - type: object mapping: $. - method: PATCH name: updaterepoapiv1reposownerrepopatch description: Update Repo call: langsmith-repos.updaterepoapiv1reposownerrepopatch with: owner: rest.owner repo: rest.repo body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: deleterepoapiv1reposownerrepodelete description: Delete Repo call: langsmith-repos.deleterepoapiv1reposownerrepodelete with: owner: rest.owner repo: rest.repo outputParameters: - type: object mapping: $. - path: /v1/api/v1/repos/{owner}/{repo}/fork name: api-v1-repos-owner-repo-fork description: REST surface for api-v1-repos-owner-repo-fork. operations: - method: POST name: forkrepoapiv1reposownerrepoforkpost description: Fork Repo call: langsmith-repos.forkrepoapiv1reposownerrepoforkpost with: owner: rest.owner repo: rest.repo body: rest.body outputParameters: - type: object mapping: $. - type: mcp namespace: langsmith-repos-mcp port: 9090 transport: http description: MCP adapter for LangSmith — repos. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: list-repos description: List Repos hints: readOnly: true destructive: false idempotent: true call: langsmith-repos.listreposapiv1reposget with: with_latest_manifest: tools.with_latest_manifest limit: tools.limit offset: tools.offset tenant_handle: tools.tenant_handle tenant_id: tools.tenant_id query: tools.query has_commits: tools.has_commits tags: tools.tags is_archived: tools.is_archived is_public: tools.is_public upstream_repo_owner: tools.upstream_repo_owner upstream_repo_handle: tools.upstream_repo_handle tag_value_id: tools.tag_value_id repo_type: tools.repo_type repo_types: tools.repo_types source: tools.source sort_field: tools.sort_field sort_direction: tools.sort_direction outputParameters: - type: object mapping: $. - name: create-repo description: Create Repo hints: readOnly: false destructive: false idempotent: false call: langsmith-repos.createrepoapiv1repospost with: body: tools.body outputParameters: - type: object mapping: $. - name: delete-repos description: Delete Repos hints: readOnly: false destructive: true idempotent: true call: langsmith-repos.deletereposapiv1reposdelete with: repo_ids: tools.repo_ids outputParameters: - type: object mapping: $. - name: optimize-prompt-job description: Optimize Prompt Job hints: readOnly: false destructive: false idempotent: false call: langsmith-repos.optimizepromptjobapiv1reposoptimizejobpost with: body: tools.body outputParameters: - type: object mapping: $. - name: list-repo-tags description: List Repo Tags hints: readOnly: true destructive: false idempotent: true call: langsmith-repos.listrepotagsapiv1repostagsget with: limit: tools.limit offset: tools.offset tenant_handle: tools.tenant_handle tenant_id: tools.tenant_id query: tools.query has_commits: tools.has_commits tags: tools.tags is_archived: tools.is_archived is_public: tools.is_public upstream_repo_owner: tools.upstream_repo_owner upstream_repo_handle: tools.upstream_repo_handle tag_value_id: tools.tag_value_id repo_type: tools.repo_type repo_types: tools.repo_types source: tools.source outputParameters: - type: object mapping: $. - name: get-repo description: Get Repo hints: readOnly: true destructive: false idempotent: true call: langsmith-repos.getrepoapiv1reposownerrepoget with: owner: tools.owner repo: tools.repo outputParameters: - type: object mapping: $. - name: update-repo description: Update Repo hints: readOnly: false destructive: false idempotent: true call: langsmith-repos.updaterepoapiv1reposownerrepopatch with: owner: tools.owner repo: tools.repo body: tools.body outputParameters: - type: object mapping: $. - name: delete-repo description: Delete Repo hints: readOnly: false destructive: true idempotent: true call: langsmith-repos.deleterepoapiv1reposownerrepodelete with: owner: tools.owner repo: tools.repo outputParameters: - type: object mapping: $. - name: fork-repo description: Fork Repo hints: readOnly: false destructive: false idempotent: false call: langsmith-repos.forkrepoapiv1reposownerrepoforkpost with: owner: tools.owner repo: tools.repo body: tools.body outputParameters: - type: object mapping: $.