◆CatalystDeskSign in
Request a Proposal

CatalystDesk / Developers

Build your first context workflow.

A project key, explicit budgets and traceable receipts. Start with reads, then connect a bounded context request to your own Agent.

The SDK is currently a reviewed private distribution. Use the gateway URL and package supplied for your environment; these examples do not activate public access.

Credits console not enabled here

Console configuration is not API availability. The gateway capability endpoints and your project permissions determine which services can be called.

  1. 01

    Create a project

    Sign in to the Credits console and choose a daily budget. Each project has its own scope.

  2. 02

    Issue a scoped key

    Choose quant and model permissions. Save the key when it is shown once; keep it on your server.

  3. 03

    Request context

    Read capabilities, retain a request ID, get a quote and apply your maximum cost.

  4. 04

    Reconcile usage

    Read the receipt by the same ID. If the result is uncertain, query it before another financial request.

Python SDK

Start with a read-only check

Install the supplied private wheel

python -m pip install /path/to/catalystdesk_sdk-0.1.0-py3-none-any.whl
import asyncio
import os
from catalystdesk_sdk import CatalystDeskClient

async def main():
    async with CatalystDeskClient(
        os.environ["CATALYSTDESK_API_KEY"],
        base_url=os.environ["CATALYSTDESK_API_URL"],
    ) as client:
        print(await client.markets())
        print(await client.models())
        print(await client.credits())

asyncio.run(main())
A quoted quantitative request

Quote and context use the same retained request ID. The example cap is a customer limit, not a published service price. Inference and quant usage are itemized separately.

import asyncio
import os
from catalystdesk_sdk import CatalystDeskClient, CatalystDeskError

async def main():
    request_id = os.environ["CATALYSTDESK_REQUEST_ID"]
    async with CatalystDeskClient(
        os.environ["CATALYSTDESK_API_KEY"],
        base_url=os.environ["CATALYSTDESK_API_URL"],
    ) as client:
        try:
            catalog = await client.markets()
            version = catalog.get("result_version", 1)
            if type(version) is not int or version not in (1, 2):
                raise ValueError("Unsupported quantitative service version")
            if catalog.get("service_id") != f"market-context.hyperliquid.v{version}":
                raise ValueError("Quantitative service is unavailable")
            quote = await client.quote_context(
                coin="BTC", request_id=request_id, result_version=version)
            context = await client.context(
                coin="BTC", quote_id=quote["quote_id"],
                request_id=request_id, max_cost_nano=100_000_000)
            print(context)
        except CatalystDeskError as error:
            if error.receipt_pending:
                print(await client.request(request_id))
            else:
                raise

asyncio.run(main())

From market observations to usable context.

Preserve source time and quality through every stage. Your application decides what to do next.

  1. 01Market dataObserve · normalize
  2. 02Versioned modelsCompute · version
  3. 03Structured contextSchema · evidence
  4. 04Your Agent or appIntegrate · reconcile
Request a Scoped Proposal