Skip to main content

IndieML - Substance API

A lightweight, transformer-based API that evaluates text for substance, depth, and clarity in under 25ms while achieving 87% of the accuracy of a full-scale LLM. This package provides REST API, Python SDK, and MCP configuration details to natively connect the hosted Substance API to a wide variety of applications. For more information, including API key requests, please visit IndieML.

REST API

For integrations outside the Python and MCP ecosystems (such as standard OpenAI function calling, custom AI scripts, or raw HTTP requests), the hosted endpoint accepts standard JSON payload requests.

Single Evaluation

cURL

curl -X POST https://indieml.app/v1/score/substance \
  -H "X-API-Key: YOUR_API_KEY_HERE" \
  -H "Content-Type: application/json" \
  -d '{"input_text": "This is a test run."}'

Python

import requests

response = requests.post(
    "https://indieml.app/v1/score/substance",
    headers={"X-API-Key": "YOUR_API_KEY_HERE"},
    json={"input_text": "This is a test run."}
)
print(response.json())

Node.js

const response = await fetch("https://indieml.app/v1/score/substance", {
  method: "POST",
  headers: {
    "X-API-Key": "YOUR_API_KEY_HERE",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({ input_text: "This is a test run." })
});
console.log(await response.json());

Batch Evaluation

Process up to 100 strings per request.

cURL

curl -X POST https://indieml.app/v1/score/substance/batch \
  -H "X-API-Key: YOUR_API_KEY_HERE" \
  -H "Content-Type: application/json" \
  -d '{"input_texts": ["This is a test run.", "This is another test run."]}'

Python

import requests

response = requests.post(
    "https://indieml.app/v1/score/substance/batch",
    headers={"X-API-Key": "YOUR_API_KEY_HERE"},
    json={"input_texts": ["This is a test run.", "This is another test run."]}
)
print(response.json())

Node.js

const response = await fetch("https://indieml.app/v1/score/substance/batch", {
  method: "POST",
  headers: {
    "X-API-Key": "YOUR_API_KEY_HERE",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({ input_texts: ["This is a test run.", "This is another test run."] })
});
console.log(await response.json());

Python SDK

Installation (requires Python 3.11 or higher)

pip install indieml

Usage

from indieml import Substance

# Initialize the API
api = Substance(api_key="YOUR_API_KEY_HERE")

# Evaluate a single string
single_result = api.score("This is a test run.")
print(single_result)

# Evaluate an array of strings (automatically chunks into batches of 100)
batch_result = api.score_batch(["This is a test run.", "This is another test run."])
print(batch_result)

Node SDK

Installation

npm install indieml

Usage (CommonJS)

const { IndieML } = require('indieml');

// Initialize the API
const api = new IndieML({ apiKey: 'YOUR_API_KEY_HERE' });

// Evaluate a single string
const singleResult = await api.score("This is a test run.");
console.log(singleResult);

// Evaluate an array of strings (automatically chunks into batches of 100)
const batchResult = await api.scoreBatch(["This is a test run.", "This is another test run."])
console.log(batchResult)

Usage (ES Modules / TypeScript)

import { IndieML } from 'indieml';

// Initialize the API
const api = new IndieML({ apiKey: 'YOUR_API_KEY_HERE' });

// Evaluate a single string
const singleResult = await api.score("This is a test run.");
console.log(singleResult);

// Evaluate an array of strings (automatically chunks into batches of 100)
const batchResult = await api.scoreBatch(["This is a test run.", "This is another test run."])
console.log(batchResult)

MCP Server Integration

You can integrate the Substance API into AI coding assistants by routing them to our cloud-native ASGI endpoints.

Cursor, ChatGPT, and Claude Code (Streamable HTTP)

For agents that support native Streamable HTTP / SSE configurations, provide the remote URL and authorization header directly:

{
  "mcpServers": {
    "indieml": {
      "type": "http",
      "url": "https://indieml.app/mcp/",
      "headers": {
        "X-API-Key": "YOUR_API_KEY_HERE"
      }
    }
  }
}

Claude Desktop (stdio via npx Bridge)

For local Linux, Mac, and Windows clients that require stdio transport, use the npx mcp-remote bridge to route the connection to the cloud endpoint. Node.js v20+ is required. Ensure your OS environment variables include INDIEML_API_KEY.

{
  "mcpServers": {
    "indieml": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://indieml.app/mcp/",
        "--header",
        "X-Api-Key:${INDIEML_API_KEY}"
      ],
      "env": {
        "INDIEML_API_KEY": "YOUR_API_KEY_HERE"
      }
    }
  }
}

Applications & Use Cases

The Substance API is a fast and inexpensive pre-screening tool designed to integrate with your existing filters.

While it evaluates substance across any text, it is uniquely suited for high-volume, automated data pipelines:

Inbox & Intake Triage

Score support tickets, shared mailboxes, lead forms, and bug reports before a human opens them. Auto-request missing details from vague one-liners and put detailed, actionable messages first. Works as an API call, a mail header, or a label in the tools you already use.
Salesforce Integration Guide
Zendesk Integration Guide

Live Input Coaching

Catch thin submissions at the source. Add IndieML to forms, listings, and bug reporters to prompt people for what's missing while they're still typing. Your team gets complete, usable input the first time, without chasing follow-ups.

Feedback & Review Triage

Separate real signal from "great app" and "it's broken." Score survey responses, NPS comments, and app reviews as they arrive, then route detailed, reproducible feedback to Jira, Linear, or Slack and keep generic noise out of the way.

LLM Context & RAG Filtering

Stop paying tokens for noise. Pre-filter scraped pages, tool outputs, and document chunks, dropping menus, boilerplate, and stub text before it reaches your embedding model or prompt. Lower cost, faster calls, better answers.

Dataset Curation

Rank and filter large text collections without paying for LLM-as-a-judge. Build fine-tuning sets, clean scraped corpora, and assemble eval sets by keeping high-substance text and dropping filler, in batch and at scale.

Content & Output Quality

Surface the most substantive answers, comments, and reviews in communities and feeds, or monitor chatbot and agent responses for fluff in CI and production. One consistent score for any text where depth matters.

Metadata

Release files for indieml 0.1.25

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for indieml 0.1.25
File Size Uploaded Provenance
indieml-0.1.25.tar.gz 67.2 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for indieml 0.1.25
File Interpreter ABI Platform
indieml-0.1.25-py3-none-any.whl Python 3 none any Details

Total release size: 73.5 kB

Release files / indieml-0.1.25.tar.gz

Download URL indieml-0.1.25.tar.gz
Size 67.2 kB
Tags Source
SHA-256 checksum
How to use checksums
a8c9834fa2a1e8cff24c364f392762de064a8a6102077887c7784f2170eafd29
BLAKE2b-256 checksum
How to use checksums
42f8d409ed97e2057fc7873429b1122ee1b7a6c80249c52daa1f3f692c3b9ec7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

Release files / indieml-0.1.25-py3-none-any.whl

Download URL indieml-0.1.25-py3-none-any.whl
Size 6.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4b0e08bb27d740af3468eca5f482f3331ea1f692f1c9f388fee26ec7b1471207
BLAKE2b-256 checksum
How to use checksums
9c1d7dfcbc270aae035d70c589c86df93d8ac9d4a041ca765b7a5d7d5449d9c6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

Security for indieml 0.1.25

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for indieml-0.1.25.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page