History

Route preset vendor favicons through integrations.sh/logo

Preset icons that pointed at vendor favicon.ico paths (brittle: vendors move or serve HTML) now use the same /logo proxy the derived favicon path uses. Deliberate keeps: svgl.app and fonts.gstatic.com product logos (per-product marks for Google/Microsoft sub-products the domain-keyed proxy can't distinguish), bundled marketing assets, and the app's own favicon links.

Rhys Sullivan committed 4 months ago

Commit ed09aac1 parent 63605aa4 files · +28 −28Browse files

Unified · Split

4 files
  1. packages/plugins/graphql/src/sdk/presets.ts +4 −4
  2. packages/plugins/mcp/src/sdk/presets.ts +10 −10
  3. packages/plugins/microsoft/src/sdk/presets.ts +1 −1
  4. packages/plugins/openapi/src/sdk/presets.ts +13 −13
packages/plugins/graphql/src/sdk/presets.ts+4−4
@@ -24,7 +24,7 @@ export const graphqlPresets: readonly GraphqlPreset[] = [ · 23 unmodified lines
24 summary: "Projects, merge requests, pipelines, and users.",24 summary: "Projects, merge requests, pipelines, and users.",
25 url: "https://gitlab.com/api/graphql",25 url: "https://gitlab.com/api/graphql",
26 endpoint: "https://gitlab.com/api/graphql",26 endpoint: "https://gitlab.com/api/graphql",
27 icon: "https://gitlab.com/favicon.ico",27 icon: "https://integrations.sh/logo/gitlab.com",
28 featured: true,28 featured: true,
29 },29 },
30 {30 {
@@ -33,7 +33,7 @@ export const graphqlPresets: readonly GraphqlPreset[] = [ · 2 unmodified lines
33 summary: "Issues, projects, teams, and cycles.",33 summary: "Issues, projects, teams, and cycles.",
34 url: "https://api.linear.app/graphql",34 url: "https://api.linear.app/graphql",
35 endpoint: "https://api.linear.app/graphql",35 endpoint: "https://api.linear.app/graphql",
36 icon: "https://linear.app/favicon.ico",36 icon: "https://integrations.sh/logo/linear.app",
37 featured: true,37 featured: true,
38 },38 },
39 {39 {
@@ -42,7 +42,7 @@ export const graphqlPresets: readonly GraphqlPreset[] = [ · 2 unmodified lines
42 summary: "Boards, items, columns, and workspace automation.",42 summary: "Boards, items, columns, and workspace automation.",
43 url: "https://api.monday.com/v2",43 url: "https://api.monday.com/v2",
44 endpoint: "https://api.monday.com/v2",44 endpoint: "https://api.monday.com/v2",
45 icon: "https://monday.com/favicon.ico",45 icon: "https://integrations.sh/logo/monday.com",
46 },46 },
47 {47 {
48 id: "anilist",48 id: "anilist",
@@ -50,6 +50,6 @@ export const graphqlPresets: readonly GraphqlPreset[] = [ · 1 unmodified line
50 summary: "Anime and manga database — no auth required.",50 summary: "Anime and manga database — no auth required.",
51 url: "https://graphql.anilist.co",51 url: "https://graphql.anilist.co",
52 endpoint: "https://graphql.anilist.co",52 endpoint: "https://graphql.anilist.co",
53 icon: "https://anilist.co/img/icons/favicon-32x32.png",53 icon: "https://integrations.sh/logo/anilist.co",
54 },54 },
55];55];
packages/plugins/mcp/src/sdk/presets.ts+10−10
@@ -38,7 +38,7 @@ export const mcpPresets: readonly McpPreset[] = [ · 37 unmodified lines
38 summary: "Search and read documentation from any GitHub repo.",38 summary: "Search and read documentation from any GitHub repo.",
39 url: "https://mcp.deepwiki.com/mcp",39 url: "https://mcp.deepwiki.com/mcp",
40 endpoint: "https://mcp.deepwiki.com/mcp",40 endpoint: "https://mcp.deepwiki.com/mcp",
41 icon: "https://deepwiki.com/favicon.ico",41 icon: "https://integrations.sh/logo/deepwiki.com",
42 featured: true,42 featured: true,
43 },43 },
44 {44 {
@@ -47,7 +47,7 @@ export const mcpPresets: readonly McpPreset[] = [ · 2 unmodified lines
47 summary: "Up-to-date docs and code examples for any library.",47 summary: "Up-to-date docs and code examples for any library.",
48 url: "https://mcp.context7.com/mcp",48 url: "https://mcp.context7.com/mcp",
49 endpoint: "https://mcp.context7.com/mcp",49 endpoint: "https://mcp.context7.com/mcp",
50 icon: "https://context7.com/favicon.ico",50 icon: "https://integrations.sh/logo/context7.com",
51 featured: true,51 featured: true,
52 },52 },
53 {53 {
@@ -56,7 +56,7 @@ export const mcpPresets: readonly McpPreset[] = [ · 2 unmodified lines
56 summary: "Cloud browser sessions for web scraping and automation.",56 summary: "Cloud browser sessions for web scraping and automation.",
57 url: "https://mcp.browserbase.com/mcp",57 url: "https://mcp.browserbase.com/mcp",
58 endpoint: "https://mcp.browserbase.com/mcp",58 endpoint: "https://mcp.browserbase.com/mcp",
59 icon: "https://www.browserbase.com/favicon.ico",59 icon: "https://integrations.sh/logo/browserbase.com",
60 featured: true,60 featured: true,
61 },61 },
62 {62 {
@@ -65,7 +65,7 @@ export const mcpPresets: readonly McpPreset[] = [ · 2 unmodified lines
65 summary: "Crawl and scrape websites into structured data.",65 summary: "Crawl and scrape websites into structured data.",
66 url: "https://mcp.firecrawl.dev/mcp",66 url: "https://mcp.firecrawl.dev/mcp",
67 endpoint: "https://mcp.firecrawl.dev/mcp",67 endpoint: "https://mcp.firecrawl.dev/mcp",
68 icon: "https://www.firecrawl.dev/favicon.ico",68 icon: "https://integrations.sh/logo/firecrawl.dev",
69 featured: true,69 featured: true,
70 },70 },
71 {71 {
@@ -74,7 +74,7 @@ export const mcpPresets: readonly McpPreset[] = [ · 2 unmodified lines
74 summary: "Serverless Postgres — branches, queries, and management.",74 summary: "Serverless Postgres — branches, queries, and management.",
75 url: "https://mcp.neon.tech/mcp",75 url: "https://mcp.neon.tech/mcp",
76 endpoint: "https://mcp.neon.tech/mcp",76 endpoint: "https://mcp.neon.tech/mcp",
77 icon: "https://neon.tech/favicon/favicon.ico",77 icon: "https://integrations.sh/logo/neon.tech",
78 featured: true,78 featured: true,
79 },79 },
80 {80 {
@@ -83,7 +83,7 @@ export const mcpPresets: readonly McpPreset[] = [ · 2 unmodified lines
83 summary: "Query, analyze, and monitor your logs and event data.",83 summary: "Query, analyze, and monitor your logs and event data.",
84 url: "https://mcp.axiom.co/mcp",84 url: "https://mcp.axiom.co/mcp",
85 endpoint: "https://mcp.axiom.co/mcp",85 endpoint: "https://mcp.axiom.co/mcp",
86 icon: "https://axiom.co/favicon.ico",86 icon: "https://integrations.sh/logo/axiom.co",
87 featured: true,87 featured: true,
88 },88 },
89 {89 {
@@ -92,7 +92,7 @@ export const mcpPresets: readonly McpPreset[] = [ · 2 unmodified lines
92 summary: "Manage payments, subscriptions, and billing via MCP.",92 summary: "Manage payments, subscriptions, and billing via MCP.",
93 url: "https://mcp.stripe.com",93 url: "https://mcp.stripe.com",
94 endpoint: "https://mcp.stripe.com",94 endpoint: "https://mcp.stripe.com",
95 icon: "https://stripe.com/favicon.ico",95 icon: "https://integrations.sh/logo/stripe.com",
96 featured: true,96 featured: true,
97 },97 },
98 {98 {
@@ -101,7 +101,7 @@ export const mcpPresets: readonly McpPreset[] = [ · 2 unmodified lines
101 summary: "Issues, projects, teams, and cycles via MCP.",101 summary: "Issues, projects, teams, and cycles via MCP.",
102 url: "https://mcp.linear.app/mcp",102 url: "https://mcp.linear.app/mcp",
103 endpoint: "https://mcp.linear.app/mcp",103 endpoint: "https://mcp.linear.app/mcp",
104 icon: "https://linear.app/favicon.ico",104 icon: "https://integrations.sh/logo/linear.app",
105 featured: true,105 featured: true,
106 },106 },
107 {107 {
@@ -110,7 +110,7 @@ export const mcpPresets: readonly McpPreset[] = [ · 2 unmodified lines
110 summary: "Databases, pages, blocks, and search via MCP.",110 summary: "Databases, pages, blocks, and search via MCP.",
111 url: "https://mcp.notion.com/mcp",111 url: "https://mcp.notion.com/mcp",
112 endpoint: "https://mcp.notion.com/mcp",112 endpoint: "https://mcp.notion.com/mcp",
113 icon: "https://www.notion.com/front-static/favicon.ico",113 icon: "https://integrations.sh/logo/notion.com",
114 featured: true,114 featured: true,
115 },115 },
116 {116 {
@@ -127,7 +127,7 @@ export const mcpPresets: readonly McpPreset[] = [ · 10 unmodified lines
127 summary: "Workers, KV, D1, R2, and DNS management via MCP.",127 summary: "Workers, KV, D1, R2, and DNS management via MCP.",
128 url: "https://mcp.cloudflare.com/mcp",128 url: "https://mcp.cloudflare.com/mcp",
129 endpoint: "https://mcp.cloudflare.com/mcp",129 endpoint: "https://mcp.cloudflare.com/mcp",
130 icon: "https://cloudflare.com/favicon.ico",130 icon: "https://integrations.sh/logo/cloudflare.com",
131 },131 },
132 {132 {
133 id: "chrome-devtools",133 id: "chrome-devtools",
packages/plugins/microsoft/src/sdk/presets.ts+1−1
@@ -27,7 +27,7 @@ export interface MicrosoftGraphScopePreset { · 26 unmodified lines
27 readonly audience: MicrosoftGraphScopeAudience;27 readonly audience: MicrosoftGraphScopeAudience;
28}28}
29 29
30const MICROSOFT_ICON = "https://www.microsoft.com/favicon.ico";30const MICROSOFT_ICON = "https://integrations.sh/logo/microsoft.com";
31const svglIcon = (name: string) => `https://svgl.app/library/${name}.svg`;31const svglIcon = (name: string) => `https://svgl.app/library/${name}.svg`;
32 32
33export const MICROSOFT_GRAPH_OPENAPI_URL =33export const MICROSOFT_GRAPH_OPENAPI_URL =
packages/plugins/openapi/src/sdk/presets.ts+13−13
@@ -13,7 +13,7 @@ const openApiOnlyPresets: readonly OpenApiPreset[] = [ · 12 unmodified lines
13 name: "Stripe",13 name: "Stripe",
14 summary: "Payments, subscriptions, customers, and invoices.",14 summary: "Payments, subscriptions, customers, and invoices.",
15 url: "https://raw.githubusercontent.com/stripe/openapi/master/openapi/spec3.json",15 url: "https://raw.githubusercontent.com/stripe/openapi/master/openapi/spec3.json",
16 icon: "https://stripe.com/favicon.ico",16 icon: "https://integrations.sh/logo/stripe.com",
17 featured: true,17 featured: true,
18 },18 },
19 {19 {
@@ -29,7 +29,7 @@ const openApiOnlyPresets: readonly OpenApiPreset[] = [ · 9 unmodified lines
29 name: "Vercel",29 name: "Vercel",
30 summary: "Deployments, domains, projects, and edge config.",30 summary: "Deployments, domains, projects, and edge config.",
31 url: "https://openapi.vercel.sh",31 url: "https://openapi.vercel.sh",
32 icon: "https://vercel.com/favicon.ico",32 icon: "https://integrations.sh/logo/vercel.com",
33 featured: true,33 featured: true,
34 },34 },
35 {35 {
@@ -37,7 +37,7 @@ const openApiOnlyPresets: readonly OpenApiPreset[] = [ · 1 unmodified line
37 name: "Cloudflare",37 name: "Cloudflare",
38 summary: "DNS, workers, pages, R2, and security rules.",38 summary: "DNS, workers, pages, R2, and security rules.",
39 url: "https://raw.githubusercontent.com/cloudflare/api-schemas/main/openapi.json",39 url: "https://raw.githubusercontent.com/cloudflare/api-schemas/main/openapi.json",
40 icon: "https://cloudflare.com/favicon.ico",40 icon: "https://integrations.sh/logo/cloudflare.com",
41 featured: true,41 featured: true,
42 },42 },
43 {43 {
@@ -45,7 +45,7 @@ const openApiOnlyPresets: readonly OpenApiPreset[] = [ · 1 unmodified line
45 name: "Neon",45 name: "Neon",
46 summary: "Serverless Postgres: projects, branches, and endpoints.",46 summary: "Serverless Postgres: projects, branches, and endpoints.",
47 url: "https://neon.tech/api_spec/release/v2.json",47 url: "https://neon.tech/api_spec/release/v2.json",
48 icon: "https://neon.tech/favicon/favicon.ico",48 icon: "https://integrations.sh/logo/neon.tech",
49 featured: true,49 featured: true,
50 },50 },
51 {51 {
@@ -77,7 +77,7 @@ const openApiOnlyPresets: readonly OpenApiPreset[] = [ · 25 unmodified lines
77 name: "Exa",77 name: "Exa",
78 summary: "Web search, similar links, content retrieval, and answers.",78 summary: "Web search, similar links, content retrieval, and answers.",
79 url: "https://raw.githubusercontent.com/exa-labs/openapi-spec/refs/heads/master/exa-openapi-spec.yaml",79 url: "https://raw.githubusercontent.com/exa-labs/openapi-spec/refs/heads/master/exa-openapi-spec.yaml",
80 icon: "https://exa.ai/images/favicon-32x32.png",80 icon: "https://integrations.sh/logo/exa.ai",
81 featured: true,81 featured: true,
82 },82 },
83 {83 {
@@ -85,7 +85,7 @@ const openApiOnlyPresets: readonly OpenApiPreset[] = [ · 1 unmodified line
85 name: "Exa Websets",85 name: "Exa Websets",
86 summary: "Websets, enrichments, webhooks, and monitors.",86 summary: "Websets, enrichments, webhooks, and monitors.",
87 url: "https://raw.githubusercontent.com/exa-labs/openapi-spec/refs/heads/master/exa-websets-spec.yaml",87 url: "https://raw.githubusercontent.com/exa-labs/openapi-spec/refs/heads/master/exa-websets-spec.yaml",
88 icon: "https://exa.ai/images/favicon-32x32.png",88 icon: "https://integrations.sh/logo/exa.ai",
89 featured: true,89 featured: true,
90 },90 },
91 {91 {
@@ -93,49 +93,49 @@ const openApiOnlyPresets: readonly OpenApiPreset[] = [ · 1 unmodified line
93 name: "Axiom",93 name: "Axiom",
94 summary: "Log ingestion, querying, datasets, and monitors.",94 summary: "Log ingestion, querying, datasets, and monitors.",
95 url: "https://axiom.co/docs/restapi/versions/v2.json",95 url: "https://axiom.co/docs/restapi/versions/v2.json",
96 icon: "https://axiom.co/favicon.ico",96 icon: "https://integrations.sh/logo/axiom.co",
97 },97 },
98 {98 {
99 id: "asana",99 id: "asana",
100 name: "Asana",100 name: "Asana",
101 summary: "Tasks, projects, teams, and workspace management.",101 summary: "Tasks, projects, teams, and workspace management.",
102 url: "https://raw.githubusercontent.com/APIs-guru/openapi-directory/main/APIs/asana.com/1.0/openapi.yaml",102 url: "https://raw.githubusercontent.com/APIs-guru/openapi-directory/main/APIs/asana.com/1.0/openapi.yaml",
103 icon: "https://asana.com/favicon.ico",103 icon: "https://integrations.sh/logo/asana.com",
104 },104 },
105 {105 {
106 id: "twilio",106 id: "twilio",
107 name: "Twilio",107 name: "Twilio",
108 summary: "SMS, voice, video, and messaging APIs.",108 summary: "SMS, voice, video, and messaging APIs.",
109 url: "https://raw.githubusercontent.com/twilio/twilio-oai/main/spec/json/twilio_api_v2010.json",109 url: "https://raw.githubusercontent.com/twilio/twilio-oai/main/spec/json/twilio_api_v2010.json",
110 icon: "https://twilio.com/favicon.ico",110 icon: "https://integrations.sh/logo/twilio.com",
111 },111 },
112 {112 {
113 id: "digitalocean",113 id: "digitalocean",
114 name: "DigitalOcean",114 name: "DigitalOcean",
115 summary: "Droplets, Kubernetes, databases, and networking.",115 summary: "Droplets, Kubernetes, databases, and networking.",
116 url: "https://raw.githubusercontent.com/digitalocean/openapi/main/specification/DigitalOcean-public.v2.yaml",116 url: "https://raw.githubusercontent.com/digitalocean/openapi/main/specification/DigitalOcean-public.v2.yaml",
117 icon: "https://assets.digitalocean.com/favicon.ico",117 icon: "https://integrations.sh/logo/digitalocean.com",
118 },118 },
119 {119 {
120 id: "petstore",120 id: "petstore",
121 name: "Petstore",121 name: "Petstore",
122 summary: "Classic OpenAPI demo, no auth required.",122 summary: "Classic OpenAPI demo, no auth required.",
123 url: "https://petstore3.swagger.io/api/v3/openapi.json",123 url: "https://petstore3.swagger.io/api/v3/openapi.json",
124 icon: "https://petstore3.swagger.io/favicon-32x32.png",124 icon: "https://integrations.sh/logo/petstore3.swagger.io",
125 },125 },
126 {126 {
127 id: "val-town",127 id: "val-town",
128 name: "Val Town",128 name: "Val Town",
129 summary: "Vals, runs, blobs, and email/web endpoints.",129 summary: "Vals, runs, blobs, and email/web endpoints.",
130 url: "https://api.val.town/openapi.json",130 url: "https://api.val.town/openapi.json",
131 icon: "https://www.val.town/favicon.svg",131 icon: "https://integrations.sh/logo/val.town",
132 },132 },
133 {133 {
134 id: "resend",134 id: "resend",
135 name: "Resend",135 name: "Resend",
136 summary: "Transactional email sending and domain management.",136 summary: "Transactional email sending and domain management.",
137 url: "https://raw.githubusercontent.com/resend/resend-openapi/main/resend.yaml",137 url: "https://raw.githubusercontent.com/resend/resend-openapi/main/resend.yaml",
138 icon: "https://resend.com/static/favicons/favicon.ico",138 icon: "https://integrations.sh/logo/resend.com",
139 },139 },
140 {140 {
141 id: "spotify",141 id: "spotify",