Verify an external effect.
SelectAgent Verify reads a receiving system and compares its observed state with an immutable outcome contract. It returns verified, contradicted, or indeterminate. It never repeats the original provider write.
Connect to the hosted preview
Request free early access; no card is required. An operator provisions your key and connection after confirming repository authorization and data-handling requirements. There is no self-service account creation today. Recurring free usage and optional usage credits are planned; quota metering and credit purchases are not yet available. Requests do not trigger charges.
The hosted API is available to operator-issued keys at https://selectagent.ai/verify-api. Read the OpenAPI contract for request and response schemas. Onboarding provides a private API key, connection ID and authorized repository scope. Keep the key in your agent's server environment or a private local key file.
export SELECTAGENT_VERIFY_URL=https://selectagent.ai/verify-api export SELECTAGENT_VERIFY_KEY_FILE=/absolute/private/path/preview-api.key
Requests use Authorization: Bearer authentication. Use your provisioned connection ID and repository when registering a contract. The demo identifiers below belong only to the local fixture tutorial. The browser workbench uses synthetic data and never sends requests to your connected systems.
Local fixture tutorial · Node.js 24+
These commands run inside the SelectAgent repository. Source access is provided during onboarding. The demo initializes fictional provider data and writes a private API key file; it does not connect to GitHub.
cd services/verification npm ci npm run demo:init source .local/demo.env npm start
The server binds to 127.0.0.1:4319. Its OpenAPI contract is available at http://127.0.0.1:4319/openapi.json. This tutorial uses the local URL and fixture credentials independently of the hosted preview.
Register the intended outcome
In a second terminal, change to the same directory and run source .local/demo.env. Registration returns a contract ID and correlation marker. For real workflows, register before the original write and include that marker in the issue body.
curl -sS "$SELECTAGENT_VERIFY_URL/v1/contracts" -H "Authorization: Bearer $(cat "$SELECTAGENT_VERIFY_KEY_FILE")" -H 'Content-Type: application/json' --data '{
"connection_id": "demo",
"repository": "selectagent/demo",
"correlation_key": "case-lost-response",
"expected": {
"title": "Investigate customer report",
"required_labels": ["support"],
"state": "open"
},
"idempotency_key": "registration-001"
}'The lost-response fixture contains an issue whose creation response was lost. Registration describes the expected state; it does not create an issue.
Read the receiving system
Replace CONTRACT_ID with the returned ID. A new episode key requests a fresh observation. Reusing the same key retrieves the original timestamped result.
curl -sS "$SELECTAGENT_VERIFY_URL/v1/contracts/CONTRACT_ID/verify" -H "Authorization: Bearer $(cat "$SELECTAGENT_VERIFY_KEY_FILE")" -H 'Content-Type: application/json' --data '{"idempotency_key":"observation-001"}'When one matching issue satisfies the contract, the recovery instruction is to reuse it. A missing result is indeterminate. Neither observation authorizes another create call.
Connect an agent through MCP
The package includes an official-SDK stdio server. Configure the absolute path to services/verification/src/mcp.mjs, then provide the service URL and private key-file path through its environment. Run npm run mcp from the service directory after loading the demo environment. For a provisioned hosted preview, use https://selectagent.ai/verify-api as the service URL and your issued key-file path instead of the local values below.
{
"mcpServers": {
"selectagent-verify": {
"command": "node",
"args": ["/absolute/path/services/verification/src/mcp.mjs"],
"env": {
"SELECTAGENT_VERIFY_URL": "http://127.0.0.1:4319",
"SELECTAGENT_VERIFY_KEY_FILE": "/absolute/path/services/verification/.local/api.key"
}
}
}
}Use the actual key-file path written to .local/demo.env. Available tools are selectagent_register_contract, selectagent_verify_outcome, and selectagent_get_verification.
What this build establishes
The local service supports a fixture adapter and a read-only GitHub issue adapter. GitHub connections require operator-configured repository access and credentials. A bounded scan is not a global uniqueness guarantee, and a marker is correlation evidence rather than proof of who caused a write.
Verification checks only declared fields at an observation time. It does not establish that an engineering team accepted the escalation, a customer was notified, or the issue was resolved. Cross-system contracts and corrective writes require additional connector-specific implementation.
Try the interactive workbench ↗