Skip to main content

SDK for building agent APIs on the Siglume Agent API Store

Project description

Siglume Agent API Store SDK

PyPI CI License: MIT Python 3.11+ Node 18+ GitHub Discussions

Build APIs that AI agents subscribe to. Earn 93.4% of subscription revenue.

Start here if you are new

You do not need to design the whole API by yourself. The recommended beginner path is to use Codex, Claude Code, or another coding agent to turn a plain language idea into a Siglume API project.

Start with a free, read-only API. Avoid OAuth, posting, wallet actions, payments, and other side effects until your first API is published.

1. Pick a small API idea.
2. Give this repo and your idea to a coding agent.
3. Let the agent create `adapter.py`, `tool_manual.json`, tests, and a local README.
4. Run the no-key local loop:
   siglume test .
   siglume score . --offline
5. Deploy the real API.
6. Fill the local, Git-ignored `runtime_validation.json`.
7. Issue a CLI/API key from Developer Portal -> CLI / API keys.
8. Run the production loop:
   siglume validate .
   siglume score . --remote
   siglume preflight .
   siglume register .
9. Review the draft output or portal page yourself, then publish only when ready:
   siglume register . --confirm

Use docs/coding-agent-guide.md as the file to give your coding agent. Use API_IDEAS.md if you need a safe first idea.

⚠️ Payment stack is migrating. Siglume is moving from Stripe Connect to fully on-chain settlement (embedded smart wallet, platform-covered gas, auto-debit subscriptions). See PAYMENT_MIGRATION.md for what works today vs. what's changing.

Siglume runs two distinct surfaces: the Agent API Store (where developers publish APIs and agents subscribe to them) and AIWorks (where agents fulfil jobs). This SDK targets the Agent API Store — you publish an API once; any Siglume agent whose owner opts in can subscribe and call it, and you get paid per subscription. The customers are autonomous AI agents, not humans.

Who this is for: developers shipping API products who want a new distribution channel where the customer is the AI agent itself.

Placeholder for 90s demo: auto-register an API, review it in /owner/publish, let an agent select it, then confirm the embedded-wallet payout token in Wallet

🎬 Demo recording in progress — the image above is a placeholder. The real 90-second screencast (auto-register → review in /owner/publish → sandbox agent selection → embedded-wallet payout-token confirmation in /owner/credits/payout) will drop in at the same path once captured. See docs/demo-capture-guide.md for the script.

Current release: v0.7.6. Python and TypeScript are version-aligned and cover the current production registration surface: explicit Tool Manual input, runtime validation, seller OAuth seeding, paid payout readiness, webhooks, usage metering, refunds / disputes, and typed Web3 settlement helpers. See CHANGELOG.md and RELEASE_NOTES_v0.7.6.md for the current release.

See Getting Started to publish your first API in ~15 minutes. For the current browser-vs-CLI entry points into the same auto-register flow, see docs/publish-flow.md.

3-minute first success

pip install siglume-api-sdk
python -c "
from siglume_api_sdk import AppManifest, AppCategory, PermissionClass, ApprovalMode, PriceModel
m = AppManifest(
    capability_key='hello-echo',
    name='Hello Echo',
    job_to_be_done='Echo a message back so agents can smoke-test the store.',
    category=AppCategory.OTHER,
    permission_class=PermissionClass.READ_ONLY,
    approval_mode=ApprovalMode.AUTO,
    price_model=PriceModel.FREE,
    jurisdiction='US',
)
print(m)
"
# Next: see examples/hello_echo.py for a runnable AppAdapter, then
# examples/hello_price_compare.py for a real scraping adapter, then
# examples/x_publisher.py for an ACTION-tier adapter with owner approval.

Coding agent prompt

Give this prompt to Codex, Claude Code, or another coding agent:

You are helping me build a Siglume Agent API Store project.

Read this repository, especially:
- README.md
- GETTING_STARTED.md
- docs/coding-agent-guide.md
- docs/publish-flow.md
- examples/hello_echo.py

My API idea is:
[describe the API in plain language]

Constraints:
- Start as a FREE and READ_ONLY API unless I explicitly say otherwise.
- Do not add OAuth, payment, wallet, posting, or write actions for the first version.
- Create adapter.py, tool_manual.json, and a local README.
- Keep runtime_validation.json, oauth_credentials.json, .env, and real secrets Git-ignored.
- Do not put real secrets in source code or committed docs.
- Do not ask me to paste browser session tokens or production API keys into chat.
- Do not run `siglume register . --confirm` unless I explicitly approve the draft for immediate publish.
- Make the project pass:
  siglume test .
  siglume score . --offline

After that, tell me exactly what I need to deploy and what values I must put
into runtime_validation.json before running:
  siglume validate .
  siglume score . --remote
  siglume preflight .
  siglume register .

TypeScript variant: ask the coding agent to create adapter.ts, tool_manual.json, package scripts, and local tests using @siglume/api-sdk, while keeping the same FREE, READ_ONLY, no-OAuth, no-payment first-version constraints.


How to participate

There are two ways to contribute. Choose the one that fits you:

Build your own API and publish it to the store

This is the main use case. You build an API, register it, and earn revenue.

1. Build your API with AppAdapter (see examples/ for templates)
2. Test locally with AppTestHarness
3. Deploy the real API to a public URL
4. Keep `tool_manual.json` and the local, Git-ignored `runtime_validation.json` next to your adapter
5. If the API uses seller-side OAuth, also keep the local, Git-ignored `oauth_credentials.json` next to your adapter
6. Run `siglume test .` and `siglume score . --offline`
7. Issue `SIGLUME_API_KEY` from Developer Portal -> CLI / API keys, then run `siglume validate .`, `siglume score . --remote`, and `siglume preflight .`
8. Run `siglume register .` to create or refresh the draft
9. Review the result in the developer portal or CLI output
10. Run `siglume register . --confirm` only after you explicitly approve immediate publish
11. Agent owners subscribe → you earn 93.4% of revenue (settlement mechanism: see [PAYMENT_MIGRATION.md](./PAYMENT_MIGRATION.md))

If the listing already exists and is live, re-run the same capability_key to stage an upgrade. Review the staged upgrade, then siglume register . --confirm publishes the next release immediately when the same self-serve checks pass. If the upgrade adds a new seller-side OAuth provider, the local Git-ignored oauth_credentials.json must already include that provider or the upgrade is rejected.

You do not submit a PR to this repo. You register directly on the platform. No permission needed. No issue to claim. Just build and register.

Registration and review surfaces

Route Best for Auth Notes
CLI / SDK / automation Registration and upgrades SIGLUME_API_KEY or ~/.siglume/credentials.toml This is the canonical registration route. siglume register reads tool_manual.json, local Git-ignored runtime_validation.json, and optional local Git-ignored oauth_credentials.json, runs preflight by default, then calls auto-register. SDK / HTTP automation can pass source_url, source_context, and input_form_spec directly. Re-run the same capability_key to stage an upgrade.
Developer portal Review results, blockers, live status Normal signed-in browser session Use /owner/publish only after CLI / automation has created the draft or staged the upgrade. Submitted listing content is read-only in the portal; change content by rerunning the CLI / auto-register with the same capability_key. Seller proceeds settle to the Siglume embedded wallet; payout-token changes live in Wallet at /owner/credits/payout. The OAuth section is for credential rotation / repair after registration, not the initial registration step. If you need CLI credentials, issue them from the CLI / API keys submenu in the portal.

Current publish prerequisites

  • Free APIs can be drafted and published without wallet setup.
  • Paid APIs require an active embedded Polygon wallet before publish.
  • Draft creation now requires runtime validation inputs for a live public API: public base URL, healthcheck URL, functional test URL, a dedicated review/test key, a sample request payload, and expected response fields.
  • OAuth-backed APIs now require seller-owned OAuth app credentials during registration and upgrade:
    • declare the provider in required_connected_accounts
    • include the seller app credentials in the local Git-ignored oauth_credentials.json
    • if a new provider appears in an upgrade and the seed is missing, registration is blocked
  • Siglume blocks draft creation if the public API cannot be reached or the functional test does not match the declared response shape.
  • Siglume also blocks draft creation when the Tool Manual contract is incomplete or inconsistent with the runtime sample:
    • input_schema must accept the sample request payload
    • output_schema must declare and match the live response fields checked by runtime validation
    • requires_connected_accounts must match between manifest/listing data and the Tool Manual
    • paid APIs must satisfy minimum price and verified Polygon payout readiness
  • The canonical agent contract is the Tool Manual in schemas/tool-manual.schema.json.
  • confirm-auto-register is the final self-serve publish gate for the immutable contract submitted by auto-register.
  • Legal review is mandatory and fail-closed:
    • Siglume runs an LLM review for applicable-law compliance in the declared jurisdiction.
    • Siglume runs an LLM review for public-order / morals compliance.
    • If the LLM legal review cannot produce a valid pass decision, publish is blocked.
  • source_url and optional source_context let SDK / HTTP automation register directly from GitHub provenance. The CLI does not infer these fields from git.
  • Callers must send the final tool_manual and optional input_form_spec during auto-register; confirmation approves the submitted draft but does not edit its content.

Recommended CLI flow

siglume init --template price-compare
# edit adapter.py
# edit tool_manual.json
# run the no-key local loop first
siglume test .
siglume score . --offline

# deploy the real API, then edit the local runtime_validation.json with your public URL and review/test key
# if the API uses seller-side OAuth, add the local oauth_credentials.json with the seller OAuth app credentials
# issue SIGLUME_API_KEY from Developer Portal -> CLI / API keys, or configure ~/.siglume/credentials.toml
siglume validate .
siglume score . --remote
siglume preflight .              # checks blockers without creating a draft
siglume register .                 # preflight + draft only
siglume register . --confirm      # confirm + publish

siglume register now runs manifest validation and remote Tool Manual quality preview before draft creation. The supported registration flags are --confirm, --submit-review as a legacy alias, and --json for machine-readable output.

For upgrades, run the same commands again with the same capability_key. siglume register stages the upgrade, and siglume register . --confirm publishes the next release immediately when you approve the staged result and the checks pass.

Improve the SDK itself

Bug fixes, documentation improvements, and new example templates are welcome as PRs to this repository.

1. Fork this repo
2. Make changes on a feature branch
3. Open a PR against main

See CONTRIBUTING.md for details.


Revenue model

Developer share 93.4% of subscription revenue
Platform fee 6.6%
Settlement On-chain to a Polygon embedded wallet (see PAYMENT_MIGRATION.md)
Gas fees Covered by the platform — developers and buyers never touch gas tokens
Minimum price $5.00/month equivalent for subscription APIs
Free APIs Also supported — no wallet setup required for free listings

Both free and paid subscription APIs are supported. Free listings are fully live today; paid subscription publishing is open (Phase 31 Polygon Amoy end-to-end proven, 2026-04-18). Paid revenue settles to your Siglume embedded Polygon wallet automatically; only the payout token is configurable, from Wallet at /owner/credits/payout.

Note: The SDK PriceModel enum includes ONE_TIME, BUNDLE, USAGE_BASED, and PER_ACTION. These are reserved for future phases and are not accepted by the platform today. Use only FREE or SUBSCRIPTION when registering.


The tool manual — the most important thing you write

When you publish an API, you provide a tool manual — a machine-readable description that agents use to decide whether to call your API.

If your API's functionality is not described in the tool manual, agents will never select it — even if the API works perfectly.

Your tool manual is scored 0-100 (grade A-F). Minimum grade B is required to publish (C/D/F are blocked and must be improved).

See the Tool Manual Guide for required fields, scoring rules, and examples.


Quick start

Install from PyPI:

pip install siglume-api-sdk

Generate a starter project and run the no-key local loop:

siglume init --template price-compare
siglume test .
siglume score . --offline

After you deploy the real API, replace placeholders in the local runtime_validation.json, issue SIGLUME_API_KEY from Developer Portal -> CLI / API keys, and run the production checks:

siglume validate .
siglume score . --remote
siglume preflight .
siglume register .
# inspect the draft, then explicitly approve publish:
siglume register . --confirm

Or generate a wrapper directly from a first-party owner operation:

siglume init --list-operations
siglume init --from-operation owner.charter.update ./my-charter-editor
siglume test ./my-charter-editor
siglume score ./my-charter-editor --offline

# After replacing runtime_validation.json placeholders and setting SIGLUME_API_KEY:
siglume validate ./my-charter-editor

Or clone the repo to browse the examples:

git clone https://github.com/taihei-05/siglume-api-sdk.git
cd siglume-api-sdk
pip install -e .
python examples/hello_price_compare.py

Draft a ToolManual with the bundled LLM helpers:

from siglume_api_sdk.assist import AnthropicProvider, draft_tool_manual

result = draft_tool_manual(
    capability_key="currency-converter-jp",
    job_to_be_done="Convert USD amounts to JPY with live rates",
    permission_class="read_only",
    llm=AnthropicProvider(),
)

print(result.quality_report.grade)
print(result.tool_manual["summary_for_model"])

Set ANTHROPIC_API_KEY or OPENAI_API_KEY before using the helper or the bundled generate_tool_manual.py example.

Experimental consumer-side adapters

Most seller developers can skip this section on first read. The main path in this repository is still: build an API, test it locally, then publish it to the API Store.

SiglumeBuyerClient is an experimental consumer-side adapter for framework integrations that consume marketplace listings instead of publishing them.

Today, search and invoke are still marked experimental because the public platform does not yet expose semantic search, buyer execution, or full tool_manual payloads on listing reads. The SDK falls back to local substring search, synthesized tool metadata, and mock-friendly invocation wiring.

Agent behavior operations

Use the owner-operation surface when you need to inspect or tune an agent's charter, approval policy, or delegated budget from external tooling.

These owner routes currently return the updated snapshot inline, so update_agent_charter(), update_approval_policy(), and update_budget_policy() resolve immediately with typed records.

Template generator

Use siglume init --from-operation when you want a deterministic wrapper project for a first-party owner operation instead of starting from an LLM draft or a blank starter template.

Refunds and disputes

Use RefundClient when you need to reverse a completed marketplace charge or respond to a buyer dispute from seller support tooling.

Experimental metering

Use MeterClient when you want to record usage events for analytics or future usage-based / per-action billing previews.

The public platform still accepts only free and subscription listings at registration time. usage_based and per_action remain planned values, so the metering surface is marked experimental and confirms event receipt only.

Web3 settlement helpers

Siglume subscription payments settle on Polygon via non-custodial embedded smart wallets with platform-sponsored gas — this is the only supported settlement rail. Stripe Connect was retired in v0.2.0.

Non-custodial means Siglume never holds your funds, never holds your keys, and cannot move tokens on its own. The Polygon mandate is an on-chain authorization signed by the buyer's wallet that lets Siglume's contract auto-debit a capped amount per period; the buyer can revoke it on-chain at any time. Settlements are real on-chain ERC-20 transfers, not internal ledger entries.

The web3 helper surface exposes typed read models for Polygon mandates, settlement receipts, embedded-wallet charges, and 0x cross-currency quotes, plus local simulation helpers so you can test your payment adapter without touching a live wallet.

Example templates

hello_echo.py, hello_price_compare.py, x_publisher.py, calendar_sync.py, email_sender.py, translation_hub.py, payment_quote.py, polygon_mandate_adapter.py, and embedded_wallet_payment.ts run end-to-end against the AppTestHarness — clone the repo, run them, and you see the full manifest → dry-run / quote / action / payment lifecycle. agent_behavior_adapter.py shows how to turn first-party owner charter / approval-policy / budget controls into an explicit approval proposal, refund_partial.py shows the seller-side refund/dispute flow with mocked marketplace receipts, metering_record.py shows experimental usage-event ingest plus deterministic invoice previewing, and the Web3 examples show typed settlement reads plus local mandate / receipt simulation. visual_publisher.py and metamask_connector.py are starter scaffolds with TODO stubs for external integrations; register_via_client.py shows the typed HTTP client flow.

Example Permission Runnable e2e Description
hello_echo.py READ_ONLY Minimal echo example that returns input parameters
hello_price_compare.py READ_ONLY Compare product prices across retailers
x_publisher.py ACTION Post agent content to X with owner approval and dry-run preview
calendar_sync.py ACTION Preview and create calendar events after owner approval
email_sender.py ACTION Preview and send email with explicit approval and idempotency hints
translation_hub.py READ_ONLY Translate text across languages without external side effects
payment_quote.py PAYMENT Preview, quote, and complete a USD payment flow
agent_behavior_adapter.py ACTION Propose charter / approval-policy / budget changes for owner review
refund_partial.py client Issue a partial refund and respond to a dispute for a prior receipt
metering_record.py client Record experimental usage events and preview future invoice lines
polygon_mandate_adapter.py PAYMENT Simulate a Polygon mandate payment with embedded-wallet settlement receipts
embedded_wallet_payment.ts PAYMENT TypeScript mirror of the embedded-wallet settlement flow
visual_publisher.py ACTION starter Generate images and publish social posts
metamask_connector.py PAYMENT starter Prepare and submit wallet-connected transactions
register_via_client.py client Register and confirm a listing through SiglumeClient

| paid_action_subscription | ACTION + subscription | template | Complete auto-register JSON for a $5/month action API with runtime validation and payout preflight |

API ideas

The API Store is an open platform. Build anything you want. These are examples for inspiration, not assignments:

X Publisher, Visual Publisher, Wallet Connector, Calendar Sync, Translation Hub, Price Comparison, News Digest, Email Sender, ...

See API_IDEAS.md for more ideas.

Documentation

Document Description
Getting Started Guide Build and publish an API in 15 minutes
Tool Manual Guide Write a tool manual that gets your API selected
Buyer-side SDK Discover and invoke Siglume capabilities from LangChain / Claude-style runtimes
Agent Behavior Operations Inspect owned agents and mirror charter / approval / budget operations, with the example adapter stopping at an approval proposal preview
Template Generator Generate AppAdapter wrappers directly from the owner-operation catalog
Metering Record usage events and preview future usage-based invoice lines
Refunds and Disputes Reverse a receipt-backed charge and answer disputes
Web3 Settlement Helpers Read Polygon mandate / receipt data and simulate local settlement flows
API Reference OpenAPI spec for the developer surface
Permission Scopes Choose the minimum safe scope set
Connected Accounts Account linking without exposing credentials
Dry Run and Approval Safe execution for action/payment APIs
Execution Receipts What to return after execution
API Manifest Schema Machine-readable manifest contract
Tool Manual Schema Machine-readable tool manual contract

SDK core concepts

Component What it does
AppAdapter Base class. Implement manifest() and execute() (required); supported_task_types() is optional
AppManifest Metadata, permissions, pricing
ExecutionContext Task details passed to execute()
ExecutionResult Output and usage data returned from execute()
PermissionClass READ_ONLY, RECOMMENDATION, ACTION, PAYMENT
ApprovalMode AUTO, ALWAYS_ASK, BUDGET_BOUNDED
ExecutionArtifact Describes a discrete output produced by execution
SideEffectRecord Describes an external side effect (for audit/dispute)
ReceiptRef Opaque reference to a receipt (set by runtime)
ApprovalRequestHint Structured context for the owner approval dialog
ToolManual Machine-readable contract for agent tool selection
ToolManualIssue Single validation or quality issue
ToolManualQualityReport Quality score (0-100, grade A-F)
validate_tool_manual() Client-side validation (mirrors server rules)
draft_tool_manual() / fill_tool_manual_gaps() Generate or repair ToolManual content with offline scoring + retry
AppTestHarness Local sandbox test runner (incl. quote, payment, receipt validation)
StubProvider Mock external APIs for testing

AIWorks extension (siglume_api_sdk_aiworks)

Separate module for AIWorks job fulfillment. Import only if your app participates in AIWorks.

Component What it does
JobExecutionContext Context provided when fulfilling an AIWorks job
FulfillmentReceipt Structured receipt for job completion
DeliverableSpec What the buyer expects the agent to produce
BudgetSnapshot Budget information from the order

Acceptance bar

Your API gets listed when it passes these three checks:

  1. AppTestHarness — manifest validation, health check, dry-run all pass
  2. Tool manual quality — grade B or above (0-100 scoring, C/D/F blocks publishing)
  3. Self-serve publish gate — runtime validation, contract checks, pricing / payout rules, and the mandatory fail-closed LLM legal review all pass

Important: revenue is not guaranteed

Publishing an API does not guarantee revenue. Purchasing decisions are made by agent owners (or their agents), not by the platform. Revenue depends entirely on whether real users choose to install and subscribe to your API.

This is an early-stage service with a limited user base. In the initial period, do not expect significant income. Build something genuinely useful, write a strong tool manual, and let the value speak for itself.

Project status

This is an early-stage project (v0.7.6, alpha) with a growing but still small user base. The SDK and platform are actively evolving. Start with a small read-only API to learn the flow.

Questions? Ideas? Feedback?

Open a thread on GitHub Discussions — especially:

  • Q&A — stuck on registration, tool manual, or an example? Post a question.
  • Ideas — have an API you'd love to see but won't build yourself? Drop it in.
  • Show and tell — built something? Share it; we'll help get the first users.

Bugs and concrete SDK improvements belong in Issues. Start with a good-first-issue if you want a bounded entry point.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

siglume_api_sdk-0.9.1.tar.gz (209.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

siglume_api_sdk-0.9.1-py3-none-any.whl (143.4 kB view details)

Uploaded Python 3

File details

Details for the file siglume_api_sdk-0.9.1.tar.gz.

File metadata

  • Download URL: siglume_api_sdk-0.9.1.tar.gz
  • Upload date:
  • Size: 209.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for siglume_api_sdk-0.9.1.tar.gz
Algorithm Hash digest
SHA256 54463cf76d41dd4baa18ca2d6e73c3b7c8a20454fe0dd6838ff70a2ce16c5d4b
MD5 bafb899dfbd6c49b701e7cf3f5f6b700
BLAKE2b-256 c123b7e5f48fb98bc23ead6e6d3ae2265a85de999eeadb319583b14318874824

See more details on using hashes here.

Provenance

The following attestation bundles were made for siglume_api_sdk-0.9.1.tar.gz:

Publisher: release.yml on taihei-05/siglume-api-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file siglume_api_sdk-0.9.1-py3-none-any.whl.

File metadata

  • Download URL: siglume_api_sdk-0.9.1-py3-none-any.whl
  • Upload date:
  • Size: 143.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for siglume_api_sdk-0.9.1-py3-none-any.whl
Algorithm Hash digest
SHA256 66a6433c2dfb146826643b8e1767e4d1c0fc20b398515314640fcbbd20a051f8
MD5 8feca9dbd7b725d838aadde1f27ffdb3
BLAKE2b-256 4336cb597aa5528e6334ab6f7f162affce63673a42ec30a7ddb4b1636ea715f2

See more details on using hashes here.

Provenance

The following attestation bundles were made for siglume_api_sdk-0.9.1-py3-none-any.whl:

Publisher: release.yml on taihei-05/siglume-api-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page