{"protocolVersion":"0.3.0","name":"fullmakt-a2a","description":"Fullmakt management agent: create and manage collections, requests, environments, policies and agent identities in one workspace. Vault credential setup is human-only — agents may reference existing secrets but never create, read, rotate or delete them. Execution (calling a collection's requests as tools) happens over MCP at https://fullmakt.ai/mcp/{collection} with an execution-scoped token from the same token endpoint.","url":"https://fullmakt.ai/a2a","preferredTransport":"JSONRPC","version":"0.1.0","capabilities":{"streaming":false,"pushNotifications":false,"stateTransitionHistory":false},"securitySchemes":{"oauth2":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"https://fullmakt.ai/mcp-oauth/token","scopes":{"management":"Manage the workspace this client was provisioned for."}}}}},"security":[{"oauth2":["management"]}],"defaultInputModes":["application/json"],"defaultOutputModes":["application/json"],"skills":[{"id":"workspace.get","name":"Get workspace","description":"Summary of the workspace this token manages.","tags":["WorkspaceRead"],"inputSchema":{"type":"object","properties":{}},"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"collection.list","name":"List collections","description":"List the collections in the workspace.","tags":["CollectionRead"],"inputSchema":{"type":"object","properties":{}},"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"collection.create","name":"Create collection","description":"Create a collection in the workspace.","tags":["CollectionWrite"],"inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name"},"description":{"type":"string","description":"Optional description"}},"required":["name"]},"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"collection.get","name":"Get collection","description":"Full collection detail: items tree, variables, scripts.","tags":["CollectionRead"],"inputSchema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Collection GUID"}},"required":["collectionId"]},"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"collection.update","name":"Update collection","description":"Update name/description/auth/default environment/scripts.","tags":["CollectionWrite"],"inputSchema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Collection GUID"},"collection":{"type":"object","description":"UpdateCollectionRequest: name, description?, authConfigJson?, preRequestScript?, testScript?, defaultEnvironmentId?"}},"required":["collectionId","collection"]},"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"collection.delete","name":"Delete collection","description":"Delete a collection and everything in it.","tags":["CollectionWrite"],"inputSchema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Collection GUID"}},"required":["collectionId"]},"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"item.create","name":"Create item","description":"Create a folder or request (HTTP/GraphQL/WebSocket/gRPC/MCP) in a collection.","tags":["ItemWrite"],"inputSchema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Collection GUID"},"item":{"type":"object","description":"CreateCollectionItemRequest: itemType, name, description?, parentItemId?, protocolType?, request?, graphQlRequest?, webSocketRequest?, grpcRequest?, mcpRequest?"}},"required":["collectionId","item"]},"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"item.get","name":"Get item","description":"Fetch one item with its request definition and children.","tags":["CollectionRead"],"inputSchema":{"type":"object","properties":{"itemId":{"type":"string","description":"Item GUID"}},"required":["itemId"]},"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"item.update","name":"Update item","description":"Update an item's name, request definition and scripts.","tags":["ItemWrite"],"inputSchema":{"type":"object","properties":{"itemId":{"type":"string","description":"Item GUID"},"item":{"type":"object","description":"UpdateCollectionItemRequest payload"}},"required":["itemId","item"]},"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"item.delete","name":"Delete item","description":"Delete an item (and its children).","tags":["ItemWrite"],"inputSchema":{"type":"object","properties":{"itemId":{"type":"string","description":"Item GUID"}},"required":["itemId"]},"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"item.move","name":"Move item","description":"Re-parent and/or re-order an item within its collection.","tags":["ItemWrite"],"inputSchema":{"type":"object","properties":{"itemId":{"type":"string","description":"Item GUID"},"newParentId":{"type":"string","description":"New parent item GUID, omit for root"},"newSortOrder":{"type":"integer","description":"New sort position"}},"required":["itemId","newSortOrder"]},"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"environment.list","name":"List environments","description":"List the workspace's environments.","tags":["EnvironmentRead"],"inputSchema":{"type":"object","properties":{}},"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"environment.create","name":"Create environment","description":"Create an environment with variables. Variables may reference existing vault entries (vault://local/<name>) but LLM provider credentials cannot be set over A2A.","tags":["EnvironmentWrite"],"inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Environment name"},"variables":{"type":"array","description":"Variables: {key, initialValue, currentValue, enabled}"}},"required":["name"]},"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"environment.update","name":"Update environment","description":"Rename an environment and/or replace its variables. Any stored LLM credential config is preserved untouched.","tags":["EnvironmentWrite"],"inputSchema":{"type":"object","properties":{"environmentId":{"type":"string","description":"Environment GUID"},"name":{"type":"string","description":"Environment name"},"variables":{"type":"array","description":"Replacement variables"}},"required":["environmentId","name"]},"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"environment.delete","name":"Delete environment","description":"Delete an environment.","tags":["EnvironmentWrite"],"inputSchema":{"type":"object","properties":{"environmentId":{"type":"string","description":"Environment GUID"}},"required":["environmentId"]},"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"globals.get","name":"Get global variables","description":"List the workspace's global variables.","tags":["EnvironmentRead"],"inputSchema":{"type":"object","properties":{}},"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"globals.set","name":"Set global variables","description":"Replace the workspace's global variables.","tags":["EnvironmentWrite"],"inputSchema":{"type":"object","properties":{"variables":{"type":"array","description":"Variables: {key, initialValue, currentValue, enabled}"}},"required":["variables"]},"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"policy.get","name":"Get collection policy","description":"Read the policy document governing broker calls to a collection.","tags":["PolicyRead"],"inputSchema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Collection GUID"}},"required":["collectionId"]},"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"policy.set","name":"Set collection policy","description":"Set the policy document (hardDeny / requireApproval / behavior rules) for a collection.","tags":["PolicyWrite"],"inputSchema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Collection GUID"},"policyJson":{"type":"string","description":"The policy document as a JSON string"}},"required":["collectionId","policyJson"]},"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"approval.list","name":"List pending approvals","description":"List approvals awaiting a human decision. Deciding them is human-only.","tags":["ApprovalRead"],"inputSchema":{"type":"object","properties":{"status":{"type":"string","description":"Pending|Approved|Rejected|Expired|Used"},"limit":{"type":"integer","description":"Max rows (default 100)"}}},"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"principal.list","name":"List agent principals","description":"List the account's agent principals. Principals are account-level identities (not workspace-scoped), so this spans the owner's whole account.","tags":["PrincipalRead"],"inputSchema":{"type":"object","properties":{}},"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"principal.create","name":"Create agent principal","description":"Create a named account-level agent identity for execution-side auditing and policy.","tags":["PrincipalWrite"],"inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Principal name"}},"required":["name"]},"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"client.list","name":"List execution clients","description":"List account-level OAuth clients for the remote MCP execution surface (no secrets returned).","tags":["ClientRead"],"inputSchema":{"type":"object","properties":{}},"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"client.create","name":"Create execution client","description":"Create an OAuth client scoped to collections in this workspace. The secret is returned exactly once.","tags":["ClientWrite"],"inputSchema":{"type":"object","properties":{"principalId":{"type":"string","description":"Principal GUID"},"collectionIds":{"type":"array","description":"Collection GUIDs the client may scope tokens to"}},"required":["principalId","collectionIds"]},"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"vault.listEntries","name":"List vault entry references","description":"Metadata for existing vault entries (names + vault://local/<name> references). Values are never returned, and secrets can only be created, rotated or deleted by a human in the UI.","tags":["VaultRead"],"inputSchema":{"type":"object","properties":{}},"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"audit.list","name":"Query the audit trail","description":"Recent broker/A2A audit entries for this account.","tags":["AuditRead"],"inputSchema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Filter by collection GUID"},"surface":{"type":"string","description":"Filter by surface, e.g. 'a2a'"},"limit":{"type":"integer","description":"Max rows (default 100)"}}},"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"collection.import","name":"Import Postman collection","description":"Import a Postman v2.1 collection JSON into the workspace.","tags":["ImportExport"],"inputSchema":{"type":"object","properties":{"json":{"type":"string","description":"The Postman collection JSON"}},"required":["json"]},"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"collection.export","name":"Export Postman collection","description":"Export a collection as Postman v2.1 JSON.","tags":["ImportExport"],"inputSchema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Collection GUID"}},"required":["collectionId"]},"inputModes":["application/json"],"outputModes":["application/json"]}]}