# API Key Management URL: /api-keys Secure API key management for agent authentication *** title: API Key Management description: Secure API key management for agent authentication --------------------------------------------------------------- # API Key Management The Inkeep Agent Framework provides a comprehensive API key management system for authenticating access to agents. API keys are securely hashed and stored, with support for expiration and revocation. ## Overview API keys provide a secure way to authenticate programmatic access to your agents. Each API key is: * **Securely hashed** using scrypt algorithm before storage * **Scoped to a specific tenant and agent** * **Revocable** at any time * **Expirable** with optional expiration dates ## Usage ### Creating an API Key ```typescript import { createApiKey } from '@inkeep/agents-core'; const result = await createApiKey({ tenantId: 'your-tenant-id', agentId: 'your-agent-id', expiresAt: '2025-12-31T23:59:59Z', // Optional expiration }); // IMPORTANT: Show this key to the user only once! console.log('Your API Key:', result.key); // Example: sk_live_abc123def456... // The API key record (without the actual key) console.log('Key Details:', result.apiKey); ``` # Core concepts URL: /concepts Learn about the key building blocks of Inkeep - Agents, Sub Agents, tools, data components, and more. *** title: Core concepts sidebarTitle: Concepts description: Learn about the key building blocks of Inkeep - Agents, Sub Agents, tools, data components, and more. icon: "LuBoxes" --------------- ## Agents In Inkeep, an **Agent** is the top-level entity you can interface with via conversational experiences (chat) or trigger programmatically (via API). Under the hood, an Agent is made up of one or more **Sub Agents** that work together to respond to a user or complete a task. ## Tools When you send a message to an Agent, it is first received by a **Default Sub Agent** that decides what to do next. In a simple Agent, there may be only one Sub Agent with a few tools available to it. **Tools** are actions that a Sub Agent can take, like looking up information or performing a task on apps and APIs. In Inkeep, tools can be added to Sub Agents as: * **MCP Servers**: Connect to external services and APIs via the Model Context Protocol. You can: * **Connect to Native MCP servers** provided directly by SaaS vendors (no building required) * **Access Composio's platform** for 10,000+ out-of-box MCP servers for popular services (no building required) * **Use Gram** to convert OpenAPI specs into MCP servers * **Build and deploy Custom servers** for your own APIs and business logic Register any of these with their associated **Credentials** for your Agents to use. * **Function Tools**: Custom JavaScript functions that Agents can execute directly without the need for standing up an MCP server. Typically, you want a Sub Agent to handle narrow, well-defined tasks. As a general rule of thumb, keep Sub Agents to be using 5-7 related tools at a time. ## Sub Agent relationships When your scenario gets complex, it can be useful to break up your logic into multiple Sub Agents that are specialized in specific parts of your task or workflow. This is often referred to as a "Multi-agent" system. A Sub Agent can be configured to: * **Transfer** control of the chat to another Sub Agent. When a transfer happens, the receiving Sub Agent becomes the primary driver of the thread and can respond to the user directly. * **Delegate** a subtask for another ('child') Sub Agent to do and wait for its response before proceeding with the next step. A child Sub Agent *cannot* respond directly to a user. ## Sub Agent 'turn' When it's a Sub Agent's turn, it can choose to: 1. Send an update message to the user 2. Call a tool to collect information or take an action 3. Transfer or delegate to another Sub Agent An Agent's execution stays in this loop until one of the Sub Agents chooses to respond to the user with a final result. Sub Agents in Inkeep are designed to respond to the user as a single, cohesive unit by default. ## Chatting with an Agent <> You can talk to an Inkeep Agent in a few ways, including: * **UI Chat Components**: Drop-in React components for chat UIs with built-in streaming and rich UI customization. See [`agents-ui`](/talk-to-your-agents/react/chat-button). * **As an MCP server**: Use your Inkeep Agent as if was an MCP Server. Allows you to connect it to any MCP client, like Claude, ChatGPT, Claude and other Agents. See [MCP server](/talk-to-your-agents/mcp-server). * **Via API (Vercel format)**: An API that streams responses over server-side events (SSE). Use from any language/runtime, including the Vercel's `useChat` and AI Element primitives for custom UIs. See [API (Vercel format)](/talk-to-your-agents/api). * **Via API (A2A format)**: An API that follows the Agent-to-Agent ('A2A') JSON-RPC protocol. Great for when combining Inkeep with different Agent frameworks that support the A2A format. See [A2A protocol](/talk-to-your-agents/a2a). Drop-in chat components for React apps with streaming and rich UI. POST /api/chat, SSE (text/event-stream), x-vercel-ai-data-stream: v2. JSON-RPC messages at /agents/a2a with blocking and streaming modes. HTTP JSON-RPC endpoint at /v1/mcp with session header management. ## Authentication & API Keys You can authenticate with your Agent using: * **API Keys**: Securely hashed keys that are scoped to specific Agents * **Development Mode**: No API key required, perfect for local development and testing * **Bypass Secrets**: For internal services and infrastructure that need direct access API keys are the recommended approach for production use, providing secure, scoped access to your Agents. ## Agent replies with Structured Data Sometimes, you want your Agent to reply not in plain text but with specific types of well-defined information, often called 'Structured Outputs' (JSON). With Inkeep, there are a few ways to do this: * **Data Components**: Structured Outputs that Sub Agents can output in their messages so they can render rich, interactive UIs (lists, buttons, forms, etc.) or convey structured information. * **Artifacts**: A Sub Agent can save information from a **tool call result** as an artifact in order to make it available to others. For example, a Sub Agent that did a web search can save the contents of a webpage it looked at as an artifact. Once saved, a Sub Agent can cite or reference artifacts in its response, and other Sub Agents or users can fetch the full artifacts if they'd like. * **Status Updates**: Real-time progress updates that can be plain text or Structured Outputs that can be used to keep users informed about what the Sub Agent is doing during longer operations. ## Passing context to Sub Agents Beyond using Tools to fetch information, Sub Agents also receive information via: * **Headers**: In the API request to an Agent, the calling application can include headers for a Sub Agent. Learn more [here](/typescript-sdk/headers). * **Context Fetchers**: Can be configured for an Agent so that at the beginning of a conversation, an API call is automatically made to an external service to get information that is then made available to any Sub Agent. For example, your Headers may include a `user-id`, which can be used to auto-fetch information from a CRM about the user for any Sub Agent to use. Headers and fetched context can then be referenced explicitly as `{{variables}}` in Sub Agent prompts. Learn more [here](/typescript-sdk/headers). ## Ways to build Quick reference to the key docs for building with the Visual Builder or the TypeScript SDK. Configure and manage MCP servers for your Sub Agents. Create and manage Agents visually. Build rich UI elements Sub Agents can render in conversations. Define structured outputs generated by tools or Sub Agents. Show progress updates during longer operations. Manage secrets and auth for MCP servers. Organize agents, MCP Servers, and other entities in Projects. Configure Sub Agents with prompts, tools, and data components. Add tools as MCP servers. Create custom JavaScript functions that run in secure sandboxes. Define how Sub Agents transfer and delegate tasks. Build custom UI elements Sub Agents can render. Create structured outputs from tools or Sub Agents. Provide real-time progress updates. Dynamically fetch and cache external context. Store and retrieve credentials for MCP tools. The Visual Builder and TypeScript SDK work seamlessly together—define your Sub Agents in code, push them to the Visual Builder, and iterate visually. ## Projects You can organize your related MCP Servers, Credentials, Agents, and more into **Projects**. A Project is generally used to represent a set of related scenarios. For example, you may create one Project for your support team that has all the MCP servers and Agents related to customer support. ## CLI: Push and pull The Inkeep CLI bridges your TypeScript SDK project and the Visual Builder. Run the following from your project (the folder that contains your `inkeep.config.ts`) which has an `index.ts` file that exports a project. * **Push (code → Builder)**: Sync locally defined agents, Sub Agents, tools, and settings from your SDK project into the Visual Builder. ```bash inkeep push ``` * **Pull (Builder → code)**: Fetch your project from the Visual Builder back into your SDK project. By default, the CLI will LLM-assist in updating your local TypeScript files to reflect Builder changes. ```bash inkeep pull ``` Push and pull operate at the project level (not individual agents). Define agents in your project and push/pull the whole project. See the [CLI Reference](/typescript-sdk/cli-reference) for full command details. ## Deployment Once you've built your Agents, you can deploy them using: Self-host your Agents using Docker for full control and flexibility. Deploy your Agents to Vercel for easy serverless hosting. ## Architecture The Inkeep Agent framework is composed of several key services and libraries that work together: * **agents-manage-api**: An API that handles configuration of Agents, Sub Agents, MCP Servers, Credentials, and Projects with a REST API. * **agents-manage-ui**: Visual Builder web interface for creating and managing Agents. Writes to the `agents-manage-api`. * **agents-sdk**: TypeScript SDK (`@inkeep/agents-sdk`) for declaratively defining Agents and custom tools in code. Writes to `agents-manage-api`. * **agents-cli**: Includes various handy utilities, including `inkeep push` and `inkeep pull` which sync your TypeScript SDK code with the Visual Builder. * **agents-run-api**: The Runtime API that exposes Agents as APIs and executes Agent conversations. Keeps conversation state and emits OTEL traces. * **agents-ui**: A UI component library of chat interfaces for embedding rich, dynamic conversational AI experiences in web apps. # The No-Code + Code Agent Builder URL: /overview Inkeep is a platform for building Agent Chat Assistants and AI Workflows. *** title: The No-Code + Code Agent Builder sidebarTitle: Overview icon: "LuBookOpen" description: Inkeep is a platform for building Agent Chat Assistants and AI Workflows. -------------------------------------------------------------------------------------- With Inkeep, you can build AI Agents with a **No-Code Visual Builder** and **Developer SDK**. Agents can be edited in either with **full 2-way sync**, so technical and non-technical teams can create and manage their Agents in one platform. ## Two ways to build ### No-Code Visual Builder A drag-and-drop canvas so any team can create and own the Agents they care about. No-Code Agent Builder demo ### TypeScript Agents SDK A code-first framework so engineering teams can build with the tools they expect. ```typescript import { agent, subAgent } from "@inkeep/agents-sdk"; import { consoleMcp } from "./mcp"; const helloAgent = subAgent({ id: "hello-agent", name: "Hello Agent", description: "Says hello", canUse: () => [consoleMcp], prompt: `Reply to the user and console log "hello world" with fun variations like h3llo world`, }); export const basicAgent = agent({ id: "basic-agent", name: "Basic Agent", description: "A basic agent", defaultSubAgent: helloAgent, subAgents: () => [helloAgent], }); ``` The **Visual Builder and TypeScript SDK are fully interoperable**: your technical and non-technical teams can edit and manage Agents in either format and switch or collaborate with others at any time. ## Use cases Inkeep Agents can operate as **Agentic AI Chat Assistants**, for example: * a customer experience agent for help centers, technical docs, or in-app experiences * an internal copilot to assist your support, sales, marketing, ops, and other teams Agents can also be used for **Agentic Workflow Automation** like: * Creating and updating knowledge bases, documentation, and blogs * Updating CRMs, triaging helpdesk tickets, and tackling repetitive tasks ## Platform Overview **Inkeep Open Source** includes: * A Visual Builder & TypeScript SDK with 2-way sync * Multi-agent architecture to support teams of agents * MCP Tools with credentials management * A UI component library for dynamic chat experiences * Triggering Agents via MCP, A2A, & Vercel SDK APIs * Observability via a Traces UI & OpenTelemetry * Easy deployment to Vercel and using Docker Interested in a managed platform? Sign up for the [Inkeep Cloud waitlist](https://inkeep.com/cloud-waitlist) or learn about [Inkeep Enterprise](https://inkeep.com/enterprise). You can view a full feature comparison [here](/pricing#feature-comparison). ## Our Approach Inkeep is designed to be extensible and open: you can use the LLM provider of your choice, use Agents via open protocols, and with a [fair-code](/community/license) license and great devex, easily deploy and self-host Agents in your own infra. [Join our community](https://docs.inkeep.com/community/inkeep-community) to get support, stay up to date, and share feedback. ## Next Steps Get started with the Visual Builder and TypeScript SDK in under 5 minutes. Learn about the key concepts of building Agents with Inkeep. # Pricing URL: /pricing Learn about Inkeep's pricing plans and features *** title: Pricing description: Learn about Inkeep's pricing plans and features icon: "LuCreditCard" -------------------- Inkeep offers three ways to get started: **Open Source** (free forever), **Cloud** (managed deployment), and **Enterprise** (managed platform with dedicated support). Everything you need to create agentic assistants. * Visual Builder & SDK * MCP Servers & Tools * Observability & UI Lib * Use with Claude/Cursor * Deploy to Vercel or Docker Follow the \<1min Quick Start → Managed deployment with usage-based billing. Everything in Open Source plus: * Fully managed cloud hosting * No infra management * Transparent, usage-based pricing Sign up for the Cloud waitlist → Managed platform with dedicated support. Everything in Open Source plus: * Unified AI Search (Managed RAG) * Use from Slack & Support Platforms * PII removal and data controls * Cloud Hosting & User Management * Trainings, enablement, and support * Dedicated forward deployed engineer Schedule a Demo → ## Feature Comparison ### Building Agents | Feature | Open Source | Cloud | Enterprise | | -------------------------------- | :---------: | :---: | :--------: | | No-Code Visual Builder | ✓ | ✓ | ✓ | | Agent Developer SDK (TypeScript) | ✓ | ✓ | ✓ | | 2-way Sync: Edit in Code or UI | ✓ | ✓ | ✓ | ### Core Framework | Feature | Open Source | Cloud | Enterprise | | ------------------------------------------------------ | :---------: | :---: | :--------: | | Take actions on any MCP Server, App, or API | ✓ | ✓ | ✓ | | Multi-agent Architecture (Teams of Agents) | ✓ | ✓ | ✓ | | Agent Credential and Permissions Management | ✓ | ✓ | ✓ | | Agent Traces available in UI and OTEL | ✓ | ✓ | ✓ | | Talk to Agents via A2A, MCP, and Vercel AI SDK formats | ✓ | ✓ | ✓ | ### Talk to Your Agents (Out of the Box) | Feature | Open Source | Cloud | Enterprise | | -------------------------------------------------- | :---------: | :---: | :--------: | | With Claude, ChatGPT, and Cursor | ✓ | ✓ | ✓ | | With Slack, Discord, and Teams integrations | — | — | ✓ | | With Zendesk, Salesforce, and support integrations | — | — | ✓ | ### Building Agent UIs | Feature | Open Source | Cloud | Enterprise | | --------------------------------------------------- | :---------: | :---: | :--------: | | Agent Messages with Custom UIs (forms, cards, etc.) | ✓ | ✓ | ✓ | | Custom UIs using Vercel AI SDK format | ✓ | ✓ | ✓ | | Out-of-box Chat Components (React) | ✓ | ✓ | ✓ | | Out-of-box Chat Components (JavaScript) | — | — | ✓ | | Answers with Inline Citations | ✓ | ✓ | ✓ | ### Unified AI Search (Managed RAG) | Feature | Open Source | Cloud | Enterprise | | ---------------------------------------------------- | :---------: | :---: | :--------: | | Real-time fetch from databases, APIs, and the web | ✓ | ✓ | ✓ | | Public sources ingestion (docs, help center, etc.) | — | — | ✓ | | Private sources ingestion (Notion, Confluence, etc.) | — | — | ✓ | | Optimized Retrieval and Search (Managed RAG) | — | — | ✓ | | Semantic Search | — | — | ✓ | ### Insights & Analytics | Feature | Open Source | Cloud | Enterprise | | ---------------------------------- | :---------: | :---: | :--------: | | AI Reports on Knowledge Gaps | — | — | ✓ | | AI Reports on Product Feature Gaps | — | — | ✓ | ### Authentication and Authorization | Feature | Open Source | Cloud | Enterprise | | ------------------------- | :---------: | :---: | :--------: | | Single Sign-on | — | — | ✓ | | Role-Based Access Control | — | — | ✓ | | Audit Logs | — | — | ✓ | ### Security | Feature | Open Source | Cloud | Enterprise | | ------------------------------------- | :---------: | :---: | :--------: | | PII Removal | — | — | ✓ | | Uptime and Support SLAs | — | — | ✓ | | SOC II Type II and Pentest Reports | — | — | ✓ | | GDPR, HIPAA, DPA, and Infosec Reviews | — | — | ✓ | ### Deployment | Feature | Open Source | Cloud | Enterprise | | ------------- | :---------: | :-------: | :---------------------------: | | Hosting Types | Self-hosted | Cloud | Cloud, Hybrid, or Self-hosted | | Support Type | Community | Community | Dedicated Engineering Team | ### Forward Deployed Engineer Program | Feature | Open Source | Cloud | Enterprise | | ------------------------------------------ | :---------: | :---: | :--------: | | Dedicated Architect and AI Agents Engineer | — | — | ✓ | | 1:1 Office Hours and Trainings | — | — | ✓ | | Structured Pilot | — | — | ✓ | # Troubleshooting Guide URL: /troubleshooting Learn how to diagnose and resolve issues when something breaks in your Inkeep agent system. *** title: Troubleshooting Guide sidebarTitle: Troubleshooting description: Learn how to diagnose and resolve issues when something breaks in your Inkeep agent system. icon: LuWrench keywords: troubleshooting, debugging, errors, timeline, signoz, widget implementation ------------------------------------------------------------------------------------- ## Overview This guide provides a structured methodology for debugging problems across different components of your agent system. ## Step 1: Check the Timeline The timeline is your first stop for understanding what happened during a conversation or agent execution. Navigate to the **Traces** sections to view in depth details per conversation. Within each conversation, you'll find an **error card** that is clickable whenever something goes wrong during agent execution. ### What to Look For * **Execution flow**: Review the sequence of agent actions and tool calls * **Timing**: Check for delays or bottlenecks in the execution * **Agent transitions**: Verify that transfers and delegations happened as expected * **Tool usage**: Confirm that tools were called correctly and returned expected results * **Error cards**: Look for red error indicators in the timeline and click to view detailed error information ### Error Cards in the Timeline Clicking on this error card reveals: * **Error type**: The specific category of error (e.g., "Agent Generation Error") * **Exception stacktrace**: The complete stack trace showing exactly where the error occurred in the code This detailed error information helps you pinpoint exactly what went wrong and where in your agent's execution chain. <> ### Copy Trace for Debugging The `Copy Trace` button in the timeline view allows you to export the entire conversation trace as JSON. This is particularly useful for offline analysis and debugging complex flows. Copy Trace button in the timeline view for exporting conversation traces #### What's Included in the Trace Export When you click `Copy Trace`, the system exports a JSON object containing: ```json { "metadata": { "conversationId": "unique-conversation-id", "traceId": "distributed-trace-id", "agentId": "agent-identifier", "agentName": "Agent Name", "exportedAt": "2025-10-14T12:00:00.000Z" }, "timing": { "startTime": "2025-10-14T11:59:00.000Z", "endTime": "2025-10-14T12:00:00.000Z", "durationMs": 60000 }, "timeline": [ // Array of all activities with complete details: // - Agent messages and responses // - Tool calls and results // - Agent transfers // - Artifact information // - Execution context ] } ``` #### How to Use Copy Trace 1. Navigate to the **Traces** section in the management UI 2. Open the conversation you want to debug 3. Click the **Copy Trace** button at the top of the timeline 4. The complete trace JSON is copied to your clipboard 5. Paste it into your preferred tool for analysis This exported trace contains all the activities shown in the timeline, making it easy to share complete execution context with team members or support. ## Step 2: Check SigNoz SigNoz provides distributed tracing and observability for your agent system, offering deeper insights when the built-in timeline isn't sufficient. ### Accessing SigNoz from the Timeline You can easily access SigNoz directly from the timeline view. In the **Traces** section, click on any activity in the conversation timeline to view its details. Within the activity details, you'll find a **"View in SigNoz"** button that takes you directly to the corresponding span in SigNoz for deeper analysis. ### What SigNoz Shows * **Distributed traces**: End-to-end request flows across services * **Performance metrics**: Response times, throughput, and error rates ### Key Metrics to Monitor * **Agent response times**: How long each agent takes to process requests * **Tool execution times**: Performance of MCP servers and external APIs * **Error rates**: Frequency and types of failures ## Agent Stopped Unexpectedly ### StopWhen Limits Reached If your agent stops mid-conversation, it may have hit a configured stopWhen limit: * **Transfer limit reached**: Check `transferCountIs` on your Agent or Project - agent stops after this many transfers between Sub Agents * **Step limit reached**: Check `stepCountIs` on your Sub Agent or Project - execution stops after this many tool calls + LLM responses **How to diagnose:** * Check the timeline for the last activity before stopping * Look for messages indicating limits were reached * Review your stopWhen configuration in Agent/Project settings **How to fix:** * Increase the limits if legitimate use case requires more steps/transfers * Optimize your agent flow to use fewer transfers * Investigate if agent is stuck in a loop (limits working as intended) See [Configuring StopWhen](/typescript-sdk/agent-settings#configuring-stopwhen) for more details. ## Check service logs (local development) When running `pnpm dev` from your [quickstart workspace](/quick-start/start-development), you will see an interactive terminal interface. This interface allows you to inspect the logs of each [running service](/quick-start/start-development#service-ports). You can navigate between services using the up and down arrow keys. ![Service logs in local development](/images/agents-quickstart-pnpm-dev.png) * The `service-info` tab displays the health of each running service. * The `manage-api` tab contains logs for all database operations. This is useful primarily for debugging issues with [`inkeep push`](/typescript-sdk/push-pull-workflows). * The `run-api` tab contains logs for all agent execution and tool calls. This is useful for debugging issues with your agent's behavior. * The `mcp` tab contains logs for your [custom MCP servers](/tutorials/how-to-create-mcp-servers/inkeep). * The `dashboard` tab displays logs for the [Visual Builder](/visual-builder/overview) dashboard. To terminate the running services, click press `q` or `esc` in the terminal. ## Common Configuration Issues ### General Configuration Issues * **Missing environment variables**: Ensure all required env vars are set * **Incorrect API endpoints**: Verify you're using the right URLs * **Network connectivity**: Check firewall and proxy settings * **Version mismatches**: Ensure all packages are compatible ### MCP Server Connection Issues * **MCP not able to connect**: * Check that the MCP server is running and accessible * **401 Unauthorized errors**: * Verify that credentials are properly configured and valid * **Connection timeouts**: * Ensure network connectivity and firewall settings allow connections ### AI Provider Configuration Problems * **AI Provider key not defined or invalid**: * Ensure you have one of these environment variables set: `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, or `GOOGLE_GENERATIVE_AI_API_KEY` * Verify the API key is valid and has sufficient credits * Check that the key hasn't expired or been revoked * **GPT-5 access issues**: * Individual users cannot access GPT-5 as it requires organization verification * Use GPT-4 or other available models instead * Contact OpenAI support if you need GPT-5 access for your organization ### Credit and Rate Limiting Issues * **Running out of credits**: * Monitor your OpenAI usage and billing * Set up usage alerts to prevent unexpected charges * **Rate limiting by AI providers**: * Especially common with high-frequency operations like summarizers * Monitor your API usage patterns and adjust accordingly ### Context Fetcher Issues * **Context fetcher timeouts**: * Check that external services are responding within expected timeframes # Inkeep Agents Manage API URL: /api-reference undefined *** title: Inkeep Agents Manage API full: true \_openapi: toc: * depth: 2 title: List Projects url: '#list-projects' * depth: 2 title: Create Project url: '#create-project' * depth: 2 title: Get Project url: '#get-project' * depth: 2 title: Update Project url: '#update-project' * depth: 2 title: Delete Project url: '#delete-project' * depth: 2 title: List SubAgents url: '#list-subagents' * depth: 2 title: Create SubAgent url: '#create-subagent' * depth: 2 title: Get SubAgent url: '#get-subagent' * depth: 2 title: Delete SubAgent url: '#delete-subagent' * depth: 2 title: Update SubAgent url: '#update-subagent' * depth: 2 title: List Agent Relations url: '#list-agent-relations' * depth: 2 title: Create Agent Relation url: '#create-agent-relation' * depth: 2 title: Get Agent Relation url: '#get-agent-relation' * depth: 2 title: Delete Agent Relation url: '#delete-agent-relation' * depth: 2 title: Update Agent Relation url: '#update-agent-relation' * depth: 2 title: List Agent Agent url: '#list-agent-agent' * depth: 2 title: Create Agent Agent url: '#create-agent-agent' * depth: 2 title: Get Agent Agent url: '#get-agent-agent' * depth: 2 title: Delete Agent Agent url: '#delete-agent-agent' * depth: 2 title: Update Agent Agent url: '#update-agent-agent' * depth: 2 title: Get Related Agent Infos url: '#get-related-agent-infos' * depth: 2 title: Get Full Agent Definition url: '#get-full-agent-definition' * depth: 2 title: List SubAgent Tool Relations url: '#list-subagent-tool-relations' * depth: 2 title: Create SubAgent Tool Relation url: '#create-subagent-tool-relation' * depth: 2 title: Get SubAgent Tool Relation url: '#get-subagent-tool-relation' * depth: 2 title: Delete SubAgent Tool Relation url: '#delete-subagent-tool-relation' * depth: 2 title: Update SubAgent Tool Relation url: '#update-subagent-tool-relation' * depth: 2 title: Get SubAgents for Tool url: '#get-subagents-for-tool' * depth: 2 title: Get Artifact Components for Agent url: '#get-artifact-components-for-agent' * depth: 2 title: Get Agents Using Artifact Component url: '#get-agents-using-artifact-component' * depth: 2 title: Associate Artifact Component with Agent url: '#associate-artifact-component-with-agent' * depth: 2 title: Remove Artifact Component from Agent url: '#remove-artifact-component-from-agent' * depth: 2 title: Check if Artifact Component is Associated with Agent url: '#check-if-artifact-component-is-associated-with-agent' * depth: 2 title: Get Data Components for Agent url: '#get-data-components-for-agent' * depth: 2 title: Get Agents Using Data Component url: '#get-agents-using-data-component' * depth: 2 title: Associate Data Component with Agent url: '#associate-data-component-with-agent' * depth: 2 title: Remove Data Component from Agent url: '#remove-data-component-from-agent' * depth: 2 title: Check if Data Component is Associated with Agent url: '#check-if-data-component-is-associated-with-agent' * depth: 2 title: List Artifact Components url: '#list-artifact-components' * depth: 2 title: Create Artifact Component url: '#create-artifact-component' * depth: 2 title: Get Artifact Component url: '#get-artifact-component' * depth: 2 title: Delete Artifact Component url: '#delete-artifact-component' * depth: 2 title: Update Artifact Component url: '#update-artifact-component' * depth: 2 title: List Context Configurations url: '#list-context-configurations' * depth: 2 title: Create Context Configuration url: '#create-context-configuration' * depth: 2 title: Get Context Configuration url: '#get-context-configuration' * depth: 2 title: Delete Context Configuration url: '#delete-context-configuration' * depth: 2 title: Update Context Configuration url: '#update-context-configuration' * depth: 2 title: List Credentials url: '#list-credentials' * depth: 2 title: Create Credential url: '#create-credential' * depth: 2 title: Get Credential url: '#get-credential' * depth: 2 title: Delete Credential url: '#delete-credential' * depth: 2 title: Update Credential url: '#update-credential' * depth: 2 title: List Data Components url: '#list-data-components' * depth: 2 title: Create Data Component url: '#create-data-component' * depth: 2 title: Get Data Component url: '#get-data-component' * depth: 2 title: Delete Data Component url: '#delete-data-component' * depth: 2 title: Update Data Component url: '#update-data-component' * depth: 2 title: List External Agents url: '#list-external-agents' * depth: 2 title: Create External Agent url: '#create-external-agent' * depth: 2 title: Get External Agent url: '#get-external-agent' * depth: 2 title: Delete External Agent url: '#delete-external-agent' * depth: 2 title: Update External Agent url: '#update-external-agent' * depth: 2 title: List Function Tools url: '#list-function-tools' * depth: 2 title: Create Function Tool url: '#create-function-tool' * depth: 2 title: Get Function Tool by ID url: '#get-function-tool-by-id' * depth: 2 title: Delete Function Tool url: '#delete-function-tool' * depth: 2 title: Update Function Tool url: '#update-function-tool' * depth: 2 title: List Functions url: '#list-functions' * depth: 2 title: Create Function url: '#create-function' * depth: 2 title: Get Function by ID url: '#get-function-by-id' * depth: 2 title: Delete Function url: '#delete-function' * depth: 2 title: Update Function url: '#update-function' * depth: 2 title: List Tools url: '#list-tools' * depth: 2 title: Create Tool url: '#create-tool' * depth: 2 title: Get Tool url: '#get-tool' * depth: 2 title: Delete Tool url: '#delete-tool' * depth: 2 title: Update Tool url: '#update-tool' * depth: 2 title: List API Keys url: '#list-api-keys' * depth: 2 title: Create API Key url: '#create-api-key' * depth: 2 title: Get API Key url: '#get-api-key' * depth: 2 title: Delete API Key url: '#delete-api-key' * depth: 2 title: Update API Key url: '#update-api-key' * depth: 2 title: Create Full Agent url: '#create-full-agent' * depth: 2 title: Get Full Agent url: '#get-full-agent' * depth: 2 title: Delete Full Agent url: '#delete-full-agent' * depth: 2 title: Update Full Agent url: '#update-full-agent' * depth: 2 title: Create Full Project url: '#create-full-project' * depth: 2 title: Get Full Project url: '#get-full-project' * depth: 2 title: Delete Full Project url: '#delete-full-project' * depth: 2 title: Update Full Project url: '#update-full-project' * depth: 2 title: Initiate OAuth login for MCP tool url: '#initiate-oauth-login-for-mcp-tool' * depth: 2 title: OAuth authorization callback url: '#oauth-authorization-callback' structuredData: headings: * content: List Projects id: list-projects * content: Create Project id: create-project * content: Get Project id: get-project * content: Update Project id: update-project * content: Delete Project id: delete-project * content: List SubAgents id: list-subagents * content: Create SubAgent id: create-subagent * content: Get SubAgent id: get-subagent * content: Delete SubAgent id: delete-subagent * content: Update SubAgent id: update-subagent * content: List Agent Relations id: list-agent-relations * content: Create Agent Relation id: create-agent-relation * content: Get Agent Relation id: get-agent-relation * content: Delete Agent Relation id: delete-agent-relation * content: Update Agent Relation id: update-agent-relation * content: List Agent Agent id: list-agent-agent * content: Create Agent Agent id: create-agent-agent * content: Get Agent Agent id: get-agent-agent * content: Delete Agent Agent id: delete-agent-agent * content: Update Agent Agent id: update-agent-agent * content: Get Related Agent Infos id: get-related-agent-infos * content: Get Full Agent Definition id: get-full-agent-definition * content: List SubAgent Tool Relations id: list-subagent-tool-relations * content: Create SubAgent Tool Relation id: create-subagent-tool-relation * content: Get SubAgent Tool Relation id: get-subagent-tool-relation * content: Delete SubAgent Tool Relation id: delete-subagent-tool-relation * content: Update SubAgent Tool Relation id: update-subagent-tool-relation * content: Get SubAgents for Tool id: get-subagents-for-tool * content: Get Artifact Components for Agent id: get-artifact-components-for-agent * content: Get Agents Using Artifact Component id: get-agents-using-artifact-component * content: Associate Artifact Component with Agent id: associate-artifact-component-with-agent * content: Remove Artifact Component from Agent id: remove-artifact-component-from-agent * content: Check if Artifact Component is Associated with Agent id: check-if-artifact-component-is-associated-with-agent * content: Get Data Components for Agent id: get-data-components-for-agent * content: Get Agents Using Data Component id: get-agents-using-data-component * content: Associate Data Component with Agent id: associate-data-component-with-agent * content: Remove Data Component from Agent id: remove-data-component-from-agent * content: Check if Data Component is Associated with Agent id: check-if-data-component-is-associated-with-agent * content: List Artifact Components id: list-artifact-components * content: Create Artifact Component id: create-artifact-component * content: Get Artifact Component id: get-artifact-component * content: Delete Artifact Component id: delete-artifact-component * content: Update Artifact Component id: update-artifact-component * content: List Context Configurations id: list-context-configurations * content: Create Context Configuration id: create-context-configuration * content: Get Context Configuration id: get-context-configuration * content: Delete Context Configuration id: delete-context-configuration * content: Update Context Configuration id: update-context-configuration * content: List Credentials id: list-credentials * content: Create Credential id: create-credential * content: Get Credential id: get-credential * content: Delete Credential id: delete-credential * content: Update Credential id: update-credential * content: List Data Components id: list-data-components * content: Create Data Component id: create-data-component * content: Get Data Component id: get-data-component * content: Delete Data Component id: delete-data-component * content: Update Data Component id: update-data-component * content: List External Agents id: list-external-agents * content: Create External Agent id: create-external-agent * content: Get External Agent id: get-external-agent * content: Delete External Agent id: delete-external-agent * content: Update External Agent id: update-external-agent * content: List Function Tools id: list-function-tools * content: Create Function Tool id: create-function-tool * content: Get Function Tool by ID id: get-function-tool-by-id * content: Delete Function Tool id: delete-function-tool * content: Update Function Tool id: update-function-tool * content: List Functions id: list-functions * content: Create Function id: create-function * content: Get Function by ID id: get-function-by-id * content: Delete Function id: delete-function * content: Update Function id: update-function * content: List Tools id: list-tools * content: Create Tool id: create-tool * content: Get Tool id: get-tool * content: Delete Tool id: delete-tool * content: Update Tool id: update-tool * content: List API Keys id: list-api-keys * content: Create API Key id: create-api-key * content: Get API Key id: get-api-key * content: Delete API Key id: delete-api-key * content: Update API Key id: update-api-key * content: Create Full Agent id: create-full-agent * content: Get Full Agent id: get-full-agent * content: Delete Full Agent id: delete-full-agent * content: Update Full Agent id: update-full-agent * content: Create Full Project id: create-full-project * content: Get Full Project id: get-full-project * content: Delete Full Project id: delete-full-project * content: Update Full Project id: update-full-project * content: Initiate OAuth login for MCP tool id: initiate-oauth-login-for-mcp-tool * content: OAuth authorization callback id: oauth-authorization-callback contents: * content: Check if the management service is healthy * content: List all projects within a tenant with pagination heading: list-projects * content: Create a new project heading: create-project * content: Get a single project by ID heading: get-project * content: Update an existing project heading: update-project * content: Delete a project. Will fail if the project has existing resources. heading: delete-project * content: List all API keys for a tenant with optional pagination heading: list-api-keys * content: >- Create a new API key for an agent. Returns the full key (shown only once). heading: create-api-key * content: Get a specific API key by ID (does not return the actual key) heading: get-api-key * content: Delete an API key permanently heading: delete-api-key * content: Update an API key (currently only expiration date can be changed) heading: update-api-key * content: >- Create a complete agent with all agents, tools, and relationships from JSON definition heading: create-full-agent * content: >- Retrieve a complete agent definition with all agents, tools, and relationships heading: get-full-agent * content: >- Delete a complete agent and cascade to all related entities (relationships, not other agents/tools) heading: delete-full-agent * content: >- Update or create a complete agent with all agents, tools, and relationships from JSON definition heading: update-full-agent * content: >- Create a complete project with all Agents, Sub Agents, tools, and relationships from JSON definition heading: create-full-project * content: >- Retrieve a complete project definition with all Agents, Sub Agents, tools, and relationships heading: get-full-project * content: >- Delete a complete project and cascade to all related entities (Agents, Sub Agents, tools, relationships) heading: delete-full-project * content: >- Update or create a complete project with all Agents, Sub Agents, tools, and relationships from JSON definition heading: update-full-project * content: >- Detects OAuth requirements and redirects to authorization server (public endpoint) heading: initiate-oauth-login-for-mcp-tool * content: >- Handles OAuth authorization codes and completes the authentication flow heading: oauth-authorization-callback icon: LuDatabaseZap *** {/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} REST API for the management of the Inkeep Agent Framework. # Join & Follow URL: /community/inkeep-community undefined *** title: Join & Follow icon: "LuUsers" --------------- To get help, share ideas, and provide feedback, join our community: Get support, share ideas, and connect with other builders. You can also find us on: Updates, tips, and shout‑outs for builders. Star the repo, open issues, and contribute. Practical demos, tutorials, and deep dives. Company updates, launches, and hiring news. Feel free to tag us as `@inkeep` on 𝕏 or `@Inkeep` on LinkedIn with a video of what you're building — we like to highlight neat Agent use cases from the community where possible. Also feel free to submit a PR to our [template library](https://github.com/inkeep/agents/tree/main/agents-cookbook/template-projects). To keep up to date with all news related to AI Agents, sign up for the Agents Newsletter: Get the latest AI Agents news, tips, and updates delivered to your inbox. # License URL: /community/license License for the Inkeep Agent Framework *** title: License description: License for the Inkeep Agent Framework icon: "LuFileText" ------------------ The Inkeep Agent Framework is licensed under the **Elastic License 2.0** ([ELv2](https://www.elastic.co/licensing/elastic-license)) subject to **Inkeep's Supplemental Terms** ([SUPPLEMENTAL\_TERMS.md](https://github.com/inkeep/agents/blob/main/SUPPLEMENTAL_TERMS.md)). This is a [fair-code](https://faircode.io/), source-available license that allows broad usage while protecting against certain competitive uses. # Connect Your Data with Context7 URL: /connect-your-data/context7 Learn how to connect your code repositories and documentation to your agents using Context7 *** title: Connect Your Data with Context7 sidebarTitle: Context7 description: Learn how to connect your code repositories and documentation to your agents using Context7 icon: "brand/Upstash" keywords: Context7, GitHub, GitLab, BitBucket, code documentation, OpenAPI, MCP server, library documentation, code repositories, technical documentation --------------------------------------------------------------------------------------------------------------------------------------------------------- Context7 specializes in connecting code repositories and technical documentation to your agents. It's particularly well-suited for developers who want their agents to have access to library documentation, API specs, and code repositories. ## Supported data sources With Context7 you can connect: * **Code Repositories**: GitHub Repositories, GitLab, BitBucket * **API Documentation**: OpenAPI Spec * **Documentation Formats**: LLMs.txt * **Websites**: Website crawling and indexing ## Getting started ### Step 1: Check if your library is already available Context7 maintains a library of pre-indexed documentation for popular libraries and frameworks. Before creating an account, check if your library is already available: Visit [context7.com](https://context7.com/) and browse the list of available libraries. If your library is listed, you can use it immediately without additional setup. If your library is already available in Context7's library, you can skip directly to Step 4 to get the library ID and register the MCP server. ### Step 2: Create an account If your library isn't listed or you want to connect custom sources: 1. [Sign up for Context7](https://context7.com/sign-in) 2. Complete the account setup process 3. Verify your email address if required ### Step 3: Connect your data sources 1. Log in to your Context7 dashboard 2. Add your repositories, websites, or OpenAPI specs 3. Wait for Context7 to index your content 4. Verify that your content is accessible ### Step 4: Get the Context7 Library ID To use a specific library with your agents, you'll need the Context7 Library ID. You can find this ID in the library's URL on context7.com. **How to find the Library ID:** 1. Navigate to the library page on context7.com (e.g., `https://context7.com/supabase/supabase`) 2. Copy the path after the domain name 3. The Library ID is the path portion of the URL **Example:** * URL: `https://context7.com/supabase/supabase` * Library ID: `supabase/supabase` If you don't know the library ID, the Context7 MCP server can automatically match libraries based on your query using the `resolve-library-id` tool. See the "Automatic library matching" section below for details. ### Step 5: Register the MCP server Register the Context7 MCP server as a tool in your agent configuration: **Using TypeScript SDK:** ```typescript import { mcpTool, subAgent } from "@inkeep/agents-sdk"; const context7Tool = mcpTool({ id: "context7-docs", name: "context7_search", description: "Search code documentation and library references", serverUrl: "https://mcp.context7.com/mcp", }); const devAgent = subAgent({ id: "dev-agent", name: "Developer Assistant", description: "Helps with code questions using library documentation", prompt: `You are a developer assistant with access to code documentation.`, canUse: () => [context7Tool], }); ``` **Using Visual Builder:** 1. Go to the **MCP Servers** tab in the Visual Builder 2. Click "New MCP server" 3. Enter: * **Name**: `Context7 Documentation` * **URL**: `https://mcp.context7.com/mcp` * **Transport Type**: `Streamable HTTP` or `SSE` 4. Save the server 5. Add it to your agent by dragging it onto your agent canvas ### Step 6: Use the Context7 MCP server in your agent Once your Context7 MCP server is registered, you can use it with a specific library ID (from Step 4) or let it automatically match libraries based on your query. #### Specifying a library ID If you know which library you want to use, specify its Context7 Library ID in your agent's prompt. This allows the Context7 MCP server to skip the library-matching step and directly retrieve documentation. **Example:** ```typescript const devAgent = subAgent({ id: "react-agent", name: "React Assistant", description: "Helps with React development", prompt: `You are a React development assistant. Use library ID "websites/inkeep" when searching for documentation. Use the get_library_docs tool to find React documentation and examples.`, canUse: () => [context7Tool], }); ``` #### Automatic library matching If you don't specify a library ID, the Context7 MCP server will automatically match libraries based on your query. The server uses the `resolve-library-id` tool to identify the appropriate library, then uses the `get_library_docs` tool to retrieve the relevant documentation. This approach works well when: * You're working with multiple libraries * The library name is mentioned in the user's query * You want the agent to dynamically select the most relevant library # Connect Your Data with Inkeep URL: /connect-your-data/inkeep Learn how to connect your data sources to your agents using Inkeep's comprehensive knowledge base platform *** title: Connect Your Data with Inkeep sidebarTitle: Inkeep description: Learn how to connect your data sources to your agents using Inkeep's comprehensive knowledge base platform icon: "brand/Inkeep" keywords: Inkeep, knowledge base, data sources, MCP server, documentation integration, website indexing ------------------------------------------------------------------------------------------------------- Inkeep provides a comprehensive platform for connecting and managing your data sources. With support for 25+ data source types, Inkeep makes it easy to create a unified knowledge base that your agents can access. ## Supported data sources Inkeep supports a wide variety of data sources: * **Documentation**: OpenAPI Spec, Plain text * **Collaboration**: Confluence, Notion, Slack, Discord, Discourse, Missive * **Code Repositories**: GitHub * **Cloud Storage**: Google Drive * **Websites**: Website crawling and indexing * **Video**: YouTube * **Support Systems**: * Freshdesk Tickets * HelpScout Docs and Tickets * Zendesk Knowledge Base, Tickets, and Help Center * **Project Management**: Jira ## Getting started ### Step 1: Set up your Inkeep account If you don't have an Inkeep account yet, you can: * [Try Inkeep on your content](https://inkeep.com/demo) - Test Inkeep with your own content * [Schedule a call](https://inkeep.com/schedule-demo) - Get personalized setup assistance ### Step 2: Connect your data sources 1. Log in to your Inkeep dashboard 2. Navigate to the "Sources" tab 3. Add and configure your desired data sources (websites, GitHub repos, Notion pages, etc.) 4. Wait for Inkeep to index your content ### Step 3: Get your MCP server URL Once your data sources are connected and indexed, obtain your Inkeep MCP server URL from your Inkeep dashboard. This URL will be used to register the MCP server with your agents. ### Step 4: Register the MCP server Register your Inkeep MCP server as a tool in your agent configuration: **Using TypeScript SDK:** ```typescript import { mcpTool, subAgent } from "@inkeep/agents-sdk"; const inkeepTool = mcpTool({ id: "inkeep-knowledge-base", name: "knowledge_base", description: "Search the company knowledge base powered by Inkeep", serverUrl: "YOUR_INKEEP_MCP_SERVER_URL", // From your Inkeep dashboard }); const supportAgent = subAgent({ id: "support-agent", name: "Support Agent", description: "Answers questions using the company knowledge base", prompt: `You are a support agent with access to the company knowledge base.`, canUse: () => [inkeepTool], }); ``` **Using Visual Builder:** 1. Go to the **MCP Servers** tab in the Visual Builder 2. Click "New MCP server" 3. Select "Custom Server" 4. Enter: * **Name**: `Inkeep Knowledge Base` * **URL**: Your Inkeep MCP server URL * **Transport Type**: `Streamable HTTP` 5. Save the server 6. Add it to your agent by dragging it onto your agent canvas # Connecting Your Data URL: /connect-your-data/overview Learn how to connect your data sources to your agents through MCP servers *** title: Connecting Your Data sidebarTitle: Overview description: Learn how to connect your data sources to your agents through MCP servers icon: "LuSparkles" keywords: data sources, MCP servers, knowledge base, documentation, GitHub, website integration ----------------------------------------------------------------------------------------------- Connect your data sources to your agents through MCP servers. Support websites, GitHub repositories, documentation, knowledge bases, PDFs, and more. Your agents can search and access this content in real-time. ## How it works 1. **Set up your data source** - Configure your chosen provider and connect your data sources 2. **Get your MCP server URL** - Obtain the MCP server endpoint from your provider 3. **Register the MCP server** - Add it as a tool in your agent configuration 4. **Use in your agents** - Your agents can now search and access your connected data ## Choose a data provider Select a provider that supports your data sources: Connect 25+ data sources including websites, GitHub, Notion, Slack, Confluence, and more. Comprehensive knowledge base solution. Connect GitHub, GitLab, BitBucket repositories, OpenAPI specs, and websites. Great for code documentation. Connect GitHub repositories, PDFs, and Markdown files. Simple and focused solution for documentation. ## Other options We recommend Inkeep, Context7, or Ref for the easiest setup—they handle MCP server management automatically. For more advanced use cases, you can use [Reducto](https://reducto.ai/) or [Unstructured](https://unstructured.io/). Both offer self-serve free tiers and allow you to upload documents and access them via their APIs or SDKs. You can either wrap these in your own MCP server or invoke them directly using [function tools](/typescript-sdk/tools/function-tools). # Connect Your Data with Ref URL: /connect-your-data/ref Learn how to connect your documentation and code repositories to your agents using Ref *** title: Connect Your Data with Ref sidebarTitle: Ref description: Learn how to connect your documentation and code repositories to your agents using Ref icon: "brand/Ref" keywords: Ref, GitHub, PDF, Markdown, documentation, MCP server, knowledge base, API key ---------------------------------------------------------------------------------------- Ref provides a simple and focused solution for connecting your documentation and code repositories to your agents. With support for GitHub repositories, PDFs, and Markdown files, Ref is perfect for teams that need straightforward documentation access. ## Supported data sources With Ref you can connect: * **Code Repositories**: GitHub Repositories * **Documents**: PDF files * **Documentation**: Markdown files ## Getting started ### Step 1: Create an account 1. [Sign up for Ref](https://ref.tools/login) 2. Complete the account registration process ### Step 2: Upload your resources 1. Log in to your Ref dashboard 2. Navigate to the [Resources page](https://ref.tools/resources) 3. Upload your PDFs, Markdown files, or connect your GitHub repositories 4. Wait for Ref to process and index your content ### Step 3: Get your MCP server URL 1. Navigate to the [Install MCP page](https://ref.tools/install) 2. Copy the MCP server URL (it will start with `https://api.ref.tools/mcp?apiKey=ref-`) ### Step 4: Register the MCP server Register the Ref MCP server as a tool in your agent configuration. Replace `` with your actual API key from Step 3. **Using TypeScript SDK:** ```typescript import { mcpTool, subAgent } from "@inkeep/agents-sdk"; const refTool = mcpTool({ id: "ref-documentation", name: "ref_search", description: "Search uploaded documentation and code repositories", serverUrl: "https://api.ref.tools/mcp?apiKey=ref-", }); const docAgent = subAgent({ id: "doc-agent", name: "Documentation Assistant", description: "Answers questions using uploaded documentation", prompt: `You are a documentation assistant with access to company documentation`, canUse: () => [refTool], }); ``` **Using Visual Builder:** 1. Go to the **MCP Servers** tab in the Visual Builder 2. Click "New MCP server" 3. Select "Custom Server" 4. Enter: * **Name**: `Ref Documentation` * **URL**: `https://api.ref.tools/mcp?apiKey=ref-` (replace with your API key) * **Transport Type**: `Streamable HTTP` 5. Save the server 6. Add it to your agent by dragging it onto your agent canvas # Push / Pull URL: /get-started/push-pull Push and pull your agents to and from the Visual Builder *** title: Push / Pull description: Push and pull your agents to and from the Visual Builder icon: "LuArrowLeftRight" ------------------------ ## Push code to visual With Inkeep, you can define your agents in code, push them to the Visual Builder, and continue developing with the intuitive drag-and-drop interface. You can switch back to code any time. Let's walk through the process.