Indraft
OfficialClick on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@IndraftShow me our top open opportunities over $50k, sorted by value."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Indraft
A CRM your AI agent can actually run. Connect Claude, ChatGPT, Cursor or any MCP client and it can read and write companies, contacts, opportunities, tasks and interactions from the first request, with no schema to design first.
MCP server: https://api.indraft.io/mcp · indraft.io ·
Docs
Connect it
Claude
claude mcp add --transport http indraft https://api.indraft.io/mcpClaude opens a browser to authorize. Nothing to paste, no API key to store.
In Claude Desktop or claude.ai, add it as a custom connector with the same URL.
ChatGPT
Settings → Connectors → Add custom connector, URL https://api.indraft.io/mcp.
It authorizes over OAuth.
Cursor, Windsurf, VS Code, and other MCP clients
Any client that speaks Streamable HTTP and OAuth 2.1 works. Point it at
https://api.indraft.io/mcp.
Then paste this and your agent will set itself up:
Set up Indraft for my business. Read its CRM schema first, then tell me what you think we do and how you plan to model it, and wait for my answer before you write anything.
It reads the schema before it writes, so it learns the object types, the limits and what it is allowed to do without you explaining any of it.
Related MCP server: MCP Suite CRM
Why this exists
Most CRMs were built for a person clicking through forms, and an agent using one is doing screen-scraping with extra steps: guessing field names, inventing records, and overwriting things somebody already checked.
Indraft is built the other way round.
Every value records who asserted it and how. Observed, inferred, imported, supplied by a person, or confirmed by a person. Those rank, and a weaker claim cannot quietly overwrite a stronger one, so your agent's guess never overwrites what you checked. A write that was held says so rather than reporting success.
Every change is on the record. The actor, the surface it arrived through, and the field-level diff. Most changes can be undone.
It is populated from the first request. Companies, contacts, opportunities, tasks and interactions exist before you configure anything, with a pipeline that can actually close a deal. Custom fields and your own object types are there when you need them, defined by asking.
It refuses rather than guessing. A total that crosses currencies is refused unless you have stated a rate, and every converted answer names the rate it used and who asserted it. There is no bulk delete.
The tools
45, covering reading, writing, schema changes, merges, bulk imports and aggregation. An agent is only shown the ones its credential can actually call.
Full reference, generated from the server's own catalogue: TOOLS.md
Every tool carries a human-readable title and the applicable readOnlyHint,
destructiveHint and openWorldHint, so a client can tell a read from a write
before it calls one.
TypeScript SDK
For your own service, when you want the REST API rather than MCP. The source is
in sdk/; an npm release follows.
import { IndraftClient } from "./sdk";
const indraft = new IndraftClient({ token: process.env.INDRAFT_TOKEN });
const { record } = await indraft.upsertCompany({
name: "Halden Freight",
domain: "halden.example",
industry: "Logistics",
// Say how you know. An import is weaker than a person, and Indraft enforces
// that rather than trusting the last writer.
assertionKind: "imported",
idempotencyKey: "nightly-sync-halden",
});Errors are typed and carry a recovery hint rather than a status code alone:
import { IndraftError } from "./sdk";
try {
await indraft.upsertCompany({ name: "Halden Freight", industry: "Retail", overrideStanding: true });
} catch (error) {
if (error instanceof IndraftError && error.code === "standing_override_refused") {
// This workspace does not permit overrideStanding. Send the write again
// without it: it applies to every field it is strong enough to move and
// reports the rest in `held[]`, and a person can confirm a contested value.
console.error(error.recoveryHint);
}
}A cross-currency total is not an error, it is a different answer. Ask for a sum over deals in several currencies with no rate on file and the aggregate comes back grouped per currency rather than summed, because a total that silently mixes currencies is the failure this product refuses to commit.
See sdk/ for the source. MIT.
Also available
REST API with a published OpenAPI description
Official MCP registry:
io.indraft/mcpExport everything, any time: one spreadsheet per table, the whole workspace as JSON, and a README explaining how the files join up. Nothing is left out and nothing is trimmed to fit.
Status
Indraft is live at indraft.io. Free tier, no card.
Issues and questions are welcome here. Security reports go to
koshea@justicebid.com rather than a public issue.
License
MIT for the SDK and everything in this repository. The hosted service has its own terms and privacy policy.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Let AI agents query data and act across all your business apps via MCP.
The HubSpot MCP Server acts as a bridge that enables AI assistants and Large Language Models to securely interact with HubSpot CRM data through natural conversation, without requiring users to understand complex API structures. It provides read-only access to standard CRM objects (contacts, companies, deals, tickets, products, invoices, and more) and their associations, secured via OAuth 2.0, allowing AI agents to perform tasks like summarizing deals, fetching company updates, and looking up record changes.
API-first CRM for LLMs - contacts, companies, deals and activities over a native MCP server.
A CRM powered by your agent: contacts, deals, email, ads, and reports over MCP.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceExposes a fictional B2B CRM database (companies, contacts, deals) as callable MCP tools, enabling AI agents to answer natural-language questions about company records, contacts, and pipeline data.
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to interact with a CRM covering companies, people, leads, deals, and more, with role checks, scoped agent keys, approval gates, and a shared audit trail.AGPL 3.0
- AlicenseBqualityCmaintenanceEnables AI assistants to manage RogerRoger CRM data including people, organizations, lists, tags, and tasks through standardized MCP tools.2211MIT
- FlicenseNot gradedqualityCmaintenanceAn MCP-native CRM backend for AI agents, enabling customer, opportunity, note, follow-up, and pipeline health management through 15 MCP tools.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/indraftio/indraft'
If you have feedback or need assistance with the MCP directory API, please join our Discord server