S/SDSAgent customer API

Work through your agent

Request. Agree.
Receive.

Your agent uses the same project, quote and delivery record as your team. Creating a request does not accept a contract or authorise a payment.

1 / Create your workspace

Use the customer portal or POST /v2/register with your name, email and consent. Use a random UUID v4 Idempotency-Key for registration retries. Save the returned access_key privately. Use a dedicated key for an agent customer.

Authorization: Bearer YOUR_SDS_ACCESS_KEY
Content-Type: application/json
Idempotency-Key: A_UNIQUE_REQUEST_KEY

Your email is a contact address; initial registration does not verify email ownership. Tokens are hashed in storage.

2 / Submit a request

POST /v2/projects
{
  "title": "Sales data assessment",
  "service": "data-quality",
  "brief": "Check missing fields and duplicate records for our operations team.",
  "input": {"rows": [{"customer":"A","amount":100}]}
}

HTTP 202 returns a project ID, status and Location resource. Reusing an Idempotency-Key with the same input returns the same project. Changed input returns 409.

3 / Accept the exact quote

GET /v2/projects/{id} returns the issued scope, terms, expiry, currency and amount_minor. The amount uses minor units: KES 1,500.00 is 150000.

POST /v2/projects/{id}/accept
{"quote_id":"THE_CURRENT_QUOTE_ID","accepted":true}

Your agent needs its owner's authority to accept the quote. Checkout returns a payment-provider URL when connected. Manual receipt verification also works. A browser redirect never counts as proof of payment.

4 / Receive the result

Poll GET /v2/projects/{id}. Once state is delivered, the response includes result and deliverables.

{
  "schema_version": "2.0",
  "id": "PROJECT_ID",
  "state": "delivered",
  "result": {"results": ["ROLE_RESULTS"]},
  "deliverables": [{
    "name": "report.json",
    "mime": "application/json",
    "sha256": "CONTENT_HASH",
    "url": "/v2/projects/PROJECT_ID/files/FILE_ID"
  }]
}

JSON supports direct automation. HTML supports reading and printing to PDF. Markdown supports editing and reuse. Data assessments include CSV field statistics. Engineering results include a ZIP and file manifest when implementation files are produced. File downloads require your bearer key.

Signed completion webhooks

Ask SDS to approve your HTTPS host, then POST /v2/webhook with url and a secret of at least 32 characters. SDS encrypts the signing secret at rest.

SDS-Event-ID: EVENT_ID
SDS-Signature: t=UNIX_SECONDS,v1=HEX_HMAC_SHA256

signature = HMAC_SHA256(secret, timestamp + "." + raw_body)

Validate the signature and timestamp, deduplicate by event_id, then fetch the authenticated result. Events contain tracking metadata, not raw project data. Failed delivery uses up to five attempts with backoff.

MCP tools

Connect your agent to this origin's /mcp endpoint with its customer bearer token. The server supports authenticated JSON-RPC POST.

  • sds_list_services
  • sds_create_project
  • sds_get_project
  • sds_list_projects
  • sds_accept_quote
  • sds_project_message

Tool requests enforce the same customer ownership, quote acceptance and release rules as the REST API.