> SpecStream is the live web data engine for teams and agents. This is the Markdown copy of https://specstream.ai/docs/integrations/grinta. Every page, with what SpecStream does and costs: https://specstream.ai/llms.txt

# Grinta

Add SpecStream to Grinta as a Streamable HTTP server in settings.json, and the coding agent can search the live web, read pages and bring back structured records mid-task. Paid work waits for your yes on a quoted price.

[SpecStream for GrintaCoding agents](https://specstream.ai/integrations/grinta.md)

## What you need

-   Grinta 1.0.0 or newer, installed with `pipx install grinta`.
-   A SpecStream account and an API key. New accounts start with $10 of credit, no card. [Create one](https://specstream.ai/signup?utm_source=grinta).

1.  1

    ## 1. Create a SpecStream API key

    Open [Agents & API](https://specstream.ai/workspace/agents?tab=keys&utm_source=grinta) in your SpecStream workspace, choose **API keys**, then **Create API key**. Give the key a total spending limit. Grinta sends it as a Bearer token, so there is no browser sign-in.

2.  2

    ## 2. Add SpecStream to settings.json

    An installed Grinta reads `~/.grinta/settings.json`. A source checkout reads the repository's `settings.json`. Add the `specstream` entry to the `servers` list under `mcp_config`, keep your other keys, and put your key in place of `YOUR_SPECSTREAM_API_KEY`.

    Set `enabled` under `mcp_config` to `true`. It is the master switch for MCP in Grinta, and `grinta init` writes it as `false`.

    Both `type` and `transport` must be `shttp`. Grinta's `transport` field defaults to `sse`, and SpecStream answers over Streamable HTTP only, so an entry without `"transport": "shttp"` fails to connect.

    ~/.grinta/settings.json (the mcp\_config part)

    ```json
    {
      "mcp_config": {
        "enabled": true,
        "servers": [
          {
            "name": "specstream",
            "type": "shttp",
            "transport": "shttp",
            "url": "https://api.specstream.ai/mcp",
            "api_key": "YOUR_SPECSTREAM_API_KEY",
            "usage_hint": "Live web search, page reading, and lists of records with a source on every value. Paid work starts only after the user approves the quoted price.",
            "enabled": true
          }
        ]
      }
    }
    ```

3.  3

    ## 3. Reload MCP in Grinta

    Restart Grinta, or press **Ctrl+B** to open **Environment**, open **MCP Servers**, and select **Reload**. SpecStream then shows in the **MCP Servers** panel of the sidebar, and you can switch it on or off from the same list.

4.  4

    ## 4. Ask in Agent mode

    Switch to Agent mode with `/mode` and describe the data and the details to bring back. Grinta calls SpecStream's tools through MCP.

    In a Grinta session

    ```text
    Find the open-source Python libraries for reading PDF tables, with each one's repository, license and latest release date. Use SpecStream.
    ```

## Why not the Add MCP Server dialog

Grinta's **Add MCP Server** dialog, and the **MCP Servers** tab of its settings menu, take a server name and a command or an HTTPS URL. A URL added there is saved with `"type": "sse"` and no key. SpecStream speaks Streamable HTTP and needs the key, so write the entry in `settings.json` as above. After that, the **MCP Servers** list shows SpecStream, and its **Edit**, **Delete** and **Reload** buttons work on it.

On November 12, 2026, a FastMCP client, the library Grinta connects with, reached `https://api.specstream.ai/mcp` over Streamable HTTP with Grinta's header and listed SpecStream's tools. The same client over SSE failed to connect.

## Approvals in Grinta

Grinta's `/autonomy` sets what it confirms. At `conservative` it confirms every MCP call. At `balanced`, the default, it confirms high risk actions. SpecStream adds its own gate at every level: nothing paid starts until you approve the price it quotes.

## What Grinta calls

A request for records moves through these tools in order.

-   `compile` reads the request and says what SpecStream will look for.
-   `quote_capacity_work` prices it. It spends nothing.
-   `authorize_capacity_work` starts the work after you approve the maximum.
-   `get_find` follows progress, and `list_find_rows` reads the rows, each value with its source URL and read time.

## One fact or one page

For a single answer, Grinta can call `search_web` with the question. Each search is $5 per 1,000 searches of up to 10 results, from your balance, with no quote. To read known pages, `read_pages` uses the Extract API at $0.80 per 1,000 pages, and a page with no text is not charged.

## Keep the key out of git

Grinta reads `api_key` as written and does not fill in environment variables in MCP entries. In an installed build the file sits in your home folder. In a source checkout, keep `settings.json` out of your commits, or use a key with a small spending limit.

## Cost

Connecting SpecStream to Grinta is free. Reading a request and pricing it cost nothing. Each matching row costs 5¢, 15¢ or $1, depending on how much the row needs, plus 5¢ for a person's email and 15¢ for a phone. A quote lasts 30 minutes, a run can't cost more than the maximum you approved, and a run that finds nothing costs nothing. [Balance, quotes, and billing](https://specstream.ai/docs/billing.md) has the details.

## Disconnect

Set the entry's `enabled` to `false`, or remove it, and reload MCP. To end the key itself, revoke it under **API keys** in **Agents & API**. Your saved results stay in your workspace. Questions go to [support@specstream.ai](mailto:support@specstream.ai).

## More

[SpecStream for Grinta](https://specstream.ai/integrations/grinta.md) covers what it does in Grinta on one page. Every other tool has its guide in [Connect your tools](https://specstream.ai/docs/integrations.md). You see the most a request can cost before it starts, and the matches are paid from your balance. [Billing](https://specstream.ai/docs/billing.md) has the details. For help, email [support@specstream.ai](mailto:support@specstream.ai).
