{"generatedAt":"2026-10-03T18:49:40.713Z","product":{"slug":"ai-location","name":"AI & Location","summary":"AI/ML APIs, vision, location-aware agents, ranking, and natural-language spatial workflows.","stateModel":"hybrid","platforms":["REST","Web","MCP"],"auth":{"type":"Underlying product credential, held by the tool server","guidance":"Never place keys or tokens in model context. Use the exact current or legacy authentication generation required by each underlying product, execute typed policy-checked tools on a trusted server, and redact precise coordinates and credential-bearing URLs from logs."}},"ownership":{"classification":"hybrid-provider-application","boundary":"AI & Location combines request/response capabilities with durable sessions, workspaces, releases, reviews, or agent runs. Persist the business journey independently from any one provider response.","applicationRule":"The application owns business identity, expected version, command idempotency, evidence receipts, audit, reconciliation, and downstream side effects even when Mappls owns provider resource state."},"coverage":{"slug":"ai-location","name":"AI & Location","stateModel":"hybrid","ownership":"hybrid-provider-application","accent":"#845ef7","journeyCount":2,"boundary":"AI & Location combines request/response capabilities with durable sessions, workspaces, releases, reviews, or agent runs. Persist the business journey independently from any one provider response.","aggregates":["agent run","vision evidence case"],"journeySlugs":["governed-spatial-agent-run","vision-inference-review"],"sampleSlugs":["spatial-agent","vision-evidence-desk"],"tutorialSlugs":["mappls-mcp-agent","a2a-solution-coordination","mcp-client-identity","ios-sdk-production-readiness"],"useCaseSlugs":["insurance-claims"],"contractSlugs":["core-location-get-api-places-search-json-autosuggest-api","core-location-get-api-places-nearby-json-nearby-api","core-location-get-rest-key-resources-profile-geopositions-routing-api","intouch-get-devices-gets-the-live-data-of-devices","skydnn-ai-get-server-whoami-returns-the-current-models-in-port","skydnn-ai-get-models-api-model-key-returns-the-details-of-provided-model","skydnn-ai-post-predict-returns-the-prediction-as-response-in-form-of-json"],"sourceGuideSlugs":["mappls-rest-apis","mappls-intouch-rest-apis","skydnn-aiapi-docs"],"totals":{"states":15,"transitions":14,"failurePlans":10,"durableRecords":11,"operationalSignals":14}},"controlLayers":[{"id":"identity","title":"Identity and aggregate boundary","question":"What durable thing is being operated?","implementation":"Use stable business and provider identifiers for agent run, vision evidence case; never infer identity from display text or the latest coordinates.","proof":"Duplicate creation, resource rebinding, tenant isolation, and retirement tests."},{"id":"authority","title":"Actor authority","question":"Who may advance each transition?","implementation":"Authorize every command against the named journey actors: Application user, Agent planner, Human approver, Execution service, Mappls MCP server, Asset steward, Vision worker, Policy service, Independent reviewer, Privacy worker, Mappls SkyDNN API. Persist the attributable actor, tenant, purpose, and policy decision.","proof":"Role, resource, tenant, purpose, and human-approval denial tests."},{"id":"commands","title":"Commands and concurrency","question":"How are retries and races made safe?","implementation":"Require a command idempotency key and expected aggregate version. Cache the canonical result, reject key reuse with different intent, and reconcile ambiguous timeouts before retry.","proof":"Exact replay, stale-version rejection, concurrent-writer, timeout, and restart tests."},{"id":"evidence","title":"Evidence and durable records","question":"What proves each state?","implementation":"Persist immutable receipts and revisions around these catalog records: Agent run, Plan manifest, Approval grant, Tool evidence, Grounded result, Vision case, Asset envelope, Model lock, Inference attempt, Review and retention, Audit and outbox. Keep event time, receipt time, source identity, hashes, and retention policy separate.","proof":"Missing, malformed, late, duplicate, conflicting, and redacted-evidence tests."},{"id":"events","title":"Events and side effects","question":"How do downstream systems learn what committed?","implementation":"Commit aggregate state, audit, and a transactional outbox together. Sign deliveries, bound retries, dead-letter exhaustions, and preserve delivery attempts without changing business history.","proof":"Atomic commit, signature, retry, lease fencing, dead-letter, replay, and ordering tests."},{"id":"recovery","title":"Recovery and reconciliation","question":"What happens when systems disagree?","implementation":"Treat timeouts as unknown outcomes, poll or consume authoritative evidence, compare versions, append a reconciliation decision, and use compensation instead of destructive history edits.","proof":"Provider timeout, callback-before-response, delayed event, outage, restart, and manual-recovery drills."},{"id":"privacy","title":"Privacy and human control","question":"Which data and decisions are sensitive?","implementation":"Minimize precise location and media, scope retention, redact derived data deliberately, and require attributable approval for dispatch, publication, access, closure, and destructive change where consequential.","proof":"Least-privilege, consent expiry, separation-of-duties, retention, export, revocation, and redaction tests."},{"id":"operations","title":"Operations and release","question":"Can operators see and recover the journey?","implementation":"Expose state age, source freshness, stuck commands, retries, reconciliation lag, outbox depth, terminal outcomes, and per-aggregate audit. Roll out behind explicit acceptance gates.","proof":"SLO alerts, support lookup, bulk reconciliation, rollback, backup restore, regional failover, and incident drills."}],"journeys":[{"slug":"governed-spatial-agent-run","title":"Governed spatial agent run","eyebrow":"Mappls MCP · approval-bound tool orchestration","productSlug":"ai-location","stateModel":"stateful","summary":"Turn a natural-language spatial objective into an inspectable plan, obtain an exact least-privilege approval, execute allow-listed Mappls tools, and cite provider evidence without exposing credentials to the model.","aggregate":"agent run","actors":["Application user","Agent planner","Human approver","Execution service","Mappls MCP server"],"sourceGuideSlugs":["mappls-rest-apis","mappls-intouch-rest-apis"],"contractSlugs":["core-location-get-api-places-search-json-autosuggest-api","core-location-get-api-places-nearby-json-nearby-api","core-location-get-rest-key-resources-profile-geopositions-routing-api","intouch-get-devices-gets-the-live-data-of-devices"],"sampleSlug":"spatial-agent","states":[{"id":"asked","label":"Asked","meaning":"A stable run records the user's objective, scenario, actor, tenant, purpose, and bounded inputs before any provider access.","recovery":"Replay creation by client command identity and never create a second run merely because a response timed out."},{"id":"planned","label":"Planned","meaning":"A schema-valid allow-listed dependency graph, risk class, scopes, argument bounds, and canonical plan hash are available for inspection.","recovery":"Treat any change as a new plan version and invalidate prior approvals rather than editing an approved plan in place."},{"id":"approved","label":"Approved","meaning":"An attributable person approved the exact plan hash, every required scope, purpose, data boundary, policy version, and expiry.","recovery":"If scope, plan, policy, or context changes, expire the grant and request a fresh independent approval."},{"id":"executing","label":"Executing","meaning":"A service-side lease owns execution and calls each Mappls tool only after dependencies and authorization are satisfied.","recovery":"Reconcile ambiguous provider outcomes by stable request identity before retrying any step with side effects."},{"id":"completed","label":"Completed","meaning":"The grounded answer, structured outputs, exact tool evidence, provenance, citations, cost, and terminal audit event are committed.","recovery":"Corrections create a linked run or derived answer revision; they do not rewrite executed evidence.","terminal":true},{"id":"rejected","label":"Rejected","meaning":"A named approver denied the proposed plan with an attributable reason and no provider calls occurred.","recovery":"Revise the objective or reduce risk and scopes in a new plan; never silently resubmit the same grant.","terminal":true},{"id":"failed","label":"Failed","meaning":"Execution stopped with a typed, secret-safe error and retained evidence for every completed step.","recovery":"Classify retryability, reconcile completed calls, and create a linked retry attempt when policy permits.","terminal":true}],"transitions":[{"command":"ask","actor":"Application user","from":[],"to":"asked","event":"agent.question_received","idempotency":"Use a client-generated run command ID across network retries."},{"command":"create_plan","actor":"Agent planner","from":["asked"],"to":"planned","event":"agent.plan_created","idempotency":"Canonical objective, policy, planner version, and normalized plan produce one immutable hash."},{"command":"approve_plan","actor":"Human approver","from":["planned"],"to":"approved","event":"agent.plan_approved","idempotency":"Bind approver decision to run version, exact plan hash, scopes, purpose, and expiry."},{"command":"reject_plan","actor":"Human approver","from":["planned"],"to":"rejected","event":"agent.plan_rejected","idempotency":"Persist the review decision and reason under one command identity."},{"command":"start_execution","actor":"Execution service","from":["approved"],"to":"executing","event":"agent.execution_started","idempotency":"Acquire one lease only after recalculating plan hash and rechecking approval, scopes, expiry, and policy."},{"command":"complete_execution","actor":"Execution service","from":["executing"],"to":"completed","event":"agent.execution_completed","idempotency":"Commit terminal result, citations, audit, and outbox against the execution attempt identity."}],"invariants":["The model never receives Mappls or customer credentials.","Only schema-valid allow-listed tools and bounded arguments can enter a plan.","Approval names the canonical immutable plan hash and every required scope.","An expired, superseded, partially scoped, or self-approved plan cannot execute.","Every factual provider claim is traceable to retained Mappls provenance.","Tool failures and persisted evidence never expose secrets."],"records":[{"name":"Agent run","purpose":"Durable objective, lifecycle, version, risk, actor, tenant, and purpose boundary.","keyFields":["runId","state","version","tenantId","question","risk"]},{"name":"Plan manifest","purpose":"Canonical tool graph, dependencies, arguments, requested scopes, and integrity identity.","keyFields":["planVersion","planHash","plannerVersion","steps","requiredScopes","policyVersion"]},{"name":"Approval grant","purpose":"Independent attributable authority for one exact plan and bounded time window.","keyFields":["planHash","approvedBy","approvedScopes","purpose","approvedAt","expiresAt"]},{"name":"Tool evidence","purpose":"Resolved arguments, structured response, provider provenance, status, timing, and stable request identity.","keyFields":["toolCallId","stepId","tool","requestId","provenance","completedAt"]},{"name":"Grounded result","purpose":"Answer and machine-readable outputs with per-step citations and inference labels.","keyFields":["runId","answer","citations","generatedAt","modelVersion"]}],"failures":[{"trigger":"Prompt or retrieved content asks for an unapproved tool","detection":"The proposed tool, scope, host, or argument is absent from the validated plan policy.","recovery":"Reject the plan or stop execution and surface the exact policy denial for human review."},{"trigger":"Plan changes after approval","detection":"Recomputed canonical hash differs from the approved plan hash.","recovery":"Refuse execution, append a tamper or supersession event, and require a new review."},{"trigger":"Provider call succeeds but the worker loses its response","detection":"Execution lease expires with an ambiguous step and stable request identity.","recovery":"Reconcile by provider or application request identity before retrying, especially for side-effecting tools."},{"trigger":"Tool output lacks provenance or contains a secret","detection":"Response-envelope validation or redaction policy fails.","recovery":"Quarantine the output, stop the run safely, rotate any exposed secret, and retain only a sanitized incident record."}],"observability":["Runs and time spent in asked, planned, approved, and executing states","Approval, rejection, expiry, and scope-reduction rate by risk class","Plan hash mismatch, policy denial, and prompt-injection detection","Tool latency, quota, retry, reconciliation, and cost by operation","Provider provenance and citation coverage","Sensitive-location access by tenant, actor, purpose, and retention class","Execution leases, orphaned attempts, outbox backlog, and restart recovery"],"website":"/journeys/governed-spatial-agent-run"},{"slug":"vision-inference-review","title":"Governed SkyDNN inference review","eyebrow":"SkyDNN AI · synchronous inference, durable evidence","productSlug":"ai-location","stateModel":"stateful","summary":"Lock an entitled model to an immutable asset identity, call the documented synchronous prediction boundary, validate geometry and confidence, require independent review, and redact derived detections on schedule.","aggregate":"vision evidence case","actors":["Asset steward","Vision worker","Policy service","Independent reviewer","Privacy worker","Mappls SkyDNN API"],"sourceGuideSlugs":["skydnn-aiapi-docs"],"contractSlugs":["skydnn-ai-get-server-whoami-returns-the-current-models-in-port","skydnn-ai-get-models-api-model-key-returns-the-details-of-provided-model","skydnn-ai-post-predict-returns-the-prediction-as-response-in-form-of-json"],"sampleSlug":"vision-evidence-desk","states":[{"id":"registered","label":"Registered","meaning":"The application owns a purpose-bound case with opaque asset identity, SHA-256 content hash, media facts, capture time, location context, lawful-basis reference, and retention deadline.","recovery":"Reject raw media, URLs, credentials, sensitive labels, or incomplete authority before a provider call is possible."},{"id":"model_locked","label":"Model locked","meaning":"An entitled server-discovery result and one exact API model key, fingerprint, class vocabulary, and policy version are frozen for the case.","recovery":"Model drift creates a new lock and inference attempt; never reinterpret an old response under current metadata."},{"id":"inference_requested","label":"Inference requested","meaning":"One worker owns an idempotent synchronous provider-call attempt against the exact asset and model identities.","recovery":"An ambiguous transport outcome remains unresolved until reconciled or deliberately retried as a linked attempt."},{"id":"inferred","label":"Inferred","meaning":"A schema-valid provider response has normalized labels, confidence, bounded geometry, timing, provenance, and response hash without becoming a business decision.","recovery":"Malformed or unsafe output fails closed and retains only a safe error class plus hashes."},{"id":"review_pending","label":"Review pending","meaning":"Versioned policy places the immutable result in an uncertainty, sensitive-class, or mandatory-sampling review lane.","recovery":"Reassign under SLA without altering the model output, thresholds, or reason codes."},{"id":"accepted","label":"Accepted","meaning":"An independent reviewer accepted the derived evidence for the declared purpose and exact policy/model/output versions.","recovery":"Corrections create a linked revision or new case rather than rewriting inference or decision evidence.","terminal":true},{"id":"rejected","label":"Rejected","meaning":"An independent reviewer rejected the result with an attributable reason while retaining the immutable provider evidence.","recovery":"A new capture or model produces a linked case or attempt; rejection is never overwritten.","terminal":true},{"id":"redacted","label":"Redacted","meaning":"Derived labels and geometry were removed at the retention deadline while the minimum decision, hashes, policy, and audit record remain.","recovery":"Redaction is irreversible in the application store; a renewed purpose requires new source evidence.","terminal":true}],"transitions":[{"command":"register_case","actor":"Asset steward","from":[],"to":"registered","event":"vision.case_registered","idempotency":"One external reference and asset hash map to one case across retries."},{"command":"lock_model","actor":"Vision worker","from":["registered"],"to":"model_locked","event":"vision.model_locked","idempotency":"Server reference, model key, metadata fingerprint, and policy version identify one lock."},{"command":"request_inference","actor":"Vision worker","from":["model_locked"],"to":"inference_requested","event":"vision.inference_requested","idempotency":"One attempt identity binds the case version, asset hash, model fingerprint, and request policy."},{"command":"record_inference","actor":"Vision worker","from":["inference_requested"],"to":"inferred","event":"vision.inference_recorded","idempotency":"Provider status and response hash close one active attempt exactly once."},{"command":"submit_review","actor":"Policy service","from":["inferred"],"to":"review_pending","event":"vision.review_requested","idempotency":"Thresholds, reason codes, policy version, and attempt identity create one immutable review request."},{"command":"accept","actor":"Independent reviewer","from":["review_pending"],"to":"accepted","event":"vision.accepted","idempotency":"Reviewer, reason, policy, attempt, and expected aggregate version identify the terminal decision."},{"command":"reject","actor":"Independent reviewer","from":["review_pending"],"to":"rejected","event":"vision.rejected","idempotency":"Reviewer, reason, policy, attempt, and expected aggregate version identify the terminal decision."},{"command":"redact","actor":"Privacy worker","from":["inferred","review_pending","accepted","rejected"],"to":"redacted","event":"vision.redacted","idempotency":"One retention action removes derived detail while preserving the minimum integrity and audit record."}],"invariants":["No image bytes, media URL, bearer token, credential, face, number plate, or provider-internal file path enters the reference case store.","The provider POST /predict call is synchronous; application queue, review, retry, decision, and retention states are never attributed to SkyDNN.","Every attempt binds an immutable asset hash to one discovered model fingerprint and policy version.","Confidence and geometry are evidence, not a business outcome or live safety command.","Reviewer identity is independent from the fixture inference actor and every override or rejection has a reason.","Idempotency, optimistic versions, audit, receipts, and outbox commit atomically."],"records":[{"name":"Vision case","purpose":"Business purpose, external identity, lifecycle, policy, retention, and optimistic version.","keyFields":["caseId","externalId","purpose","state","version","policyVersion","retentionUntil"]},{"name":"Asset envelope","purpose":"Opaque, non-media identity and integrity facts for one captured source.","keyFields":["assetRef","sha256","mediaClass","width","height","capturedAt","lawfulBasisRef"]},{"name":"Model lock","purpose":"Exact entitled discovery evidence and immutable model selection.","keyFields":["serverRef","apiModelKey","modelFingerprint","classes","lockedAt"]},{"name":"Inference attempt","purpose":"Synchronous request lifecycle, normalized response, safe failure, timing, and provenance.","keyFields":["attemptId","assetHash","modelFingerprint","status","resultHash","regions","timings"]},{"name":"Review and retention","purpose":"Policy reasoning, attributable disposition, and derived-detail redaction evidence.","keyFields":["reviewId","reasonCodes","reviewer","decision","redactedAt"]},{"name":"Audit and outbox","purpose":"Append-only state evidence and exactly-once-in-effect downstream notification.","keyFields":["eventId","aggregateVersion","idempotencyKey","actor","outboxStatus"]}],"failures":[{"trigger":"Model discovery changes after the case is prepared","detection":"Current metadata fingerprint differs from the locked fingerprint.","recovery":"Stop, create a new model lock and attempt, and retain the original lock for comparison."},{"trigger":"Provider response is lost after a synchronous request","detection":"The active attempt has no terminal response hash and transport outcome is ambiguous.","recovery":"Reconcile with the approved provider boundary when possible or record a safe failed attempt before a deliberate linked retry."},{"trigger":"Geometry, label, or confidence is malformed","detection":"Schema, bounds, topology, vocabulary, or numeric validation fails.","recovery":"Quarantine derived detail, retain a safe error class, and do not send it to policy or review."},{"trigger":"Sensitive or uncertain inference reaches policy","detection":"A privacy class, low confidence, unsupported label, or mandatory sample rule matches.","recovery":"Require independent review and prevent automation from issuing a terminal business or safety action."},{"trigger":"Retention deadline passes while review is open","detection":"Derived output remains present after the committed policy deadline.","recovery":"Redact on schedule, close or fail the review with explicit expiry, and retain minimum audit evidence."},{"trigger":"Process restarts after a command timeout","detection":"The client lacks acknowledgement while snapshot, receipt, audit, and outbox are durable.","recovery":"Reload and replay the same idempotency key without duplicating attempts, decisions, or events."}],"observability":["Cases by state, purpose, media class, model fingerprint, and policy version","Model discovery drift, lock age, and incompatible input rate","Inference latency, safe error class, result-schema rejection, and ambiguous outcome","Confidence, label, geometry type, and review-reason distributions","Review queue age, disposition, override, disagreement, and sampling coverage","Sensitive-class access and derived-output retention/redaction deadlines","Idempotency replay, version conflict, restart recovery, audit, and outbox age"],"website":"/journeys/vision-inference-review"}],"evidence":{"contracts":[{"slug":"core-location-get-api-places-search-json-autosuggest-api","method":"GET","path":"/api/places/search/json","summary":"AutoSuggest API","contractStatus":"legacy-source","stateModel":"stateless","journeyRole":"request-response","website":"/api-reference/core-location-get-api-places-search-json-autosuggest-api"},{"slug":"core-location-get-api-places-nearby-json-nearby-api","method":"GET","path":"/api/places/nearby/json","summary":"Nearby API","contractStatus":"legacy-source","stateModel":"stateless","journeyRole":"request-response","website":"/api-reference/core-location-get-api-places-nearby-json-nearby-api"},{"slug":"core-location-get-rest-key-resources-profile-geopositions-routing-api","method":"GET","path":"/{REST_KEY}/{resources}/{profile}/{geopositions}","summary":"Routing API","contractStatus":"legacy-source","stateModel":"stateless","journeyRole":"request-response","website":"/api-reference/core-location-get-rest-key-resources-profile-geopositions-routing-api"},{"slug":"intouch-get-devices-gets-the-live-data-of-devices","method":"GET","path":"/devices","summary":"Gets the live data of devices.","contractStatus":"legacy-source","stateModel":"stateful","journeyRole":"observe","website":"/api-reference/intouch-get-devices-gets-the-live-data-of-devices"},{"slug":"skydnn-ai-get-server-whoami-returns-the-current-models-in-port","method":"GET","path":"/server/whoami","summary":"Returns the current models in port","contractStatus":"current-source","stateModel":"hybrid","journeyRole":"observe","website":"/api-reference/skydnn-ai-get-server-whoami-returns-the-current-models-in-port"},{"slug":"skydnn-ai-get-models-api-model-key-returns-the-details-of-provided-model","method":"GET","path":"/models/{api_model_key}","summary":"Returns the details of provided model","contractStatus":"current-source","stateModel":"hybrid","journeyRole":"observe","website":"/api-reference/skydnn-ai-get-models-api-model-key-returns-the-details-of-provided-model"},{"slug":"skydnn-ai-post-predict-returns-the-prediction-as-response-in-form-of-json","method":"POST","path":"/predict","summary":"Returns the prediction as response in form of JSON","contractStatus":"current-source","stateModel":"hybrid","journeyRole":"command","website":"/api-reference/skydnn-ai-post-predict-returns-the-prediction-as-response-in-form-of-json"}],"guides":[{"slug":"mappls-rest-apis","title":"Mappls Map APIs (REST) !","summary":"Building Blocks to Add Powerful Location Intelligence & Mapping Functionality to your Apps","kind":"REST API","maturity":"current","platforms":["REST"],"website":"/reference/mappls-rest-apis"},{"slug":"mappls-intouch-rest-apis","title":"Mappls Intouch REST Apis","summary":"A Mappls rest api for routes navigation, tracking telematics, capture feedback, identity platform across REST.","kind":"REST API","maturity":"current","platforms":["REST"],"website":"/reference/mappls-intouch-rest-apis"},{"slug":"skydnn-aiapi-docs","title":"Skydnn AI APIs","summary":"A Mappls rest api for maps, gis analytics, ai vision, capture feedback across REST, AI/MCP.","kind":"REST API","maturity":"current","platforms":["REST","AI/MCP"],"website":"/reference/skydnn-aiapi-docs"}],"samples":[{"slug":"spatial-agent","name":"Spatial Operations Agent","description":"Research, plan, approve, execute, and cite grounded Mappls MCP operations through fixture, local stdio, or authenticated remote transports.","stack":["Node.js","Browser agent lab","Mappls MCP SDK client"],"implementation":"full-stack-reference","verifiedTestCount":15,"downloadPath":"/downloads/spatial-agent.zip","website":"/samples/spatial-agent"},{"slug":"vision-evidence-desk","name":"Vision Evidence Desk","description":"Lock a SkyDNN model to an immutable asset identity, record a synchronous fixture inference, validate geometry and confidence, review independently, and redact derived detections on schedule.","stack":["Node.js","Responsive review UI","SkyDNN synchronous adapter","Evidence and retention ledger"],"implementation":"full-stack-reference","verifiedTestCount":10,"downloadPath":"/downloads/vision-evidence-desk.zip","website":"/samples/vision-evidence-desk"}],"tutorials":[{"slug":"mappls-mcp-agent","title":"Give an AI agent grounded Mappls tools","outcome":"An agent that can reason about real places without inventing APIs.","level":"Intermediate","duration":"30 min","website":"/tutorials/mappls-mcp-agent"},{"slug":"a2a-solution-coordination","title":"Coordinate a complete Mappls A2A journey","outcome":"A restart-safe OAuth-capable host that keeps transport identity, provider-read purpose, protocol completion, human acceptance, entitlement, writes, and production approval separate.","level":"Advanced","duration":"90 min","website":"/tutorials/a2a-solution-coordination"},{"slug":"mcp-client-identity","title":"Provision and validate a remote MCP client","outcome":"A replay-safe client identity journey with durable registration, request checks, revocation, and audit evidence.","level":"Advanced","duration":"55 min","website":"/tutorials/mcp-client-identity"},{"slug":"ios-sdk-production-readiness","title":"Qualify an iOS Mappls release","outcome":"A clean-device iOS qualification record spanning SDK, widget, tracking, and distribution boundaries.","level":"Advanced","duration":"2 hr","website":"/tutorials/ios-sdk-production-readiness"}],"useCases":[{"slug":"insurance-claims","title":"Evidence-led claims from incident to settlement","industry":"Insurance","outcome":"Faster, more consistent claims decisions with tamper-aware spatial evidence.","website":"/use-cases/insurance-claims"}]},"releaseGates":["Every command has tenant, actor, purpose, idempotency, expected-version, and authorization evidence.","Every state transition has an objective evidence rule and an explicit recovery path.","Provider and business identities remain distinct, versioned, and reconcilable.","Timeout, retry, duplicate, late, out-of-order, conflict, restart, and outage paths are tested.","Sensitive location, media, identity, and operational evidence has consent, access, retention, and redaction policy.","Audit and outbox commit atomically; signing, delivery, dead-letter, replay, and lease fencing are verified.","Operators can find one aggregate, explain its state, repair safely, and prove who acted.","Live Mappls entitlement, quota, regional behavior, callbacks, and exact provider contracts are validated before production."],"handoffs":{"website":"https://developer.mappls.com/tools/stateful?product=ai-location","api":"https://developer.mappls.com/api/stateful-plan?product=ai-location","console":"https://developer.mappls.com/console/apps","resource":"mappls://catalog/stateful","tool":"mappls_plan_stateful_integration"},"credentialRule":"The planner accepts no credential, token, secret, precise location, media, or provider resource identifier."}