From d4c2aa99e037d292b39fe2b84fdd706afbaceb1b Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Sat, 1 Aug 2026 23:38:47 +0000 Subject: [PATCH 1/7] codegen metadata --- .stats.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index 3b484e3..2aeac55 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 37 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-758c3a2fbd5b7be61c8e6e0ad2e6a5ec30695747bb675960d888c497647d13d7.yml -openapi_spec_hash: 00002d90bde02f67e174368ae470c597 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-85694668707cde32f7d8472660bc5760a2f369751d8cf19690778ffad767b0fa.yml +openapi_spec_hash: 5b688312bf5e9a5468a83618ec635ada config_hash: 2bea1743c84d63bd61f8501a6ea63065 From 9dec19c7140a2be598f1e5fb0f813904d4b2bfe3 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Sun, 2 Aug 2026 08:32:31 +0000 Subject: [PATCH 2/7] codegen metadata --- .stats.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index 2aeac55..490472d 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 37 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-85694668707cde32f7d8472660bc5760a2f369751d8cf19690778ffad767b0fa.yml -openapi_spec_hash: 5b688312bf5e9a5468a83618ec635ada +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-386f0ec51516e1f060c82287c99be4ecdee9eb4753e1375b6c5b27488e63d4c7.yml +openapi_spec_hash: b514ae48cf1c7bcb2ed3a4d7853cbfb5 config_hash: 2bea1743c84d63bd61f8501a6ea63065 From a57aa284d3c4991c8fe904fef989555e96b5cbc9 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 3 Aug 2026 03:23:43 +0000 Subject: [PATCH 3/7] codegen metadata --- .stats.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index 490472d..790f64f 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 37 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-386f0ec51516e1f060c82287c99be4ecdee9eb4753e1375b6c5b27488e63d4c7.yml -openapi_spec_hash: b514ae48cf1c7bcb2ed3a4d7853cbfb5 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-0c273d87106b3f8920d529d9964d7be6a23613c7553f48d67732e24571fbbf7b.yml +openapi_spec_hash: f1fb4082f153c9195fee451ebf5d46ba config_hash: 2bea1743c84d63bd61f8501a6ea63065 From 9a090f8e3753d43d324c9daf764c34df44f2cd9e Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 5 Aug 2026 08:41:04 +0000 Subject: [PATCH 4/7] codegen metadata --- .stats.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index 790f64f..29f15de 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 37 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-0c273d87106b3f8920d529d9964d7be6a23613c7553f48d67732e24571fbbf7b.yml -openapi_spec_hash: f1fb4082f153c9195fee451ebf5d46ba +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-f2101addc171cf732a879e4bcad5bc6cfe8cec4349c62617c12c09331a883a22.yml +openapi_spec_hash: a143e7e4842279a61807b433ef17e261 config_hash: 2bea1743c84d63bd61f8501a6ea63065 From c3209466f3593060cf206f5bef898591161d967c Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 5 Aug 2026 09:40:43 +0000 Subject: [PATCH 5/7] codegen metadata --- .stats.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index 29f15de..8e45986 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 37 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-f2101addc171cf732a879e4bcad5bc6cfe8cec4349c62617c12c09331a883a22.yml -openapi_spec_hash: a143e7e4842279a61807b433ef17e261 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-eac90d0a78d6166dc64c49ad4cd44883ab0bd357063ff09e60ed78085e2bde3c.yml +openapi_spec_hash: ab91f77e7c9d992400cbc7fc8a9e76c1 config_hash: 2bea1743c84d63bd61f8501a6ea63065 From bdb799c235c805d25b4caaf591d70a5315a1e1af Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 5 Aug 2026 10:12:44 +0000 Subject: [PATCH 6/7] feat(api): manual updates --- .stats.yml | 6 +- api.md | 2 + packages/mcp-server/src/code-tool-worker.ts | 1 + packages/mcp-server/src/local-docs-search.ts | 50 ++++++++++++ packages/mcp-server/src/methods.ts | 6 ++ src/client.ts | 4 + src/resources/brand.ts | 84 ++++++++++++++++++++ src/resources/index.ts | 2 + tests/api-resources/brand.test.ts | 17 ++++ 9 files changed, 169 insertions(+), 3 deletions(-) diff --git a/.stats.yml b/.stats.yml index 8e45986..74e73bc 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ -configured_endpoints: 37 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-eac90d0a78d6166dc64c49ad4cd44883ab0bd357063ff09e60ed78085e2bde3c.yml +configured_endpoints: 38 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-155e4761d62255841349c0f8a01b0a9c463ea1d1f2d6c4fd8d1a75c8bef6f226.yml openapi_spec_hash: ab91f77e7c9d992400cbc7fc8a9e76c1 -config_hash: 2bea1743c84d63bd61f8501a6ea63065 +config_hash: bff282047fafdad771fb7ec685f56944 diff --git a/api.md b/api.md index 083e0f0..1e30ea7 100644 --- a/api.md +++ b/api.md @@ -56,11 +56,13 @@ Types: - BrandRetrieveResponse - BrandRetrieveSimplifiedResponse +- BrandSearchResponse Methods: - client.brand.retrieve({ ...params }) -> BrandRetrieveResponse - client.brand.retrieveSimplified({ ...params }) -> BrandRetrieveSimplifiedResponse +- client.brand.search({ ...params }) -> BrandSearchResponse # Industry diff --git a/packages/mcp-server/src/code-tool-worker.ts b/packages/mcp-server/src/code-tool-worker.ts index 6c28678..0d76562 100644 --- a/packages/mcp-server/src/code-tool-worker.ts +++ b/packages/mcp-server/src/code-tool-worker.ts @@ -124,6 +124,7 @@ const fuse = new Fuse( 'client.ai.extractProducts', 'client.brand.retrieve', 'client.brand.retrieveSimplified', + 'client.brand.search', 'client.industry.retrieveNaics', 'client.industry.retrieveSic', 'client.utility.prefetch', diff --git a/packages/mcp-server/src/local-docs-search.ts b/packages/mcp-server/src/local-docs-search.ts index ab4050c..58a577d 100644 --- a/packages/mcp-server/src/local-docs-search.ts +++ b/packages/mcp-server/src/local-docs-search.ts @@ -946,6 +946,56 @@ const EMBEDDED_METHODS: MethodEntry[] = [ }, }, }, + { + name: 'search', + endpoint: '/brand/search', + httpMethod: 'get', + summary: 'Brand Search', + description: + 'Search brands by name or domain and get back up to 10 lightweight matches (domain, name, logo), most popular first: by Tranco rank, then market cap for brands outside the Tranco list, with text relevance breaking ties. Matching is prefix-based with no typo tolerance, so it is suited to autocomplete. Only brands already in the Context.dev index are returned — use /brand/retrieve to fetch (and index) a specific domain. Free on Pro and Scale plans; costs 1 credit per request on the Free and Starter plans.', + stainlessPath: '(resource) brand > (method) search', + qualified: 'client.brand.search', + params: ['query: string;', 'tags?: string[];'], + response: + '{ results: { domain: string; logo: string; name: string; }[]; key_metadata?: { credits_consumed: number; credits_remaining: number; }; }', + markdown: + "## search\n\n`client.brand.search(query: string, tags?: string[]): { results: object[]; key_metadata?: object; }`\n\n**get** `/brand/search`\n\nSearch brands by name or domain and get back up to 10 lightweight matches (domain, name, logo), most popular first: by Tranco rank, then market cap for brands outside the Tranco list, with text relevance breaking ties. Matching is prefix-based with no typo tolerance, so it is suited to autocomplete. Only brands already in the Context.dev index are returned — use /brand/retrieve to fetch (and index) a specific domain. Free on Pro and Scale plans; costs 1 credit per request on the Free and Starter plans.\n\n### Parameters\n\n- `query: string`\n Search term, matched against brand names and domains by prefix (e.g. 'nike', 'nike.com', 'nik').\n\n- `tags?: string[]`\n Optional comma-separated caller-defined tags for tracking this request. Tags are recorded on the request's usage log and can be used to filter usage on the dashboard usage page. Up to 20 tags, each 1-50 characters.\n\n### Returns\n\n- `{ results: { domain: string; logo: string; name: string; }[]; key_metadata?: { credits_consumed: number; credits_remaining: number; }; }`\n\n - `results: { domain: string; logo: string; name: string; }[]`\n - `key_metadata?: { credits_consumed: number; credits_remaining: number; }`\n\n### Example\n\n```typescript\nimport ContextDev from 'context.dev';\n\nconst client = new ContextDev();\n\nconst response = await client.brand.search({ query: 'x' });\n\nconsole.log(response);\n```", + perLanguage: { + typescript: { + method: 'client.brand.search', + example: + "import ContextDev from 'context.dev';\n\nconst client = new ContextDev({\n apiKey: process.env['CONTEXT_DEV_API_KEY'], // This is the default and can be omitted\n});\n\nconst response = await client.brand.search({ query: 'x' });\n\nconsole.log(response.results);", + }, + python: { + method: 'brand.search', + example: + 'import os\nfrom context.dev import ContextDev\n\nclient = ContextDev(\n api_key=os.environ.get("CONTEXT_DEV_API_KEY"), # This is the default and can be omitted\n)\nresponse = client.brand.search(\n query="x",\n)\nprint(response.results)', + }, + go: { + method: 'client.Brand.Search', + example: + 'package main\n\nimport (\n\t"context"\n\t"fmt"\n\n\t"github.com/context-dot-dev/context-go-sdk"\n\t"github.com/context-dot-dev/context-go-sdk/option"\n)\n\nfunc main() {\n\tclient := contextdev.NewClient(\n\t\toption.WithAPIKey("My API Key"),\n\t)\n\tresponse, err := client.Brand.Search(context.TODO(), contextdev.BrandSearchParams{\n\t\tQuery: "x",\n\t})\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf("%+v\\n", response.Results)\n}\n', + }, + ruby: { + method: 'brand.search', + example: + 'require "context_dev"\n\ncontext_dev = ContextDev::Client.new(api_key: "My API Key")\n\nresponse = context_dev.brand.search(query: "x")\n\nputs(response)', + }, + cli: { + method: 'brand search', + example: "context-dev brand search \\\n --api-key 'My API Key' \\\n --query x", + }, + php: { + method: 'brand->search', + example: + "brand->search(\n query: 'x', tags: ['production', 'team-alpha']\n);\n\nvar_dump($response);", + }, + http: { + example: + 'curl https://api.context.dev/v1/brand/search \\\n -H "Authorization: Bearer $CONTEXT_DEV_API_KEY"', + }, + }, + }, { name: 'retrieve_simplified', endpoint: '/brand/retrieve-simplified', diff --git a/packages/mcp-server/src/methods.ts b/packages/mcp-server/src/methods.ts index e3ee5c2..2489ea0 100644 --- a/packages/mcp-server/src/methods.ts +++ b/packages/mcp-server/src/methods.ts @@ -106,6 +106,12 @@ export const sdkMethods: SdkMethod[] = [ httpMethod: 'get', httpPath: '/brand/retrieve-simplified', }, + { + clientCallName: 'client.brand.search', + fullyQualifiedName: 'brand.search', + httpMethod: 'get', + httpPath: '/brand/search', + }, { clientCallName: 'client.industry.retrieveNaics', fullyQualifiedName: 'industry.retrieveNaics', diff --git a/src/client.ts b/src/client.ts index 740ec43..c955f7a 100644 --- a/src/client.ts +++ b/src/client.ts @@ -45,6 +45,8 @@ import { BrandRetrieveResponse, BrandRetrieveSimplifiedParams, BrandRetrieveSimplifiedResponse, + BrandSearchParams, + BrandSearchResponse, } from './resources/brand'; import { Industry, @@ -891,8 +893,10 @@ export declare namespace ContextDev { Brand as Brand, type BrandRetrieveResponse as BrandRetrieveResponse, type BrandRetrieveSimplifiedResponse as BrandRetrieveSimplifiedResponse, + type BrandSearchResponse as BrandSearchResponse, type BrandRetrieveParams as BrandRetrieveParams, type BrandRetrieveSimplifiedParams as BrandRetrieveSimplifiedParams, + type BrandSearchParams as BrandSearchParams, }; export { diff --git a/src/resources/brand.ts b/src/resources/brand.ts index c27b7ba..9435c22 100644 --- a/src/resources/brand.ts +++ b/src/resources/brand.ts @@ -42,6 +42,24 @@ export class Brand extends APIResource { ): APIPromise { return this._client.get('/brand/retrieve-simplified', { query, ...options }); } + + /** + * Search brands by name or domain and get back up to 10 lightweight matches + * (domain, name, logo), most popular first: by Tranco rank, then market cap for + * brands outside the Tranco list, with text relevance breaking ties. Matching is + * prefix-based with no typo tolerance, so it is suited to autocomplete. Only + * brands already in the Context.dev index are returned — use /brand/retrieve to + * fetch (and index) a specific domain. Free on Pro and Scale plans; costs 1 credit + * per request on the Free and Starter plans. + * + * @example + * ```ts + * const response = await client.brand.search({ query: 'x' }); + * ``` + */ + search(query: BrandSearchParams, options?: RequestOptions): APIPromise { + return this._client.get('/brand/search', { query, ...options }); + } } export interface BrandRetrieveResponse { @@ -1021,6 +1039,55 @@ export namespace BrandRetrieveSimplifiedResponse { } } +export interface BrandSearchResponse { + /** + * Up to 10 matching brands, most popular first. Empty when nothing matches. + */ + results: Array; + + /** + * Metadata about the API key used for the request. Included in every response + * whenever a valid API key is provided, even when the response status is not 200. + */ + key_metadata?: BrandSearchResponse.KeyMetadata; +} + +export namespace BrandSearchResponse { + export interface Result { + /** + * The brand's domain. + */ + domain: string; + + /** + * Logo link URL that serves the brand's logo, generated per request for the + * calling organization. + */ + logo: string; + + /** + * The brand's name. Empty string when unknown. + */ + name: string; + } + + /** + * Metadata about the API key used for the request. Included in every response + * whenever a valid API key is provided, even when the response status is not 200. + */ + export interface KeyMetadata { + /** + * The number of credits consumed by this request. + */ + credits_consumed: number; + + /** + * The number of credits remaining for your organization after this request. + */ + credits_remaining: number; + } +} + export type BrandRetrieveParams = | BrandRetrieveParams.BrandRetrieveByDomainRequest | BrandRetrieveParams.BrandRetrieveByNameRequest @@ -1932,11 +1999,28 @@ export interface BrandRetrieveSimplifiedParams { timeoutMS?: number; } +export interface BrandSearchParams { + /** + * Search term, matched against brand names and domains by prefix (e.g. 'nike', + * 'nike.com', 'nik'). + */ + query: string; + + /** + * Optional comma-separated caller-defined tags for tracking this request. Tags are + * recorded on the request's usage log and can be used to filter usage on the + * dashboard usage page. Up to 20 tags, each 1-50 characters. + */ + tags?: Array; +} + export declare namespace Brand { export { type BrandRetrieveResponse as BrandRetrieveResponse, type BrandRetrieveSimplifiedResponse as BrandRetrieveSimplifiedResponse, + type BrandSearchResponse as BrandSearchResponse, type BrandRetrieveParams as BrandRetrieveParams, type BrandRetrieveSimplifiedParams as BrandRetrieveSimplifiedParams, + type BrandSearchParams as BrandSearchParams, }; } diff --git a/src/resources/index.ts b/src/resources/index.ts index e28f518..e8048a9 100644 --- a/src/resources/index.ts +++ b/src/resources/index.ts @@ -26,8 +26,10 @@ export { Brand, type BrandRetrieveResponse, type BrandRetrieveSimplifiedResponse, + type BrandSearchResponse, type BrandRetrieveParams, type BrandRetrieveSimplifiedParams, + type BrandSearchParams, } from './brand'; export { Industry, diff --git a/tests/api-resources/brand.test.ts b/tests/api-resources/brand.test.ts index d504b5a..30938b9 100644 --- a/tests/api-resources/brand.test.ts +++ b/tests/api-resources/brand.test.ts @@ -55,4 +55,21 @@ describe('resource brand', () => { timeoutMS: 1000, }); }); + + // Mock server tests are disabled + test.skip('search: only required params', async () => { + const responsePromise = client.brand.search({ query: 'x' }); + const rawResponse = await responsePromise.asResponse(); + expect(rawResponse).toBeInstanceOf(Response); + const response = await responsePromise; + expect(response).not.toBeInstanceOf(Response); + const dataAndResponse = await responsePromise.withResponse(); + expect(dataAndResponse.data).toBe(response); + expect(dataAndResponse.response).toBe(rawResponse); + }); + + // Mock server tests are disabled + test.skip('search: required and optional params', async () => { + const response = await client.brand.search({ query: 'x', tags: ['production', 'team-alpha'] }); + }); }); From ffd0e51084afd1f795a1f8cf31e3e2062aad45fb Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 5 Aug 2026 10:13:09 +0000 Subject: [PATCH 7/7] release: 2.9.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 8 ++++++++ package.json | 2 +- packages/mcp-server/manifest.json | 2 +- packages/mcp-server/package.json | 2 +- packages/mcp-server/src/server.ts | 2 +- src/version.ts | 2 +- 7 files changed, 14 insertions(+), 6 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 7a56472..a3906fc 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "2.8.0" + ".": "2.9.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index f345f52..51d6cc0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 2.9.0 (2026-08-05) + +Full Changelog: [v2.8.0...v2.9.0](https://github.com/context-dot-dev/context-typescript-sdk/compare/v2.8.0...v2.9.0) + +### Features + +* **api:** manual updates ([bdb799c](https://github.com/context-dot-dev/context-typescript-sdk/commit/bdb799c235c805d25b4caaf591d70a5315a1e1af)) + ## 2.8.0 (2026-08-01) Full Changelog: [v2.7.0...v2.8.0](https://github.com/context-dot-dev/context-typescript-sdk/compare/v2.7.0...v2.8.0) diff --git a/package.json b/package.json index 46f2c6a..3b0ac17 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "context.dev", - "version": "2.8.0", + "version": "2.9.0", "description": "The official TypeScript library for the Context Dev API", "author": "Context Dev ", "types": "dist/index.d.ts", diff --git a/packages/mcp-server/manifest.json b/packages/mcp-server/manifest.json index 6599567..00d23ca 100644 --- a/packages/mcp-server/manifest.json +++ b/packages/mcp-server/manifest.json @@ -1,7 +1,7 @@ { "dxt_version": "0.2", "name": "context.dev-mcp", - "version": "2.8.0", + "version": "2.9.0", "description": "The official MCP Server for the Context Dev API", "author": { "name": "Context Dev", diff --git a/packages/mcp-server/package.json b/packages/mcp-server/package.json index 6acaeef..bc11f7d 100644 --- a/packages/mcp-server/package.json +++ b/packages/mcp-server/package.json @@ -1,6 +1,6 @@ { "name": "context.dev-mcp", - "version": "2.8.0", + "version": "2.9.0", "description": "The official MCP Server for the Context Dev API", "author": "Context Dev ", "types": "dist/index.d.ts", diff --git a/packages/mcp-server/src/server.ts b/packages/mcp-server/src/server.ts index 659f676..497490c 100644 --- a/packages/mcp-server/src/server.ts +++ b/packages/mcp-server/src/server.ts @@ -28,7 +28,7 @@ export const newMcpServer = async ({ new McpServer( { name: 'context_dev_api', - version: '2.8.0', + version: '2.9.0', }, { instructions: await getInstructions({ stainlessApiKey, customInstructionsPath }), diff --git a/src/version.ts b/src/version.ts index 3981a8d..07e4d36 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1 +1 @@ -export const VERSION = '2.8.0'; // x-release-please-version +export const VERSION = '2.9.0'; // x-release-please-version