{"openapi":"3.1.0","info":{"title":"LangSmith (BYOK) API","version":"0.1.0","description":"LangSmith (BYOK) lets an AI assistant read your own LangSmith data through the LangSmith API with a key you supply (LangSmith API key (personal access token or service key)). Read-only: 12 tools (list_projects, get_project, list_datasets, get_dataset, list_examples, query_runs, get_run, list_feedback, list_annotation_queues, list_prompt_repos, list_workspaces, get_workspace_stats). The BYOK key...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-langsmith.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-langsmith/docs"},"termsOfService":"https://connectorbay.com/byok-langsmith/terms"},"servers":[{"url":"https://byok-langsmith.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-langsmith/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_projects":{"post":{"operationId":"list_projects","summary":"List tracing projects (sessions) in the workspace with start time, run count, error rate, latency percentiles, token tot","description":"List tracing projects (sessions) in the workspace with start time, run count, error rate, latency percentiles, token totals and cost. Stats such as run_count are only filled when include_stats is true. Use for \"Which LangSmith projects have the most runs\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name_contains":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only projects whose name contains this text.","title":"Name Contains"},"sort_by":{"anyOf":[{"enum":["name","start_time","last_run_start_time","latency_p50","latency_p99","error_rate","feedback"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort column: name, start_time, last_run_start_time, latency_p50, latency_p99, error_rate or feedback (default start_time).","title":"Sort By"},"sort_by_desc":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for descending order (the default).","title":"Sort By Desc"},"include_stats":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to compute run counts, latency, token and cost statistics (slower). Default false.","title":"Include Stats"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many projects to return (1 to 100).","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of projects to skip, for paging.","title":"Offset"}},"title":"list_projectsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_project":{"post":{"operationId":"get_project","summary":"Get one tracing project with its start time, run count, error rate, latency, tokens and cost. Use for \"Show the statisti","description":"Get one tracing project with its start time, run count, error rate, latency, tokens and cost. Use for \"Show the statistics of LangSmith project 3f1c2a9e-8b7d-4c1e-9a55-0d6f2b7a1c10\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"session_id":{"description":"Project (tracing session) id, a UUID, as returned by list_projects.","maxLength":200,"title":"Session Id","type":"string"},"include_stats":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to compute run counts and statistics. Default false.","title":"Include Stats"}},"required":["session_id"],"title":"get_projectArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_datasets":{"post":{"operationId":"list_datasets","summary":"List datasets with type, example count, number of experiments and modification time. Use for \"What datasets do I have in","description":"List datasets with type, example count, number of experiments and modification time. Use for \"What datasets do I have in LangSmith\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name_contains":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only datasets whose name contains this text.","title":"Name Contains"},"sort_by":{"anyOf":[{"enum":["name","created_at","last_session_start_time","example_count","session_count","modified_at"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort column: name, created_at, last_session_start_time, example_count, session_count or modified_at.","title":"Sort By"},"sort_by_desc":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for descending order (the default).","title":"Sort By Desc"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many datasets to return (1 to 100).","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of datasets to skip, for paging.","title":"Offset"}},"title":"list_datasetsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_dataset":{"post":{"operationId":"get_dataset","summary":"Get one dataset's type, description, example count, experiment count and dates. Use for \"How many examples are in LangSm","description":"Get one dataset's type, description, example count, experiment count and dates. Use for \"How many examples are in LangSmith dataset 7a2e5d10-4b3c-4e8f-b1a9-6c0d9f3e2a11\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"dataset_id":{"description":"Dataset id, a UUID, as returned by list_datasets.","maxLength":200,"title":"Dataset Id","type":"string"}},"required":["dataset_id"],"title":"get_datasetArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_examples":{"post":{"operationId":"list_examples","summary":"List examples of a dataset with inputs, outputs and metadata, most recent first. Use for \"Show some examples from LangSm","description":"List examples of a dataset with inputs, outputs and metadata, most recent first. Use for \"Show some examples from LangSmith dataset 7a2e5d10-4b3c-4e8f-b1a9-6c0d9f3e2a11\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"dataset":{"description":"Dataset id (UUID) whose examples to list.","maxLength":200,"title":"Dataset","type":"string"},"order":{"anyOf":[{"enum":["recent","random","recently_created","id"],"type":"string"},{"type":"null"}],"default":null,"description":"Order: recent, random, recently_created or id.","title":"Order"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many examples to return (1 to 100).","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of examples to skip, for paging.","title":"Offset"}},"required":["dataset"],"title":"list_examplesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/query_runs":{"post":{"operationId":"query_runs","summary":"Query the runs (traces and spans) of one project, newest first, with status, type, timing, tokens, cost and error. Suppo","description":"Query the runs (traces and spans) of one project, newest first, with status, type, timing, tokens, cost and error. Supports LangSmith's filter expression and a cursor for the next page. Does not return inputs or outputs. Use for \"Show the failed LLM runs of LangSmith project 3f1c2a9e-8b7d-4c1e-9a55-0d6f2b7a1c10 from the last day\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"session_id":{"description":"Project id (UUID) whose runs to query.","maxLength":200,"title":"Session Id","type":"string"},"run_type":{"anyOf":[{"enum":["tool","chain","llm","retriever","embedding","prompt","parser"],"type":"string"},{"type":"null"}],"default":null,"description":"Only runs of this type: tool, chain, llm, retriever, embedding, prompt or parser.","title":"Run Type"},"is_root":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to return only top-level runs (traces).","title":"Is Root"},"error":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for runs that errored, false for runs that did not.","title":"Error"},"filter":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"LangSmith run filter expression, for example eq(name, \"my_chain\") or gt(latency, \"5s\").","title":"Filter"},"start_time":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only runs that started at or after this ISO 8601 time, for example 2026-10-01T00:00:00Z.","title":"Start Time"},"order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Start-time order: desc (newest first, default) or asc.","title":"Order"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many runs to return (1 to 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer's cursors field for the next page.","title":"Cursor"}},"required":["session_id"],"title":"query_runsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_run":{"post":{"operationId":"get_run","summary":"Get one run (a trace or span) with name, type, status, timing, error, token counts, cost, tags and trace id. Use for \"Wh","description":"Get one run (a trace or span) with name, type, status, timing, error, token counts, cost, tags and trace id. Use for \"What happened in LangSmith run 5d2b9c4e-1a3f-4b7e-8c60-9e1f0a2b3c4d\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"run_id":{"description":"Run id, a UUID, as returned by query_runs.","maxLength":200,"title":"Run Id","type":"string"},"exclude_serialized":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to leave out the serialized definition (smaller answer). Default false.","title":"Exclude Serialized"}},"required":["run_id"],"title":"get_runArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_feedback":{"post":{"operationId":"list_feedback","summary":"List feedback records (scores and comments) filtered by run, project or feedback key. Use for \"What feedback scores were","description":"List feedback records (scores and comments) filtered by run, project or feedback key. Use for \"What feedback scores were recorded for LangSmith project 3f1c2a9e-8b7d-4c1e-9a55-0d6f2b7a1c10\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"run":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only feedback on this run id (UUID).","title":"Run"},"session":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only feedback in this project id (UUID).","title":"Session"},"key":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only feedback with this key, for example 'correctness'.","title":"Key"},"min_created_at":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only feedback created at or after this ISO 8601 time.","title":"Min Created At"},"max_created_at":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only feedback created at or before this ISO 8601 time.","title":"Max Created At"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many records to return (1 to 100).","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of records to skip, for paging.","title":"Offset"}},"title":"list_feedbackArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_annotation_queues":{"post":{"operationId":"list_annotation_queues","summary":"List annotation queues with type, reviewer settings and size. Use for \"Which annotation queues exist in my LangSmith wor","description":"List annotation queues with type, reviewer settings and size. Use for \"Which annotation queues exist in my LangSmith workspace\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name_contains":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only queues whose name contains this text.","title":"Name Contains"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many queues to return (1 to 100).","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of queues to skip, for paging.","title":"Offset"}},"title":"list_annotation_queuesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_prompt_repos":{"post":{"operationId":"list_prompt_repos","summary":"List prompt hub repositories with owner, tags, commit count, downloads and last update. Total count is in total. Use for","description":"List prompt hub repositories with owner, tags, commit count, downloads and last update. Total count is in total. Use for \"Which prompts do I have in the LangSmith prompt hub\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Search text matched against repository names and descriptions.","title":"Query"},"is_public":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for public repositories only, false for private only.","title":"Is Public"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many repositories to return (1 to 100).","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of repositories to skip, for paging.","title":"Offset"}},"title":"list_prompt_reposArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_workspaces":{"post":{"operationId":"list_workspaces","summary":"List the workspaces (tenants) the key can access with name, role and whether it is personal. Use for \"Which LangSmith wo","description":"List the workspaces (tenants) the key can access with name, role and whether it is personal. Use for \"Which LangSmith workspaces can my key access\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"include_deleted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include deleted workspaces. Default false.","title":"Include Deleted"}},"title":"list_workspacesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_workspace_stats":{"post":{"operationId":"get_workspace_stats","summary":"Count the current workspace's projects, datasets, prompt repositories, annotation queues, deployments, dashboards and ev","description":"Count the current workspace's projects, datasets, prompt repositories, annotation queues, deployments, dashboards and evaluators. Use for \"How many projects and datasets are in my LangSmith workspace\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_workspace_statsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}