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