{
  "spec": {
    "scheme": "agent-presence",
    "name": "Agent Presence",
    "spec_version": "0.2",
    "bundle_schema_version": "0.1"
  },
  "business": {
    "id": "alabama-math-clinic",
    "name": "The Alabama Math Clinic"
  },
  "canonical_url": "https://alabama-math-clinic.com/",
  "describes": "https://alabama-math-clinic.com/.well-known/business-capabilities.json",
  "mode": "request-only",
  "generated_at": "2026-09-01T21:35:41.837Z",
  "endpoint": {
    "url": "https://alabama-math-clinic.com/interactions/request",
    "method": "POST",
    "content_type": "application/json"
  },
  "authorization": {
    "scheme": "shared-key",
    "required": true,
    "applies_to": [
      "ask-about-the-clinic"
    ],
    "how_to_obtain": "Authorization is granted by the business owner out of band. Unauthorized requests are refused and recorded.",
    "envelope_fields": [
      "agent_id",
      "agent_key",
      "interaction_id",
      "idempotency_key",
      "input"
    ],
    "open": {
      "interactions": [
        "check-we-can-help",
        "request-a-consultation"
      ],
      "required": false,
      "how_to_obtain": "Nothing to obtain. Send the envelope without agent_key. Supply any stable agent_id so the request can be traced and deduplicated; it is recorded as unverified and is never treated as proof of identity.",
      "envelope_fields": [
        "agent_id",
        "interaction_id",
        "idempotency_key",
        "input"
      ],
      "cannot": "An open interaction is answered from published claims or queued for a person. It can never commit the business, and it grants no access to the proposal path."
    }
  },
  "qualification": {
    "claim_id": "claim:alabama-math-clinic:fit-criteria",
    "decided_by": "published_criteria",
    "accepts": [
      {
        "claim_id": "consultation",
        "label": "Initial consultation",
        "recognises": [
          "initial",
          "consultation",
          "ninety-minute",
          "unpaid",
          "visit",
          "student",
          "through",
          "recent",
          "mathematics",
          "while",
          "tutor",
          "observes",
          "charge",
          "obligation"
        ]
      },
      {
        "claim_id": "foundations",
        "label": "Elementary foundations and students well behind",
        "recognises": [
          "elementary",
          "foundations",
          "students",
          "well",
          "behind",
          "number",
          "sense",
          "place",
          "value",
          "fractions",
          "repair",
          "lost",
          "year",
          "math"
        ]
      },
      {
        "claim_id": "school",
        "label": "Secondary and advanced school mathematics",
        "recognises": [
          "secondary",
          "advanced",
          "school",
          "mathematics",
          "pre-algebra",
          "through",
          "algebra",
          "geometry",
          "precalculus",
          "calculus",
          "statistics",
          "tutor",
          "birmingham",
          "alabama"
        ]
      },
      {
        "claim_id": "competition",
        "label": "Competition and tournament coaching",
        "recognises": [
          "competition",
          "tournament",
          "coaching",
          "mathcounts",
          "aime",
          "state",
          "tournaments",
          "problem-solving",
          "discipline",
          "rather",
          "accelerated",
          "homework",
          "alabama",
          "coach"
        ]
      },
      {
        "claim_id": "university",
        "label": "University mathematics",
        "recognises": [
          "university",
          "mathematics",
          "calculus",
          "linear",
          "algebra",
          "differential",
          "equations",
          "undergraduates",
          "arrived",
          "underprepared",
          "online",
          "help",
          "tutor",
          "college"
        ]
      },
      {
        "claim_id": "postgraduate",
        "label": "Postgraduate support",
        "recognises": [
          "postgraduate",
          "support",
          "qualifying",
          "examination",
          "preparation",
          "analysis",
          "abstract",
          "algebra",
          "statistics",
          "research",
          "programme",
          "assumes",
          "taken",
          "personally"
        ]
      },
      {
        "claim_id": "online",
        "label": "Online tuition",
        "recognises": [
          "online",
          "tuition",
          "weekly",
          "session",
          "delivered",
          "shared",
          "whiteboard",
          "available",
          "anywhere",
          "world",
          "math",
          "tutor",
          "remote",
          "calculus"
        ]
      }
    ],
    "declines": [],
    "geography": {
      "remote": true,
      "named_markets": [],
      "note": "Served regardless of location. No local market is published because none limits the work."
    },
    "note": "These are the criteria the service_fit_check applies. An agent can evaluate them itself and never file a request."
  },
  "idempotency": {
    "required": true,
    "field": "idempotency_key",
    "scope": "per agent",
    "behavior": "Replaying a key with the same body returns the original receipt. Reusing it with a different body is refused."
  },
  "interactions": [
    {
      "id": "check-we-can-help",
      "kind": "service_fit_check",
      "capability_id": "consultation",
      "capability_name": "Initial consultation",
      "authorization": "open",
      "answered": "immediately, from published claims",
      "input_schema": {
        "need": {
          "type": "string",
          "required": true,
          "max_length": 500
        },
        "location": {
          "type": "string",
          "required": false,
          "max_length": 200
        }
      }
    },
    {
      "id": "ask-about-the-clinic",
      "kind": "information_request",
      "capability_id": "school",
      "capability_name": "Secondary and advanced school mathematics",
      "authorization": "issued-key",
      "answered": "by a human, after review",
      "input_schema": {
        "question": {
          "type": "string",
          "required": true,
          "max_length": 2000
        },
        "contact": {
          "type": "string",
          "required": true,
          "max_length": 300
        }
      }
    },
    {
      "id": "request-a-consultation",
      "kind": "consultation_request",
      "capability_id": "consultation",
      "capability_name": "Initial consultation",
      "authorization": "open",
      "answered": "by a human, after review",
      "input_schema": {
        "name": {
          "type": "string",
          "required": true,
          "max_length": 200
        },
        "contact": {
          "type": "string",
          "required": true,
          "max_length": 300
        },
        "topic": {
          "type": "string",
          "required": true,
          "max_length": 1000
        },
        "preferred_times": {
          "type": "string",
          "required": false,
          "max_length": 500
        }
      }
    }
  ],
  "receipts": {
    "issued_for": "every accepted request",
    "fields": [
      "receipt_id",
      "kind",
      "request_hash",
      "received_at",
      "source_revision",
      "status"
    ],
    "statuses": [
      "answered_from_published_claims",
      "queued_for_human",
      "answered_by_human"
    ],
    "read": {
      "url": "https://alabama-math-clinic.com/interactions/requests/{receipt_id}",
      "method": "GET",
      "parameters": {
        "agent_id": "the agent_id that filed the request"
      },
      "authorization": "The receipt_id, which is unguessable, together with the agent_id that filed it. Holding the receipt is the only proof the open tier has; it identifies a request, not an agent, and grants nothing else.",
      "covers": "requests queued for a person. A request answered from published claims carried its answer in the original response and is not stored to be re-read.",
      "returns": "the request's status, and once a person has answered it, their answer and when they gave it. The input you sent is never echoed back.",
      "polling": "Check back rather than filing again. A second request under a new idempotency_key is a second person to answer, not a reminder."
    },
    "reply": {
      "url": "https://alabama-math-clinic.com/interactions/requests/{receipt_id}/reply",
      "method": "POST",
      "envelope_fields": [
        "agent_id",
        "idempotency_key",
        "reply"
      ],
      "authorization": "The same as the readback: the receipt_id together with the agent_id that filed it. It grants nothing further.",
      "effect": "Appends your message to the same request and queues the person who answered it. It never creates a second request, and it can never commit the business.",
      "limits": "At most 6 replies per request, 2000 characters each. Replaying an idempotency_key returns the same state instead of sending the message twice."
    }
  },
  "will_never": [
    "negotiate price or terms",
    "issue a quote or an invoice",
    "confirm availability, stock, or a schedule",
    "accept payment or payment details",
    "create a binding commitment of any kind",
    "send communication on the business's behalf"
  ],
  "will_never_scope": "the interaction endpoint at https://alabama-math-clinic.com/interactions/request",
  "refusals": {
    "documented": true,
    "codes": [
      "UNAUTHORIZED",
      "AGENT_REVOKED",
      "UNKNOWN_INTERACTION",
      "INTERACTION_REVOKED",
      "BAD_IDEMPOTENCY_KEY",
      "IDEMPOTENCY_CONFLICT",
      "INVALID_INPUT",
      "BAD_ENVELOPE"
    ],
    "note": "Every refusal is recorded in the business's audit trail with the requesting agent id."
  },
  "scheme": "agent-presence",
  "spec_version": "0.2"
}
