Integration guide
Call ServoSignal with ordinary HTTP and x402.
All paid routes accept JSON POST bodies, return JSON, and advertise fixed USDC prices through x402 v2.
Endpoints
| Route | Price | Use it for |
|---|---|---|
/v1/company/signals | $0.05 / 50,000 atomic | Fresh trigger-event detection |
/v1/company/deal-brief | $0.25 / 250,000 atomic | Default account-research brief |
/v1/company/deal-brief/deep | $0.75 / 750,000 atomic | Strategic-account research and planning |
Plain cURL challenge inspection
curl -i -X POST https://signal.servocenter.com/v1/company/signals \
-H 'content-type: application/json' \
--data '{"company":"hubspot.com","lookbackDays":90}'Expect HTTP 402 and inspect the PAYMENT-REQUIRED response header. Base mainnet USDC is required.
JavaScript x402 buyer
import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const signer = privateKeyToAccount(process.env.EVM_PRIVATE_KEY);
const client = new x402Client();
client.register("eip155:*", new ExactEvmScheme(signer));
const paidFetch = wrapFetchWithPayment(fetch, client);
const response = await paidFetch(
"https://signal.servocenter.com/v1/company/deal-brief",
{
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({
company: "hubspot.com",
seller: {
product: "Automated cloud cost optimization",
valueProposition: "Reduce unnecessary infrastructure spend",
idealCustomerProfile: "B2B software companies with 200+ employees"
}
})
}
);
console.log(await response.json());Python x402 buyer
import os
from eth_account import Account
from x402 import x402ClientSync
from x402.http.clients import x402_requests
from x402.mechanisms.evm import EthAccountSigner
from x402.mechanisms.evm.exact.register import register_exact_evm_client
client = x402ClientSync()
account = Account.from_key(os.environ["EVM_PRIVATE_KEY"])
register_exact_evm_client(client, EthAccountSigner(account))
with x402_requests(client) as session:
response = session.post(
"https://signal.servocenter.com/v1/company/signals",
json={"company": "hubspot.com", "lookbackDays": 90},
)
print(response.json())Successful response shape
{
"requestId": "...",
"company": { "name": "...", "domain": "..." },
"qualification": { "fitScore": 72, "fitLabel": "good", "reasons": [] },
"whyNow": [{ "reason": "...", "evidenceIds": ["source_1"] }],
"recommendedApproach": { "messageAngle": "...", "recommendedAction": "..." },
"sources": [{ "id": "source_1", "url": "https://..." }],
"freshness": { "generatedAt": "...", "lookbackDays": 90 }
}Error model
{
"error": {
"code": "INVALID_COMPANY",
"message": "Provide a valid company name or public domain.",
"requestId": "..."
}
}