Skip to content

v0.19.0: OAuth refresh fix, every redirect hop checked, 37 new connectors

Latest

Choose a tag to compare

@keysersoft keysersoft released this 06 Oct 19:36
fa31264

Security

Self-hosted instances should update.

  • Every redirect hop is checked. Requests to user-supplied URLs (connector base URLs, token and login endpoints, spec and schema URLs, MCP servers) now go through one helper that follows redirects itself and applies the outbound policy to each hop and to the address actually connected to (#907).
  • OAuth2 refresh tokens are no longer spent by Test connection. The connection test, which the dashboard runs for every connector on each load, renewed OAuth2 tokens without saving them. Providers that rotate refresh tokens (JTL, Sage, DATEV and others) then revoked the one the connector kept, and it failed with 401 about an hour after each authorization. The test now saves what it renews, the whole app shares one token cache and refresh lock, a burst of 401s triggers one refresh instead of one per call, and when a renewal fails the error says what the token endpoint answered. A config that is not saved yet no longer shares a cache entry with other workspaces using the same provider (#916).
  • No npm in the runtime image. Migrations run through node directly, and npm, npx and corepack are removed from the image, together with the vulnerable packages bundled inside npm. Compiled test files are no longer shipped either (#915, #911).
  • MCP connectors cannot point at this AnythingMCP server itself, which created a call loop (#882).

OAuth and MCP clients

  • MCP API keys work as Authorization: Bearer, for clients that can only send a bearer token: Anthropic's Messages API MCP connector, the OpenAI Responses API mcp tool and several automation tools. X-API-Key still works and wins when both are sent (#909).
  • PKCE exemption for listed confidential clients. OAUTH_PKCE_EXEMPT_CLIENT_IDS lets clients that cannot send PKCE, such as a Copilot Studio connector, sign in with a client secret. Empty by default, which changes nothing (#884, #888).
  • Authorize with the provider instead of pasting a refresh token: Sage Business Cloud, Box, Dropbox, Exact Online, Fatture in Cloud, Fortnox, FreshBooks, Google Analytics 4, Nimble, Teamleader, Visma eAccounting and Zoho CRM. The refresh token field is optional now (#916, #917).

Connectors

  • 37 new adapters in the catalog, most of them services workspaces had been building by hand: Printify, Wildberries, PeopleHR, Klardaten, Autotask, ShipStation, Hetzner, Procore, Sage 200 and more (#903, #905), plus FXMacroData (#892, thanks @roberttidball) and MOCO (#906, thanks @Coding-Professional). 299 adapters in total, up from 262.
  • Etsy can create, edit and publish listings, upload photos, change price and stock and add order tracking: 12 new tools (#887). Wrong app keys are caught during setup instead of at the first call (#881).
  • Tool arguments reach the vendor: DELETE requests send their mapped body, and arguments that were declared but never sent are fixed in several adapters (#898).
  • OpenAPI import sends header parameters and reads parameters declared on the path item (#883).
  • Guided setup says up front what each connector needs and explains why a check failed; the setups that failed most often (Odoo, Freshdesk, WooCommerce and others) are fixed (#900).
  • Header names that are not valid HTTP tokens are refused when saved, copy buttons only say "Copied" when the copy worked, and MCP servers that refuse our host name say which setting to change (#885, #845).

Everyone

  • Invocation log: a failure that repeats within a minute is counted on one row instead of being stored again, and full payloads are kept up to an hourly budget per workspace, then shortened. Keeps the table small when an upstream rate limit fails thousands of identical calls (#893).
  • Self-hosted instances show a small "Star on GitHub" button in the sidebar, which stays hidden once dismissed (#848, thanks @adityawaghamare).
  • Shared instructions for AI coding agents working on the repo, in AGENTS.md (#886, thanks @LaimaWu).

AnythingMCP Cloud

The welcome page leads with the apps workspaces actually connect, setup_get_status reports the trial, sign-up refuses disposable addresses, deleting a workspace releases its trial, and the OAuth sign-in page puts "Create an account" first, and after Approve an admin on the free trial sees when it ends (#920, #889, #914, #897, #894, #908, #896, #899, #895).

Dependencies

Routine updates merged since 0.18.1, among them @modelcontextprotocol/client 2.2.0 and sharp 0.35.5.

Self-hosted

One migration, applied at start: tool_invocations.repeat_count, a column with a constant default (no table rewrite). New optional settings, all with safe defaults: OAUTH_PKCE_EXEMPT_CLIENT_IDS, INVOCATION_REPEAT_WINDOW_SECONDS, INVOCATION_FULL_PAYLOADS_PER_HOUR. The Docker image is helpcodeai/anythingmcp:v0.19.0.