Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/geniusdecision-app:geniusdecision-app-cases-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Genius Decision — agent integration Cases API
version: 0.2.0
description: 'Genius bounded beta: HTTP agent integration subset. Public discovery; no-human-registration synthetic demo; automatic machine registration for synthetic/non-personal data; separate existing human-account keys. Machine Bearer keys are scoped, revocable and expire after 7 days (demo: 1 hour). Rotation only retains/reduces scopes. Human keys retain full account permissions. No MCP or OAuth. HTTP acceptance is distinct from formal admission and empirical evidence. Body limit 128 KiB; input limit 110000 JSON bytes. Declared choice profile: /static/decisions.html; explicit review and confirmation required. No general narrative solver or real-world CAG/PVS claim.'
servers:
- url: /
security:
- AccountBearer: []
tags:
- name: Cases
paths:
/api/cases:
get:
operationId: listGeniusCases
summary: List cases owned by the account
responses:
'200':
description: Success.
content:
application/json:
schema:
type: object
properties:
cases:
type: array
items:
$ref: '#/components/schemas/Case'
required:
- cases
default:
description: HTTP failure, not a motor result. 400 invalid input, 401 unauthorized, 403 origin/CSRF, 404 unavailable, 409 conflict/retry required, 413 size limit, 415 content type, 429 quota, 503 suspended/backup/storage unavailable.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
x-required-agent-scope: cases:read
tags:
- Cases
post:
operationId: createGeniusCase
summary: Persist a case; does not execute or prove admission
description: Not idempotent. After a lost response, inspect the case list before retrying. Input must be no more than 110000 bytes; full body at most 128 KiB.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateCase'
responses:
'201':
description: Case persisted.
content:
application/json:
schema:
$ref: '#/components/schemas/CaseEnvelope'
default:
description: HTTP failure, not a motor result. 400 invalid input, 401 unauthorized, 403 origin/CSRF, 404 unavailable, 409 conflict/retry required, 413 size limit, 415 content type, 429 quota, 503 suspended/backup/storage unavailable.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
x-required-agent-scope: cases:write
tags:
- Cases
/api/cases/{case_id}:
parameters:
- name: case_id
in: path
required: true
schema:
type: string
pattern: ^[a-f0-9]{32}$
get:
operationId: readGeniusCase
summary: Read case history, jobs and feedback
responses:
'200':
description: Success.
content:
application/json:
schema:
$ref: '#/components/schemas/CaseDetails'
default:
description: HTTP failure, not a motor result. 400 invalid input, 401 unauthorized, 403 origin/CSRF, 404 unavailable, 409 conflict/retry required, 413 size limit, 415 content type, 429 quota, 503 suspended/backup/storage unavailable.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
x-required-agent-scope: cases:read
tags:
- Cases
patch:
operationId: reviseGeniusCase
summary: Update title or store revised input
responses:
'200':
description: Success.
content:
application/json:
schema:
$ref: '#/components/schemas/CaseEnvelope'
default:
description: HTTP failure, not a motor result. 400 invalid input, 401 unauthorized, 403 origin/CSRF, 404 unavailable, 409 conflict/retry required, 413 size limit, 415 content type, 429 quota, 503 suspended/backup/storage unavailable.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
title:
type: string
minLength: 1
maxLength: 120
input:
oneOf:
- $ref: '#/components/schemas/HoursInput'
- $ref: '#/components/schemas/FdqInput'
minProperties: 1
additionalProperties: false
description: Input must match the existing case profile. Send a complete replacement input. A changed input creates a revision but does not execute it.
x-required-agent-scope: cases:write
tags:
- Cases
delete:
operationId: deleteGeniusCase
summary: Delete an owned case
description: Destructive. Automatic machine keys require the optional cases:delete scope.
x-required-agent-scope: cases:delete
responses:
'204':
description: Deleted.
default:
description: HTTP failure, not a motor result. 400 invalid policy/scopes/input; 401 missing/revoked/expired credential; 403 missing permission; 409 changed policy; 429 shared quota; 503 paused/backup/registration unavailable.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
tags:
- Cases
/api/cases/{case_id}/run:
parameters:
- name: case_id
in: path
required: true
schema:
type: string
pattern: ^[a-f0-9]{32}$
post:
operationId: runGeniusCase
summary: Queue an owned case revision or recover its existing job
description: Omitted revision uses current_revision. Queued/running/completed jobs of the same revision are reused. A failed/cancelled/interrupted attempt requires explicit retry:true. An active job on another revision can conflict.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
revision:
type: integer
minimum: 1
retry:
type: boolean
default: false
responses:
'200':
description: Existing completed job.
content:
application/json:
schema:
$ref: '#/components/schemas/JobEnvelope'
'202':
description: Queued or running.
content:
application/json:
schema:
$ref: '#/components/schemas/JobEnvelope'
default:
description: HTTP failure, not a motor result. 400 invalid input, 401 unauthorized, 403 origin/CSRF, 404 unavailable, 409 conflict/retry required, 413 size limit, 415 content type, 429 quota, 503 suspended/backup/storage unavailable.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
x-required-agent-scope: jobs:run
tags:
- Cases
components:
schemas:
CaseDetails:
type: object
properties:
case:
$ref: '#/components/schemas/Case'
revisions:
type: array
items:
type: object
properties:
version:
type: integer
input:
type: object
input_json:
type: string
input_sha256:
type: string
created_at:
type: integer
required:
- version
- input
- input_json
- input_sha256
- created_at
jobs:
type: array
items:
$ref: '#/components/schemas/Job'
feedback:
type: array
items:
type: object
required:
- case
- revisions
- jobs
- feedback
CaseEnvelope:
type: object
properties:
case:
$ref: '#/components/schemas/Case'
required:
- case
FdqInput:
type: object
properties:
permission_confirmed:
const: true
description: Explicit authority to process the submitted data; not an assertion of human consent on someone's behalf.
scope_acknowledged:
const: true
description: Explicit acknowledgment of the bounded, low-risk profile.
evidence_origin:
type: string
enum:
- synthetic
- user_declared
description: A declaration, not verified field evidence.
query_kind:
enum:
- frontier
- selector
input_json:
type: string
minLength: 2
maxLength: 110000
result_json:
type: string
minLength: 2
maxLength: 110000
certificate_json:
type: string
minLength: 2
maxLength: 110000
required:
- permission_confirmed
- scope_acknowledged
- query_kind
- input_json
- result_json
- certificate_json
CreateCase:
oneOf:
- type: object
properties:
title:
type: string
minLength: 1
maxLength: 120
consumer_type:
enum:
- human
- application
- agent
description: Caller declaration only. Use agent or application for an integration.
profile:
const: hours
input:
$ref: '#/components/schemas/HoursInput'
required:
- title
- profile
- input
- type: object
properties:
title:
type: string
minLength: 1
maxLength: 120
consumer_type:
enum:
- human
- application
- agent
description: Caller declaration only. Use agent or application for an integration.
profile:
const: fdq
input:
$ref: '#/components/schemas/FdqInput'
required:
- title
- profile
- input
- type: object
properties:
title:
type: string
minLength: 1
maxLength: 120
consumer_type:
enum:
- human
- application
- agent
description: Caller declaration only. Use agent or application for an integration.
profile:
const: choice
input:
$ref: '#/components/schemas/ChoiceInput'
required:
- title
- profile
- input
description: Automatically registered agents always use consumer_type agent (defaulted by the server); human or application is rejected for these principals. Their data policy is synthetic/non-personal only.
Job:
type: object
properties:
id:
type: string
case_id:
type: string
revision:
type: integer
status:
enum:
- queued
- running
- completed
- failed
- cancelled
- interrupted
error:
type:
- string
- 'null'
created_at:
type: integer
started_at:
type:
- integer
- 'null'
finished_at:
type:
- integer
- 'null'
result:
type:
- object
- 'null'
description: Preserve the complete response envelope. See full documentation for RC01 semantics.
result_json:
type:
- string
- 'null'
description: Original result JSON text; preserve exactly to avoid numeric rounding.
admission:
type:
- object
- 'null'
artifacts:
type:
- object
- 'null'
properties:
url:
type: string
sha256:
type: string
size:
type: integer
required:
- id
- case_id
- revision
- status
- result
- result_json
HoursInput:
type: object
properties:
permission_confirmed:
const: true
description: Explicit authority to process the submitted data; not an assertion of human consent on someone's behalf.
scope_acknowledged:
const: true
description: Explicit acknowledgment of the bounded, low-risk profile.
evidence_origin:
type: string
enum:
- synthetic
- user_declared
description: A declaration, not verified field evidence.
assignments:
type: array
minItems: 1
maxItems: 100
items:
type: object
properties:
id:
type: string
pattern: ^[A-Za-z0-9_-]+$
maxLength: 64
minLength: 1
credit:
type:
- string
- 'null'
minLength: 1
maxLength: 64
description: Exact nonnegative integer, decimal or fraction; no exponent. null means unknown.
required:
- id
target:
type:
- string
- 'null'
minLength: 1
maxLength: 64
description: Exact nonnegative numeric string, or null for unknown.
required:
- assignments
- permission_confirmed
- scope_acknowledged
Case:
type: object
properties:
id:
type: string
title:
type: string
profile:
enum:
- hours
- fdq
- choice
consumer_type:
type: string
current_revision:
type: integer
created_at:
type: integer
updated_at:
type: integer
required:
- id
- title
- profile
- consumer_type
- current_revision
- created_at
- updated_at
Error:
type: object
properties:
error:
type: object
properties:
code:
type: string
message:
type: string
required:
- code
- message
required:
- error
ChoiceInput:
type: object
properties:
context:
type: object
properties:
question:
type: string
minLength: 1
maxLength: 600
category:
enum:
- leisure
- personal_organization
horizon:
type: string
minLength: 1
maxLength: 100
required:
- question
- category
- horizon
additionalProperties: false
criteria:
type: array
minItems: 1
maxItems: 5
items:
type: object
properties:
id:
type: string
pattern: ^[A-Za-z][A-Za-z0-9_]{0,31}$
label:
type: string
minLength: 1
maxLength: 60
unit:
type: string
minLength: 1
maxLength: 30
direction:
enum:
- min
- max
limit:
type:
- string
- 'null'
pattern: ^(?:0|[1-9][0-9]*)(?:\.[0-9]+|/[1-9][0-9]*)?$
maxLength: 32
description: Nonnegative exact quantity <= 1000000, denominator <= 1000000; null stays unknown.
required:
- id
- label
- unit
- direction
- limit
additionalProperties: false
alternatives:
type: array
minItems: 2
maxItems: 8
items:
type: object
properties:
id:
type: string
pattern: ^[A-Za-z][A-Za-z0-9_]{0,31}$
label:
type: string
minLength: 1
maxLength: 80
source:
type: string
minLength: 1
maxLength: 200
values:
type: object
additionalProperties:
type:
- string
- 'null'
pattern: ^(?:0|[1-9][0-9]*)(?:\.[0-9]+|/[1-9][0-9]*)?$
maxLength: 32
description: Nonnegative exact quantity <= 1000000, denominator <= 1000000; null stays unknown.
description: Exactly one entry per declared criterion ID; same unit for every alternative.
required:
- id
- label
- source
- values
additionalProperties: false
selection:
type: object
properties:
mode:
enum:
- unique
- lexicographic
criteria_order:
type: array
items:
type: string
pattern: ^[A-Za-z][A-Za-z0-9_]{0,31}$
maxItems: 5
uniqueItems: true
description: Empty for unique; permutation of all criteria for lexicographic.
required:
- mode
- criteria_order
additionalProperties: false
model_confirmation:
type: string
pattern: ^[a-f0-9]{64}$
description: Digest from review, bound to all model fields, confirmed by the decision owner.
permission_confirmed:
const: true
scope_acknowledged:
const: true
evidence_origin:
enum:
- synthetic
- user_declared
required:
- context
- criteria
- alternatives
- selection
- model_confirmation
- permission_confirmed
- scope_acknowledged
- evidence_origin
additionalProperties: false
JobEnvelope:
type: object
properties:
job:
$ref: '#/components/schemas/Job'
required:
- job
securitySchemes:
AccountBearer:
type: http
scheme: bearer
description: HTTPS Authorization Bearer only. ga_ machine credentials carry enforced scopes and expiry for their own isolated space. gb_ human-account API keys retain full-account access. Neither is a JWT. No key in a query string.
externalDocs:
description: Full API contract and limitations
url: https://geniusdecision.app/static/api.html
x-genius-mcp-available: true
x-genius-credential-scope:
human: full-account
automatic_agent: enforced-scopes-and-expiry
x-genius-client-safety:
human_consent_never_inferred: true
automatic_agent_data_policy: synthetic_or_non_personal_only
synthetic_examples_are_not_empirical_evidence: true
no_automatic_write_retries: true
x-genius-mcp:
url: /mcp
transport: streamable-http
protocol_versions:
- '2026-07-28'
- '2025-11-25'
- '2025-06-18'
- '2025-03-26'
public_tools:
- get_capabilities
- read_demo_result
- run_demo
private_authentication: scoped-machine-bearer-header
oauth: false
x-genius-saved-demo:
json: /static/demo-result.json
html: /static/demo.html
live_execution_on_get: false
evidence_origin: synthetic