| 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 |
API Connector
⚡ 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!
What This Skill Does
Connect to any API using plain English:
- 100+ Pre-configured APIs: GitHub, Slack, Stripe, Twilio, SendGrid, OpenAI, and more
- Natural language requests: "Send a Slack message to #general" → API call
- Auto authentication: Handles OAuth, API keys, JWT automatically
- Response parsing: Extracts relevant data from complex responses
- Code generation: Generates integration code in your language
- Webhook setup: Creates and manages webhooks
- Rate limiting: Automatically handles rate limits and retries
- Testing mode: Test API calls before using in production
Supported Services
Communication
- Slack: Messages, channels, users, files
- Discord: Servers, channels, messages, roles
- Twilio: SMS, voice calls, WhatsApp
- SendGrid: Email campaigns, templates
- Telegram: Bots, messages, groups
Development
- GitHub: Repos, issues, PRs, actions, releases
- GitLab: Projects, merge requests, CI/CD
- Bitbucket: Repositories, pipelines
- Linear: Issues, projects, teams
- Jira: Issues, boards, sprints
Payments
- Stripe: Payments, customers, subscriptions
- PayPal: Transactions, invoices
- Square: Payments, inventory
Cloud & Infrastructure
- AWS: S3, Lambda, EC2, RDS
- Google Cloud: Storage, Compute, Functions
- Azure: VMs, Storage, Functions
- Vercel: Deployments, projects
- Netlify: Sites, builds, functions
Data & Analytics
- Google Analytics: Reports, events, conversions
- Mixpanel: Events, funnels, cohorts
- Segment: Events, identify, track
AI & ML
- OpenAI: GPT, DALL-E, Embeddings
- Anthropic Claude: Messages, conversations
- Hugging Face: Models, inference
- Replicate: Model predictions
CRM & Sales
- Salesforce: Leads, opportunities, accounts
- HubSpot: Contacts, deals, companies
- Intercom: Users, conversations, messages
Productivity
- Notion: Pages, databases, blocks
- Airtable: Bases, records, tables
- Google Workspace: Drive, Sheets, Calendar, Gmail
- Microsoft 365: OneDrive, Excel, Outlook
Social Media
- Twitter/X: Tweets, timelines, users
- LinkedIn: Posts, profiles, connections
- Instagram: Posts, stories, insights
- YouTube: Videos, playlists, analytics
Instructions
Phase 1: Service Discovery
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 configuredSetup 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 securelyFor JWT:
Request credentials Generate JWT token Store for subsequent requests
Phase 2: Natural Language to API Call
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[]"=cardExecute Request:
Use Bash to make curl request Or use WebFetch for simple GET requests
Phase 3: Response Handling
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: OpenHandle 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
Phase 4: Code Generation
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}`);
Examples
Example 1: GitHub Automation
User: "Create a GitHub issue in my-repo about fixing the login bug"
Workflow:
- Parse: repo=my-repo, action=create issue, title=about login bug
- Build request with GitHub API
- Execute: POST /repos/owner/my-repo/issues
- Show result: "Issue #42 created: https://github.com/..."
- Offer code generation
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
Example 2: Multi-Service Workflow
User: "When a new Stripe payment succeeds, send a thank you email via SendGrid and log it to Airtable"
Workflow:
- Setup Stripe webhook
- Generate webhook handler code:
@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'}
Example 3: Bulk Operations
User: "Get all open PRs from my GitHub repos and send a summary to Slack"
Workflow:
- Fetch repos: GET /user/repos
- For each repo: GET /repos/{owner}/{repo}/pulls?state=open
- Aggregate results
- Format message
- Send to Slack
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 ✅
Configuration
.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}
Advanced Features
1. Batch Operations
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
2. Webhook Management
# 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
3. API Explorer
# Discover available endpoints
claude api explore github
# Show endpoint documentation
claude api docs github repos.create
4. Request Builder
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]
Tool Requirements
- Bash: Execute API calls with curl
- Read: Load configuration and credentials
- Write: Save responses and generated code
- WebFetch: Simple GET requests
Security
- Never logs sensitive data (tokens, passwords)
- Uses environment variables for secrets
- Validates SSL certificates
- Sanitizes request/response logs
Best Practices
- Store secrets in environment variables: Never commit API keys
- Test before production: Use testing endpoints when available
- Handle rate limits: Respect API limits
- Error handling: Always check response status
- Logging: Log API calls for debugging
Limitations
- Rate limits depend on your API plan
- Complex OAuth flows may need manual intervention
- Some APIs require IP whitelisting
- Webhook setup requires public URL
Related Skills
- workflow-composer - Chain API calls
- database-query - Store API results
- slack-bridge - Advanced Slack integration
Changelog
Version 1.0.0 (2025-01-13)
- Initial release
- 100+ API integrations
- OAuth, API key, JWT auth
- Code generation (Python, JavaScript)
- Webhook support
- Natural language requests
Contributing
Help expand API support:
- Add new services
- Improve error messages
- Add more code examples
- Create integration templates
License
Apache License 2.0 - See LICENSE
Author
GLINCKER Team
- GitHub: @GLINCKER
- Repository: claude-code-marketplace
🌟 Connect to any API without reading documentation - just ask!