Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions .agents/plugins/marketplace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
"name": "scalekit-authstack",
"interface": {
"displayName": "Scalekit AuthStack"
},
"plugins": [
{
"name": "agentkit",
"source": {
"source": "local",
"path": "./plugins/agentkit"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Authentication"
},
{
"name": "saaskit",
"source": {
"source": "local",
"path": "./plugins/saaskit"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Authentication"
}
]
}
25 changes: 25 additions & 0 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
"name": "scalekit-authstack",
"description": "Auth infrastructure for developers — connect AI agents to 100+ OAuth services, or add enterprise SSO, SCIM, and MCP auth to your B2B app. Skip the protocol layer.",
"owner": {
"name": "Scalekit Inc",
"email": "support@scalekit.com"
},
"plugins": [
{
"name": "agentkit",
"description": "Give your AI agent authenticated access to Gmail, Slack, Salesforce, and 100+ services. OAuth flows, token vault, and tool discovery handled — write agent logic, not auth plumbing.",
"source": "./plugins/agentkit",
"category": "AI Agent Auth",
"homepage": "https://docs.scalekit.com/agentkit/overview/"
},
{
"name": "saaskit",
"description": "Enterprise auth for B2B apps without writing protocols. Login, sessions, SSO (Okta, Azure AD, Google), SCIM, MCP OAuth, RBAC, and API keys — any framework, any stack.",
"source": "./plugins/saaskit",
"category": "B2B App Auth",
"homepage": "https://docs.scalekit.com/authenticate/fsa/quickstart/"
}
]
}
28 changes: 28 additions & 0 deletions .cursor-plugin/marketplace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"name": "scalekit-authstack",
"owner": {
"name": "Scalekit Inc.",
"email": "support@scalekit.com"
},
"metadata": {
"description": "Auth infrastructure for developers — connect AI agents to 100+ OAuth services, or add enterprise SSO, SCIM, and MCP auth to your B2B app. Skip the protocol layer.",
"version": "1.0.0",
"pluginRoot": "plugins"
},
"plugins": [
{
"name": "agentkit",
"source": "agentkit",
"description": "Connect your AI agent to 3,000+ services without writing OAuth plumbing — users authorize once, agents act on their behalf.",
"category": "AI Agent Auth",
"homepage": "https://docs.scalekit.com/agentkit/overview/"
},
{
"name": "saaskit",
"source": "saaskit",
"description": "Enterprise auth for B2B apps without writing protocols — login, sessions, SSO, SCIM, MCP OAuth, and RBAC in one stack.",
"category": "B2B App Auth",
"homepage": "https://docs.scalekit.com"
}
]
}
25 changes: 25 additions & 0 deletions .github/plugin/marketplace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"name": "scalekit-authstack",
"owner": {
"name": "Scalekit Inc.",
"email": "support@scalekit.com"
},
"metadata": {
"description": "Auth infrastructure for developers — connect AI agents to 100+ OAuth services, or add enterprise SSO, SCIM, and MCP auth to your B2B app. Skip the protocol layer.",
"version": "1.0.0"
},
"plugins": [
{
"name": "agentkit",
"description": "Connect your AI agent to 3,000+ services without writing OAuth plumbing — users authorize once, agents act on their behalf.",
"version": "2.0.0",
"source": "./plugins/agentkit"
},
{
"name": "saaskit",
"description": "Enterprise auth for B2B apps without writing protocols — login, sessions, SSO, SCIM, MCP OAuth, and RBAC in one stack.",
"version": "2.0.0",
"source": "./plugins/saaskit"
}
]
}
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.claude
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
# authstack

Claude Code plugin scaffolded by doraval.
13 changes: 13 additions & 0 deletions plugins/agentkit/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"name": "agentkit",
"description": "Give your AI agent authenticated access to Gmail, Slack, Salesforce, and 100+ services. OAuth flows, token vault, and tool discovery handled — write agent logic, not auth plumbing.",
"version": "2.0.0",
"author": {
"name": "Scalekit Inc.",
"email": "hi@scalekit.com"
},
"homepage": "https://docs.scalekit.com/agentkit/overview/",
"repository": "https://github.com/scalekit-inc/authstack",
"license": "MIT",
"keywords": ["scalekit", "agentkit", "agent-auth", "connectors", "tools", "connected-accounts"]
}
24 changes: 24 additions & 0 deletions plugins/agentkit/.codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"name": "agentkit",
"version": "2.0.0",
"description": "Connect your AI agent to 3,000+ services without writing OAuth plumbing — users authorize once, agents act on their behalf.",
"author": {
"name": "Scalekit Inc.",
"email": "hi@scalekit.com",
"url": "https://scalekit.com"
},
"homepage": "https://docs.scalekit.com/agentkit/overview/",
"repository": "https://github.com/scalekit-inc/authstack",
"license": "MIT",
"keywords": ["scalekit", "agentkit", "agent-auth", "oauth", "connectors", "tool-calling", "connected-accounts", "mcp"],
"skills": "./skills/",
"interface": {
"displayName": "AgentKit by Scalekit",
"shortDescription": "Connect your AI agent to 3,000+ services without writing OAuth plumbing — users authorize once, agents act on their behalf.",
"longDescription": "LLMs can't natively talk to Gmail, Slack, Salesforce, or any OAuth service. Every connector means custom OAuth flows, token storage, refresh logic, and scope enforcement — weeks of plumbing before your agent does anything useful.\n\nAgentKit handles the entire delegation layer: users authorize once, tokens never touch your code, agents call tools under user permissions with full audit trails. 3,000+ connectors. Works with any LLM or framework. Scoped to the user, not a service account.",
"developerName": "Scalekit Inc.",
"category": "AI Agent Auth",
"capabilities": ["Read", "Write"],
"websiteURL": "https://docs.scalekit.com/agentkit/overview/"
}
}
16 changes: 16 additions & 0 deletions plugins/agentkit/.cursor-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"name": "agentkit",
"displayName": "AgentKit by Scalekit",
"description": "Connect your AI agent to 3,000+ services without writing OAuth plumbing — users authorize once, agents act on their behalf.",
"version": "2.0.0",
"author": {
"name": "Scalekit Inc.",
"email": "hi@scalekit.com"
},
"homepage": "https://docs.scalekit.com/agentkit/overview/",
"repository": "https://github.com/scalekit-inc/authstack",
"license": "MIT",
"keywords": ["scalekit", "agentkit", "agent-auth", "oauth", "connectors", "tool-calling", "connected-accounts", "mcp"],
"skills": "./skills",
"mcpServers": "./mcp.json"
}
22 changes: 22 additions & 0 deletions plugins/agentkit/.github/plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"name": "agentkit",
"description": "Connect your AI agent to 3,000+ services without writing OAuth plumbing — users authorize once, agents act on their behalf.",
"version": "2.0.0",
"author": {
"name": "Scalekit Inc.",
"email": "hi@scalekit.com",
"url": "https://scalekit.com"
},
"homepage": "https://docs.scalekit.com/agentkit/overview/",
"repository": "https://github.com/scalekit-inc/authstack",
"license": "MIT",
"keywords": ["scalekit", "agentkit", "agent-auth", "oauth", "connectors", "tool-calling", "connected-accounts", "mcp"],
"skills": [
"./skills/setup",
"./skills/integrating-agentkit",
"./skills/discovering-connector-tools",
"./skills/exposing-agentkit-via-mcp",
"./skills/production-readiness-agentkit"
],
"mcpServers": ".mcp.json"
}
8 changes: 8 additions & 0 deletions plugins/agentkit/.mcp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"mcpServers": {
"scalekit": {
"type": "http",
"url": "https://mcp.scalekit.com"
}
}
}
8 changes: 8 additions & 0 deletions plugins/agentkit/mcp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"mcpServers": {
"scalekit": {
"type": "http",
"url": "https://mcp.scalekit.com"
}
}
}
102 changes: 102 additions & 0 deletions plugins/agentkit/skills/discovering-connector-tools/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
---
name: discovering-connector-tools
description: Discovers live tools for a Scalekit AgentKit connector and explains their input and output schemas. Use when a user asks what tools are available for Gmail, Slack, Salesforce, or another connector, wants to inspect `input_schema` or `output_schema`, or needs help narrowing the tool set for an agent.
---

# Discovering Connector Tools

Use live AgentKit metadata as the source of truth for tool names, required inputs, and output schemas.

Do not rely on static connector notes as a complete catalog. Those may lag the live platform.

## Discovery workflow

1. Identify the target connector or exact tool name.
2. Use the Scalekit SDK to fetch live tool metadata (see code below).
3. Summarize:
- tool name
- connector
- what the tool does
- required fields from `input_schema.required`
- optional fields from `input_schema.properties`
- important fields from `output_schema.properties`
4. Recommend the smallest useful tool set for the workflow.

## Live tool discovery (Python)

```python
from scalekit import ScalekitClient
import os
from dotenv import load_dotenv
load_dotenv()

sk_client = ScalekitClient(
client_id=os.getenv("SCALEKIT_CLIENT_ID"),
client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),
)

# List all tools for a provider
tools = sk_client.actions.get_tools(providers=["GMAIL"], page_size=100)
for tool in tools.tools:
print(f"Tool: {tool.name}")
print(f" Description: {tool.description}")
print(f" Input schema: {tool.input_schema}")
print(f" Output schema: {tool.output_schema}")

# Get a specific tool by name
tool = sk_client.actions.get_tools(tool_name="gmail_fetch_mails")
```

## Live tool discovery (Node.js)

```typescript
import { ScalekitClient } from '@scalekit-sdk/node';
import 'dotenv/config';

const client = new ScalekitClient(
process.env.SCALEKIT_ENVIRONMENT_URL!,
process.env.SCALEKIT_CLIENT_ID!,
process.env.SCALEKIT_CLIENT_SECRET!
);

// List all tools for a provider
const tools = await client.actions.getTools({ providers: ['GMAIL'], pageSize: 100 });
for (const tool of tools.tools) {
console.log(`Tool: ${tool.name}`);
console.log(` Description: ${tool.description}`);
}

// Get a specific tool by name
const tool = await client.actions.getTools({ toolName: 'gmail_fetch_mails' });
```

## Terminology

- `connector`: Gmail, Slack, Salesforce, Notion, or a custom connector
- `connection`: the exact dashboard configuration name used for authorization
- `connected account`: the per-user authorized record
- `tool`: the executable action exposed by a connector

Use `connector` in explanations. Only use `provider` when the SDK or API filter field literally expects that name.

## Key rules

- `connection_name` is the exact dashboard value — may not equal the connector slug
- Always use live tool metadata, not static docs
- Restrict the tool set before handing to an LLM — fewer relevant tools improve selection accuracy
- **Before executing any tool**: verify the connected account status is `ACTIVE`. Tool execution fails silently or errors if the account is not yet authorized.

**If `get_tools` returns empty:** verify the connector is configured in the dashboard and the connection name matches exactly.

## Deep reference

- AgentKit overview: [docs.scalekit.com/agentkit/overview](https://docs.scalekit.com/agentkit/overview/)
- Tool discovery: [docs.scalekit.com/agentkit/tool-discovery](https://docs.scalekit.com/agentkit/tool-discovery/)
- Connectors catalog: [docs.scalekit.com/agentkit/connectors](https://docs.scalekit.com/agentkit/connectors/)

## When to switch skills

- Use `integrating-agentkit` for the full integration workflow (create account, authorize, execute).
- Use the Scalekit MCP server (`https://mcp.scalekit.com`) to validate a tool call interactively.
- Use `exposing-agentkit-via-mcp` to expose discovered tools over MCP.
Loading
Loading