GraphQL Tools
GraphQL tools execute custom GraphQL queries or mutations against a specified endpoint. They provide a structured way to interact with GraphQL APIs with full parameter mapping and result extraction.
Creating a GraphQL Tool
Via the UI
- Navigate to Tools and click Create Tool
- Select GraphQL as the execution method
- Enter the GraphQL endpoint URL
- Write your query or mutation
- Define input parameters that map to GraphQL variables
- Configure authentication headers
Via the API
curl -X POST https://api.almyty.com/organizations/{orgId}/tools \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "search_repositories",
"description": "Search GitHub repositories using GraphQL",
"type": "graphql",
"parameters": {
"type": "object",
"properties": {
"query": { "type": "string", "description": "Search query" },
"first": { "type": "integer", "description": "Number of results", "default": 10 }
},
"required": ["query"]
},
"executionConfig": {
"endpoint": "https://api.github.com/graphql",
"headers": {
"Authorization": "Bearer {{env.GITHUB_TOKEN}}"
},
"query": "query SearchRepos($query: String!, $first: Int!) { search(query: $query, type: REPOSITORY, first: $first) { repositoryCount edges { node { ... on Repository { name description stargazerCount url } } } } }",
"variables": {
"query": "{{parameters.query}}",
"first": "{{parameters.first}}"
}
}
}'Configuration
| Field | Type | Description |
|---|---|---|
endpoint | string | GraphQL API URL |
headers | object | Request headers (authentication, content-type, etc.) |
query | string | GraphQL query or mutation string |
variables | object | Variable mapping using template expressions |
operationName | string | Operation name (required for documents with multiple operations) |
Variable Mapping
GraphQL variables are mapped from tool parameters using template expressions:
{
"variables": {
"id": "{{parameters.userId}}",
"filters": {
"status": "{{parameters.status}}",
"limit": "{{parameters.limit}}"
}
}
}Type coercion happens automatically:
- String parameters stay as strings
- Numeric parameters are passed as numbers
- Boolean parameters are passed as booleans
- Object parameters are passed as nested objects
Authentication
GraphQL endpoints typically use Bearer token authentication:
{
"headers": {
"Authorization": "Bearer {{env.API_TOKEN}}",
"Content-Type": "application/json"
}
}For APIs requiring custom authentication schemes, add any headers you need.
Error Handling
GraphQL APIs return errors in a specific format:
{
"data": null,
"errors": [
{
"message": "Not found",
"locations": [{ "line": 2, "column": 3 }],
"path": ["user"]
}
]
}almyty detects GraphQL errors and reports them as tool execution failures, including the error messages from the API.
Response Extraction
By default, the entire data object from the GraphQL response is returned
as the tool's result. For complex responses, you can use a Transform node
in an agent pipeline to extract specific fields.
Best Practices
- Use variables — Never interpolate values directly into the query string
- Name your operations — Helps with debugging and server-side logging
- Request only needed fields — GraphQL's strength is selective field querying
- Handle nullable fields — Many GraphQL schemas have nullable fields by default
- Test with GraphiQL — Verify your queries work before creating tools