Skip to main content

SignalArc Agent API

SignalArc Agent API is a framework-neutral HTTP API for Arc Testnet YES/NO prediction market workflows. External agents can integrate through ordinary HTTP requests from any runtime: custom services, scripts, agent frameworks, chatbots, schedulers, dashboards, or internal tools. SignalArc handles the API surface, wallet and session records, durable intents, execution coordination, and read models. External agents own their prompt loop, user interaction, scheduling, messaging channel, and higher-level autonomous policy logic.

Base URLs

Health and schema checks:
For local development, set:

Security And Custody Boundaries

  • External agents never send private keys to SignalArc.
  • Public API responses must not expose Circle API keys, entity secrets, entitySecretCiphertext, credential paths, database URLs, deploy tokens, recovery files, or other backend secrets.
  • Keep your own API keys, wallet credentials, prompt secrets, and service tokens out of prompts, logs, repositories, and client-side code.
  • SignalArc Agent API does not support arbitrary transfers, withdrawals, swaps, deposits, or mainnet funding.
  • Current execution scope is ARC-TESTNET.
  • Existing smart contracts and ABIs remain unchanged.
  • Agent execution requires an active registered wallet and a configured backend wallet provider.
  • Production execution direction is backend-managed Circle Developer-Controlled Wallet API or direct Circle API integration. Circle CLI is only an old/manual/dev fallback and must not be treated as a production runtime dependency.

Agent Identity

agent_id is the stable caller-supplied identity for an external agent/user pair. Reuse the same value across onboarding, wallet registration, session reads, intent creation, confirmation, execution, portfolio, and activity. Validation rules:
  • Required where an agent identity is needed.
  • Must start with agent_.
  • Must be at least 10 characters long.
  • May contain ASCII letters, digits, underscores, and hyphens.
  • Must not be a generic placeholder.
Safe example:

Wallet And Session Model

Agent wallet records are SignalArc backend records keyed by agent_id. The current executable wallet provider is circle_agent_wallet. ARC-TESTNET is currently required for execution and faucet flows.

Supported Actions

amount is a positive decimal string. close_timestamp accepts UTC RFC3339 or unix-seconds strings.

Outcome Handling

resolve_market accepts yes, no, 1, or 2. Executor normalization:

Intent Lifecycle

Transaction actions follow a three-step lifecycle:
  1. POST /agent/intents creates a preview only and does not broadcast.
  2. POST /agent/intents/{intent_id}/confirm confirms the preview and returns an execution plan only.
  3. POST /agent/intents/{intent_id}/execute executes only a confirmed intent.
Calling execute before confirm returns 409 agent_intent_not_confirmed. Read endpoints:
  • GET /agent/intents/{intent_id} reads the current durable intent state.
  • GET /agent/intents/{intent_id}/executions lists execution attempts.

Idempotency

Intent creation supports idempotency with agent_id, source_client, and client_request_id. When durable storage is configured, repeating the same source_client + client_request_id for the same agent can return the existing intent instead of creating a duplicate.

Endpoint Summary

Curl Examples

Set shared variables:
For local development:
Health check:
Create market intent:
Confirm intent:
Execute intent:
Create buy_yes intent:
Create buy_no intent:
Create close_market intent:
Create resolve_market yes intent:
Create claim_payout intent:
Create cancel_market intent:
Create claim_refund intent:
Read intent and executions:
Read portfolio and activity:

Response Examples

Intent preview response:
Confirm response:
Execute response:

Read Models

GET /agent/portfolio/{agent_id} returns a compact portfolio view for a registered agent wallet. Current portfolio data is derived from durable Agent API records and current read models. Do not assume full live onchain wallet-indexed indexing unless a later release explicitly documents it. GET /agent/activity/{agent_id} returns recent intent and execution activity derived from durable records. GET /agent/intents/{intent_id}/executions returns execution attempts for one intent, including status, transaction hashes, readback JSON, and sanitized error fields when available.

Safety Model

  • agent_id validation rejects malformed or generic IDs.
  • allowed_actions enforcement gates preview, confirmation, and execution.
  • Execution requires a confirmed intent.
  • policy_metadata.max_trade_amount can reject buy amounts above wallet policy.
  • Provider errors are sanitized before they appear in logs, API responses, or durable execution records.
  • Execution is pinned to ARC-TESTNET.
  • Private keys and Circle secrets are not returned in API responses.

Error Catalog

Common validation examples:
  • 400 agent_intent_invalid: create_market omitted resolver or collateral_token.
  • 403 agent_policy_violation: buy amount exceeds policy_metadata.max_trade_amount.
  • 409 agent_intent_not_confirmed: execute was called before confirm.
  • 502 agent_execution_failed: sanitized wallet provider failure.

Local Docker Smoke Test Results

These are local Docker validation results. They validate backend integration behavior in the local environment and are not by themselves a production deployment certification. Validated local context: Action matrix passed locally: Final lifecycle actions returned HTTP 200 in backend logs. Earlier 400, 403, and 502 responses during local testing were expected validation, policy, or timing examples and were not final blockers. Selected local evidence:
  • 10 USDC buy_yes on market 0x2E68a7F1B09e67574b7d25277e78325b9798Fd2e produced readback.yes_positions: 10000000 and readback.total_collateral: 10000000.
  • close_market produced readback.is_open: false.
  • resolve_market with yes produced readback.claimable_payout: 10000000 and readback.has_claimed: false.
  • claim_payout produced readback.has_claimed: true.
  • cancel_market followed by claim_refund produced readback.claimable_refund: 1 and then readback.has_claimed: true.

Production Readiness Caveat

Before claiming production readiness, the team must:
  • audit the diff;
  • run backend tests;
  • run local smoke checks;
  • ensure production secrets are configured in a secret manager;
  • ensure production database migrations are current;
  • ensure local docker-compose overrides are not committed;
  • ensure Circle CLI is not a production runtime dependency;
  • deploy only after explicit approval.

OpenAPI

The Custom GPT action schema lives at:
The schema is useful for any HTTP client, not only Custom GPTs. Custom GPT-specific behavior belongs in integration instructions, not in the core API contract.

Known Limitations

  • API key enforcement, paid access, rate limits, and production SLA are not implemented.
  • Portfolio positions are derived from durable intent/execution records and current read models, not full live onchain wallet-indexed indexing.
  • Claimable/refundable eligibility remains limited until wallet-indexed claim/refund state is indexed.
  • Mainnet funding and Arc mainnet contract execution are not supported.
  • Behavior beyond the documented endpoints is unknown or not documented.