Tools Guide
Alfred AI includes 875+ tools across 17 categories. This guide covers how to discover, call, chain, and create tools — whether you're using the API, voice, or dashboard.
Tool Categories (17)
Tools are organized into 17 categories covering business, development, creative, legal, healthcare, and more.
List Categories via API
const categories = await fetch('https://gositeme.com/api/tools.php?action=categories')
.then(r => r.json());
console.log(categories);
// { categories: ["legal","healthcare","education",...], total: 17 }
// Get tools in a category
const legalTools = await fetch('https://gositeme.com/api/tools.php?action=list&category=legal')
.then(r => r.json());
console.log(`${legalTools.tools.length} legal tools available`);
Calling Tools via API
Execute any tool programmatically via the Tools API. All tool calls use the same endpoint with the tool name and arguments.
Basic Tool Call
const result = await fetch('https://gositeme.com/api/tools.php?action=execute', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer sess_abc123...'
},
body: JSON.stringify({
tool_name: 'summarize_text',
args: {
text: 'Your long article text here...',
max_length: 200,
format: 'bullet_points'
}
})
}).then(r => r.json());
console.log(result);
// {
// success: true,
// tool: "summarize_text",
// result: "• Point one\n• Point two\n• Point three",
// execution_time_ms: 1340,
// credits_used: 1
// }
import requests
result = requests.post(
'https://gositeme.com/api/tools.php?action=execute',
headers={'Authorization': 'Bearer sess_abc123...'},
json={
'tool_name': 'dns_lookup',
'args': {'domain': 'example.com', 'type': 'MX'}
}
).json()
for record in result['result']['records']:
print(f"{record['type']}: {record['value']} (priority: {record.get('priority', 'N/A')})")
$ch = curl_init('https://gositeme.com/api/tools.php?action=execute');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Authorization: Bearer sess_abc123...'
],
CURLOPT_POSTFIELDS => json_encode([
'tool_name' => 'generate_invoice',
'args' => [
'client' => 'Acme Corp',
'items' => [
['description' => 'Web Development', 'amount' => 5000],
['description' => 'SEO Audit', 'amount' => 1500]
],
'currency' => 'CAD',
'due_date' => '2026-04-01'
]
]),
CURLOPT_RETURNTRANSFER => true
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
echo "Invoice URL: " . $result['result']['pdf_url'];
curl -X POST "https://gositeme.com/api/tools.php?action=execute" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sess_abc123..." \
-d '{
"tool_name": "website_screenshot",
"args": {
"url": "https://example.com",
"width": 1920,
"height": 1080,
"format": "png"
}
}'
Discovering Tool Arguments
Each tool has a defined argument schema. Query it before calling:
const toolInfo = await fetch('https://gositeme.com/api/tools.php?action=info&tool=summarize_text')
.then(r => r.json());
console.log(toolInfo);
// {
// name: "summarize_text",
// category: "productivity",
// description: "Summarize long text into concise bullet points or paragraphs",
// args: [
// { name: "text", type: "string", required: true, description: "Text to summarize" },
// { name: "max_length", type: "integer", required: false, description: "Max output length" },
// { name: "format", type: "string", required: false, description: "Output format", enum: ["paragraph","bullet_points","numbered"] }
// ]
// }
Calling Tools via Voice
Call any tool naturally by voice — Alfred understands intent and maps it to the right tool automatically. No special syntax needed.
Voice Tool Call Examples
| What You Say | Tool Called | Category |
|---|---|---|
| "Look up the DNS records for example.com" | dns_lookup | DevOps |
| "Summarize this article for me" | summarize_text | Productivity |
| "Draft a cease and desist letter" | draft_legal_letter | Legal |
| "What's the weather in Montreal?" | weather_lookup | Utilities |
| "Create an invoice for $5,000" | generate_invoice | Finance |
| "Scan example.com for security issues" | security_scan | Security |
| "Generate a QR code for my website" | qr_generator | Utilities |
| "Help me with my calculus homework" | homework_helper | Education |
Voice + Multi-Tool
Alfred can chain multiple tools in a single voice request:
- "Check my website's DNS and run a security scan" →
dns_lookup+security_scan - "Draft a contract and generate a PDF" →
draft_contract+generate_pdf - "Research competitors and write a summary report" →
competitor_analysis+summarize_text+generate_report
Tool Chaining
Chain multiple tools together so the output of one becomes the input of the next. Tool chaining lets you build complex workflows with a single API call.
const result = await fetch('https://gositeme.com/api/tools.php?action=chain', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer sess_abc123...'
},
body: JSON.stringify({
chain: [
{
tool: 'website_scraper',
args: { url: 'https://competitor.com' },
output_as: 'scraped_content'
},
{
tool: 'summarize_text',
args: { text: '{{scraped_content.text}}', max_length: 500 },
output_as: 'summary'
},
{
tool: 'generate_report',
args: {
title: 'Competitor Analysis',
content: '{{summary}}',
format: 'pdf'
},
output_as: 'report'
}
]
})
}).then(r => r.json());
console.log(result.chain_results);
// Each step's output, plus final report PDF URL
import requests
result = requests.post(
'https://gositeme.com/api/tools.php?action=chain',
headers={'Authorization': 'Bearer sess_abc123...'},
json={
'chain': [
{
'tool': 'dns_lookup',
'args': {'domain': 'example.com', 'type': 'A'},
'output_as': 'dns'
},
{
'tool': 'ssl_check',
'args': {'domain': 'example.com'},
'output_as': 'ssl'
},
{
'tool': 'performance_test',
'args': {'url': 'https://example.com'},
'output_as': 'perf'
},
{
'tool': 'generate_report',
'args': {
'title': 'Website Health Report',
'sections': {
'dns': '{{dns}}',
'ssl': '{{ssl}}',
'performance': '{{perf}}'
}
},
'output_as': 'report'
}
]
}
).json()
print(f"Report: {result['chain_results']['report']['pdf_url']}")
Chain Variable Syntax
Use {{step_name}} to reference the output of a previous step, or {{step_name.field}} to reference a specific field:
| Syntax | Description |
|---|---|
{{step_name}} | Entire output of step |
{{step_name.field}} | Specific field from output |
{{step_name.records[0].value}} | Array index + nested field |
Playbooks
Playbooks are saved tool chains that you can reuse. Create a playbook once and run it repeatedly with different inputs.
Create a Playbook
const playbook = await fetch('https://gositeme.com/api/tools.php', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer sess_abc123...'
},
body: JSON.stringify({
action: 'create_playbook',
name: 'Website Audit',
description: 'Full website health check including DNS, SSL, performance, and SEO',
inputs: [
{ name: 'domain', type: 'string', required: true, description: 'Domain to audit' }
],
chain: [
{ tool: 'dns_lookup', args: { domain: '{{domain}}', type: 'ALL' }, output_as: 'dns' },
{ tool: 'ssl_check', args: { domain: '{{domain}}' }, output_as: 'ssl' },
{ tool: 'performance_test', args: { url: 'https://{{domain}}' }, output_as: 'perf' },
{ tool: 'seo_audit', args: { url: 'https://{{domain}}' }, output_as: 'seo' },
{ tool: 'generate_report', args: {
title: 'Website Audit: {{domain}}',
sections: { dns: '{{dns}}', ssl: '{{ssl}}', performance: '{{perf}}', seo: '{{seo}}' }
}, output_as: 'report'
}
]
})
}).then(r => r.json());
console.log(playbook.id); // "pb_websiteaudit_123"
Run a Playbook
curl -X POST "https://gositeme.com/api/tools.php?action=run_playbook" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sess_abc123..." \
-d '{
"playbook_id": "pb_websiteaudit_123",
"inputs": { "domain": "gositeme.com" }
}'
Creating Custom Tools
Create your own tools and register them with Alfred. Custom tools can wrap external APIs, run custom logic, or combine existing tools in new ways.
Tool Definition Schema
{
"name": "my_custom_tool",
"display_name": "My Custom Tool",
"description": "What this tool does in one sentence",
"category": "utilities",
"args": [
{
"name": "input_text",
"type": "string",
"required": true,
"description": "The text to process"
},
{
"name": "format",
"type": "string",
"required": false,
"description": "Output format",
"enum": ["json", "text", "html"],
"default": "text"
}
],
"webhook_url": "https://yourserver.com/api/my-tool",
"auth": {
"type": "bearer",
"token_env": "MY_TOOL_API_KEY"
},
"rate_limit": 60,
"timeout_ms": 30000
}
Register a Custom Tool
const tool = await fetch('https://gositeme.com/api/tools.php', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer sess_abc123...'
},
body: JSON.stringify({
action: 'register_tool',
name: 'inventory_check',
display_name: 'Inventory Checker',
description: 'Check product inventory levels across warehouses',
category: 'productivity',
args: [
{ name: 'product_id', type: 'string', required: true, description: 'Product SKU or ID' },
{ name: 'warehouse', type: 'string', required: false, description: 'Specific warehouse code' }
],
webhook_url: 'https://yourapi.com/inventory/check',
auth: { type: 'api_key', header: 'X-API-Key' }
})
}).then(r => r.json());
console.log(tool);
// { success: true, tool_id: "tool_custom_inv123", status: "active" }
Webhook Implementation
Your webhook receives POST requests from Alfred when the tool is called:
<?php
// Your server: /api/inventory/check
header('Content-Type: application/json');
$input = json_decode(file_get_contents('php://input'), true);
$product_id = $input['product_id'] ?? '';
$warehouse = $input['warehouse'] ?? 'all';
// Your business logic here
$inventory = getInventoryLevels($product_id, $warehouse);
echo json_encode([
'success' => true,
'result' => [
'product_id' => $product_id,
'total_stock' => $inventory['total'],
'warehouses' => $inventory['by_warehouse'],
'last_updated' => date('c')
]
]);
?>
X-Alfred-Signature header with each request. Verify this HMAC signature server-side to ensure requests originate from Alfred. See Authentication docs.Tool Marketplace
Publish your custom tools to the Alfred Marketplace for other users to discover and use. Monetize your tools with per-call pricing or subscriptions.
Publish a Tool
await fetch('https://gositeme.com/api/tools.php', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer sess_abc123...'
},
body: JSON.stringify({
action: 'publish_tool',
tool_id: 'tool_custom_inv123',
listing: {
title: 'Inventory Checker Pro',
description: 'Real-time inventory tracking across multiple warehouses',
icon: 'fas fa-boxes',
pricing: {
model: 'per_call', // per_call, monthly, free
price: 0.01, // $0.01 per call
currency: 'USD',
free_tier: 100 // 100 free calls/month
},
tags: ['inventory', 'warehouse', 'e-commerce', 'tracking'],
documentation_url: 'https://yoursite.com/docs/inventory-checker'
}
})
});
Marketplace Review Process
- Submit — Publish your tool listing for review
- Testing — Our team tests the tool for reliability and security
- Approval — Tool goes live in the marketplace (24–48 hours)
- Analytics — Track usage, revenue, and user feedback in your dashboard
Example Workflows
Here are practical multi-tool workflows showing how Alfred's tools work together for real-world tasks.
Deploy a Website
End-to-end website deployment from domain registration to going live.
// Deploy a Website workflow
const result = await fetch('https://gositeme.com/api/tools.php?action=chain', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer sess_abc123...'
},
body: JSON.stringify({
chain: [
{ tool: 'domain_check', args: { domain: 'mysite.com' }, output_as: 'avail' },
{ tool: 'domain_register', args: { domain: 'mysite.com', years: 1 }, output_as: 'reg' },
{ tool: 'dns_configure', args: { domain: 'mysite.com', records: [
{ type: 'A', value: '{{server_ip}}' },
{ type: 'CNAME', name: 'www', value: 'mysite.com' }
]}, output_as: 'dns' },
{ tool: 'ssl_provision', args: { domain: 'mysite.com' }, output_as: 'ssl' },
{ tool: 'deploy_site', args: { domain: 'mysite.com', source: 'git://repo.git' }, output_as: 'deploy' },
{ tool: 'performance_test', args: { url: 'https://mysite.com' }, output_as: 'perf' }
]
})
}).then(r => r.json());
Analyze Competitors
Research competitors and generate a comprehensive analysis report.
import requests
competitors = ['competitor1.com', 'competitor2.com', 'competitor3.com']
for domain in competitors:
result = requests.post(
'https://gositeme.com/api/tools.php?action=chain',
headers={'Authorization': 'Bearer sess_abc123...'},
json={
'chain': [
{'tool': 'website_scraper', 'args': {'url': f'https://{domain}'}, 'output_as': 'content'},
{'tool': 'seo_audit', 'args': {'url': f'https://{domain}'}, 'output_as': 'seo'},
{'tool': 'summarize_text', 'args': {'text': '{{content.text}}', 'max_length': 300}, 'output_as': 'summary'}
]
}
).json()
print(f"\n=== {domain} ===")
print(f"Summary: {result['chain_results']['summary']}")
print(f"SEO Score: {result['chain_results']['seo']['score']}/100")
Generate Legal Documents
Draft, review, and finalize legal documents with AI assistance.
// Generate Legal Documents workflow
const legalDoc = await fetch('https://gositeme.com/api/tools.php?action=chain', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer sess_abc123...'
},
body: JSON.stringify({
chain: [
{
tool: 'case_research',
args: { topic: 'breach of contract', jurisdiction: 'Quebec' },
output_as: 'research'
},
{
tool: 'draft_motion',
args: {
type: 'motion_to_compel',
facts: 'Defendant failed to provide discovery documents within 30 days...',
case_law: '{{research.relevant_cases}}',
jurisdiction: 'Quebec Superior Court'
},
output_as: 'draft'
},
{
tool: 'legal_review',
args: { document: '{{draft.text}}', check_citations: true },
output_as: 'review'
},
{
tool: 'generate_pdf',
args: {
content: '{{review.final_text}}',
template: 'legal_motion',
title: 'Motion to Compel Discovery'
},
output_as: 'pdf'
}
]
})
}).then(r => r.json());
console.log(`PDF ready: ${legalDoc.chain_results.pdf.url}`);
Someone from somewhere
just launched website.com
Just now