// Connect to 100+ popular APIs using natural language - automatic authentication, request building, and response parsing
| name | api-connector |
| description | Connect to 100+ popular APIs using natural language - automatic authentication, request building, and response parsing |
| allowed-tools | ["Bash","Read","Write","WebFetch"] |
| version | 1.0.0 |
| author | GLINCKER Team |
| license | Apache-2.0 |
| keywords | ["api","integration","rest","graphql","webhooks","oauth","automation"] |
โก UNIQUE FEATURE: Natural language API integration for 100+ popular services. Automatically handles authentication (OAuth, API keys), builds requests, parses responses, and generates integration code. No API docs reading required!
Connect to any API using plain English:
Identify API:
Ask user:
- Which service to connect to?
- What action to perform?
- Authentication details (if not configured)
Check Configuration:
# Load API configs from .api-connector-config.yml
Use Read to check if API is already configured
Setup Authentication (if needed):
For API Key auth:
Ask user for API key
Securely store in config (or use environment variable)
For OAuth:
1. Generate OAuth URL
2. User authorizes in browser
3. Receive callback with code
4. Exchange for access token
5. Store tokens securely
For JWT:
Request credentials
Generate JWT token
Store for subsequent requests
When user makes a request:
Parse Intent:
"Send a Slack message to #general saying Hello"
Parsed:
- Service: Slack
- Action: Send message
- Channel: #general
- Content: "Hello"
Build API Request:
Example 1: Slack Message
curl -X POST https://slack.com/api/chat.postMessage \
-H "Authorization: Bearer ${SLACK_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"channel": "#general",
"text": "Hello"
}'
Example 2: GitHub Create Issue
curl -X POST https://api.github.com/repos/owner/repo/issues \
-H "Authorization: token ${GITHUB_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"title": "Bug: App crashes on startup",
"body": "Description...",
"labels": ["bug"]
}'
Example 3: Stripe Create Payment
curl -X POST https://api.stripe.com/v1/payment_intents \
-u "${STRIPE_SECRET_KEY}:" \
-d amount=2000 \
-d currency=usd \
-d "payment_method_types[]"=card
Execute Request:
Use Bash to make curl request
Or use WebFetch for simple GET requests
Parse Response:
// Raw GitHub API response
{
"id": 123456,
"number": 42,
"title": "Bug: App crashes",
"html_url": "https://github.com/owner/repo/issues/42",
"state": "open",
"created_at": "2025-01-13T10:30:00Z",
...100 more fields
}
Extract Relevant Data:
โ
Issue created successfully!
Issue #42: Bug: App crashes
URL: https://github.com/owner/repo/issues/42
Status: Open
Handle Errors:
โ API Error: Rate limit exceeded
Details:
- Limit: 5000 requests/hour
- Remaining: 0
- Resets at: 2025-01-13 11:00:00 UTC
Suggestion: Retry in 15 minutes or use a different token
Offer to generate integration code:
Python:
import requests
def send_slack_message(channel: str, text: str) -> dict:
"""Send a message to a Slack channel."""
url = "https://slack.com/api/chat.postMessage"
headers = {
"Authorization": f"Bearer {os.environ['SLACK_TOKEN']}",
"Content-Type": "application/json"
}
data = {
"channel": channel,
"text": text
}
response = requests.post(url, headers=headers, json=data)
response.raise_for_status()
return response.json()
# Usage
result = send_slack_message("#general", "Hello from Python!")
print(f"Message sent: {result['ts']}")
JavaScript:
async function sendSlackMessage(channel, text) {
const response = await fetch('https://slack.com/api/chat.postMessage', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.SLACK_TOKEN}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({ channel, text })
});
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return await response.json();
}
// Usage
const result = await sendSlackMessage('#general', 'Hello from JavaScript!');
console.log(`Message sent: ${result.ts}`);
User: "Create a GitHub issue in my-repo about fixing the login bug"
Workflow:
Result:
โ
GitHub issue created!
Issue #42: Fix login bug
Repository: owner/my-repo
URL: https://github.com/owner/my-repo/issues/42
Would you like me to:
1. Generate Python/JS code for this
2. Set up a webhook to track this issue
3. Create a similar issue in another repo
User: "When a new Stripe payment succeeds, send a thank you email via SendGrid and log it to Airtable"
Workflow:
@app.route('/webhook/stripe', methods=['POST'])
def stripe_webhook():
event = stripe.Webhook.construct_event(
request.data, request.headers['STRIPE_SIGNATURE'],
webhook_secret
)
if event['type'] == 'payment_intent.succeeded':
payment = event['data']['object']
email = payment['receipt_email']
# Send thank you email
send_email_sendgrid(
to=email,
subject="Thank you for your purchase!",
body="Your payment has been received."
)
# Log to Airtable
airtable_create_record('Payments', {
'Customer': email,
'Amount': payment['amount'] / 100,
'Date': datetime.now()
})
return {'status': 'success'}
User: "Get all open PRs from my GitHub repos and send a summary to Slack"
Workflow:
Result:
๐ Open Pull Requests Summary
my-api: 3 open PRs
- #42: Add authentication (2 days old)
- #43: Update dependencies (5 days old)
- #44: Fix bug in login (1 day old)
my-frontend: 1 open PR
- #15: Redesign homepage (3 days old)
Total: 4 open PRs across 2 repos
Posted to #engineering on Slack โ
.api-connector-config.yml:
services:
slack:
auth_type: oauth
token: ${SLACK_TOKEN}
workspace: my-workspace
github:
auth_type: token
token: ${GITHUB_TOKEN}
default_owner: my-org
stripe:
auth_type: api_key
secret_key: ${STRIPE_SECRET_KEY}
publishable_key: ${STRIPE_PUBLISHABLE_KEY}
sendgrid:
auth_type: api_key
api_key: ${SENDGRID_API_KEY}
from_email: noreply@example.com
defaults:
timeout: 30s
retry_count: 3
rate_limit_handling: auto
webhooks:
base_url: https://myapp.com/webhooks
secret: ${WEBHOOK_SECRET}
User: "Star all repos from @anthropics on GitHub"
Skill:
1. List repos: GET /users/anthropics/repos
2. For each repo: PUT /user/starred/{owner}/{repo}
3. Show progress
4. Handle rate limits
# Create webhook
claude api webhook create github \
--url https://myapp.com/webhook \
--events push,pull_request
# List webhooks
claude api webhook list github
# Test webhook
claude api webhook test github webhook-id
# Discover available endpoints
claude api explore github
# Show endpoint documentation
claude api docs github repos.create
Interactive mode for complex APIs:
claude api build stripe payment
1. What type of operation? [create/read/update/delete] create
2. Resource? payment_intent
3. Amount? 5000
4. Currency? usd
5. Payment methods? card
6. Save customer? yes
Generated request:
[Shows curl command]
Execute now? [yes/no]
Help expand API support:
Apache License 2.0 - See LICENSE
GLINCKER Team
๐ Connect to any API without reading documentation - just ask!