Skip to content

feat: probe-based dynamic tool filtering by API key scope#69

Merged
Vortiago merged 5 commits intomainfrom
feature/addInMoreScopesForDynamicTools
Mar 2, 2026
Merged

feat: probe-based dynamic tool filtering by API key scope#69
Vortiago merged 5 commits intomainfrom
feature/addInMoreScopesForDynamicTools

Conversation

@Vortiago
Copy link
Owner

@Vortiago Vortiago commented Mar 1, 2026

  • Rewrites the dynamic tool list feature to use endpoint probing instead of auth.info role/policy inspection — each unique Outline API endpoint is POSTed with a fake UUID and tools whose endpoints return 401 are hidden from the tool list
  • Refactors the single dynamic_tools.py module into a dynamic_tools/ package with separate files for filtering logic, tool-endpoint mapping, and write tool names
  • Simplifies the readiness probe (/ready) to a keyless HEAD request against the Outline base URL, removing the dependency on a configured API key
  • Removes the auth_info() and auth_info_full() client methods, replacing them with probe_endpoint() which handles 401 vs 403 distinction and rate-limit retries
  • Removes the eager auth_info() call from get_outline_client(), making client creation synchronous
  • Rewrites E2E tests to cover route scopes, namespaced scopes (documents:read, documents:write, documents:create), mixed scopes, invalid keys, and both stdio and streamable-http transports with exact set matching

@Vortiago Vortiago merged commit 565cc0f into main Mar 2, 2026
17 checks passed
@Vortiago Vortiago deleted the feature/addInMoreScopesForDynamicTools branch March 4, 2026 12:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant