-
Notifications
You must be signed in to change notification settings - Fork 84
Open
Description
Problem
Tools need declarative permission requirements. Currently, auth and capabilities are entangled — tools either get full access or none.
Proposal
A scopes field on tool definitions:
navigator.modelContext.provideContext({
tools: [{
name: "update_profile",
scopes: ["profile:write"],
execute: async (args, context) => {
return await updateProfile(args, context.auth);
}
}, {
name: "read_profile",
scopes: ["profile:read"],
execute: async (args, context) => {
return await getProfile(context.auth);
}
}]
});Semantics
- UA enforces scopes before tool execution
- Scopes are declarative — UA can prompt users per-scope
- Model sees tool names and descriptions, but NOT scopes
- Scope format:
resource:action(aligned with OAuth conventions)
Open Questions
- Should scopes map to existing web permissions (Permissions API)?
- Should the UA aggregate scope prompts or prompt per-tool?
- How do scopes interact with HTTP header-based discovery (see Proposal: Session and authentication context for tools #87)?
Related: #87
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels