{"schemaVersion":"mappls.ai-discovery.v1","name":"Mappls Developer Platform","description":"Source-grounded documentation, implementation plans, API contracts, runnable journeys, and read-only AI tools for the Mappls/MMI platform suite.","homepage":"https://developer.mappls.com","discovery":{"humanGuide":"https://developer.mappls.com/ai","llmsText":"https://developer.mappls.com/llms.txt","llmsFullText":"https://developer.mappls.com/llms-full.txt","aiContextJsonl":"https://developer.mappls.com/ai-context.jsonl","aiContextChecksum":"https://developer.mappls.com/ai-context.jsonl.sha256","catalog":"https://developer.mappls.com/api/catalog","searchIndex":"https://developer.mappls.com/api/search","searchBoundary":{"indexedFields":["title","description","eyebrow","keywords","canonical path"],"queryProcessing":"browser-local","queryLogging":false,"queryAnalytics":false,"providerCalls":0,"maximumQueryCharacters":160,"maximumRenderedResults":12},"sourceEvidence":"https://developer.mappls.com/api/sources","repositoryReconciliation":"https://developer.mappls.com/api/reconciliation","releaseIntelligence":"https://developer.mappls.com/api/releases","releaseAtomFeed":"https://developer.mappls.com/changelog.atom","releaseJsonFeed":"https://developer.mappls.com/changelog.json","documentationCoverage":"https://developer.mappls.com/api/coverage","developerExperienceBenchmark":"https://developer.mappls.com/api/developer-experience-benchmark","clientLibraries":"https://developer.mappls.com/api/client-libraries"},"interoperability":{"openapi31":"https://developer.mappls.com/openapi.json","openapiGuide":"https://developer.mappls.com/openapi","postmanCollection":"https://developer.mappls.com/postman/collection.json","postmanEnvironment":"https://developer.mappls.com/postman/environment.json","normalizedContracts":"https://developer.mappls.com/api/contracts","contractGenerations":"https://developer.mappls.com/api/contract-generations","contractGenerationGuide":"https://developer.mappls.com/api-generations","sdkCatalog":"https://developer.mappls.com/api/sdks","sdkGuide":"https://developer.mappls.com/sdks","clientLibraryCatalog":"https://developer.mappls.com/api/client-libraries","clientLibraryGuide":"https://developer.mappls.com/client-libraries","authenticationCatalog":"https://developer.mappls.com/api/authentication","authenticationGuide":"https://developer.mappls.com/authentication","errorCatalog":"https://developer.mappls.com/api/errors","diagnosticsGuide":"https://developer.mappls.com/errors","environmentCatalog":"https://developer.mappls.com/api/environments","environmentGuide":"https://developer.mappls.com/environments","agentIntegrationCatalog":"https://developer.mappls.com/api/agent-integrations","agentIntegrationGuide":"https://developer.mappls.com/ai/agents","journeySimulationCatalog":"https://developer.mappls.com/api/journey-simulator","journeySimulationGuide":"https://developer.mappls.com/tools/journey-lab","journeyWorkshopCatalog":"https://developer.mappls.com/api/journey-workshops","journeyWorkshopTemplate":"https://developer.mappls.com/journeys/{journeySlug}/workshop","capabilityMatrix":"https://developer.mappls.com/api/capability-matrix","capabilityMatrixGuide":"https://developer.mappls.com/platforms/matrix","capabilityQualifications":"https://developer.mappls.com/api/capability-qualifications","capabilityQualificationGuide":"https://developer.mappls.com/platforms/qualify","liveConformance":"https://developer.mappls.com/api/conformance","liveConformanceGuide":"https://developer.mappls.com/conformance","learningPathTemplate":"https://developer.mappls.com/api/learning-path?useCase={useCaseSlug}&platform={platform}&experience={experience}","developerAcademy":"https://developer.mappls.com/academy","implementationRecipes":"https://developer.mappls.com/api/recipes","implementationRecipeGuide":"https://developer.mappls.com/recipes","integrationManifestTemplate":"https://developer.mappls.com/api/integration-manifest?useCase={useCaseSlug}&platform={platform}&mode={mode}","integrationManifestGuide":"https://developer.mappls.com/integration-manifests","sandbox":"https://developer.mappls.com/api/sandbox","sandboxGuide":"https://developer.mappls.com/sandbox","quickstarts":"https://developer.mappls.com/api/quickstarts","starterKits":"https://developer.mappls.com/api/starter-kits","sourceLaunchpads":"https://developer.mappls.com/api/launchpads","developerCli":"https://developer.mappls.com/downloads/mappls-developer-cli.zip","developerCliChecksum":"https://developer.mappls.com/downloads/mappls-developer-cli.zip.sha256","agentSkillGuide":"https://developer.mappls.com/ai/skills","agentSkillDownload":"https://developer.mappls.com/downloads/build-with-mappls-skill.zip","agentSkillChecksum":"https://developer.mappls.com/downloads/build-with-mappls-skill.zip.sha256","aiEvaluationGuide":"https://developer.mappls.com/ai/evals","aiEvaluationDownload":"https://developer.mappls.com/downloads/mappls-ai-evaluation-lab.zip","aiEvaluationChecksum":"https://developer.mappls.com/downloads/mappls-ai-evaluation-lab.zip.sha256","aiEvaluationCases":"https://developer.mappls.com/downloads/mappls-ai-evaluation-cases.jsonl","aiEvaluationCasesChecksum":"https://developer.mappls.com/downloads/mappls-ai-evaluation-cases.jsonl.sha256","migrations":"https://developer.mappls.com/api/migrations","solutionPlanTemplate":"https://developer.mappls.com/api/solution-plan?useCase={useCaseSlug}&platform={platform}","statefulPlanTemplate":"https://developer.mappls.com/api/stateful-plan?product={productSlug}","events":"https://developer.mappls.com/api/events","eventSchema":"https://developer.mappls.com/events/schema.json","webhookGuide":"https://developer.mappls.com/webhooks","webhookGuideApi":"https://developer.mappls.com/api/webhook-guide","releases":"https://developer.mappls.com/api/releases","releaseAtomFeed":"https://developer.mappls.com/changelog.atom","releaseJsonFeed":"https://developer.mappls.com/changelog.json","documentationCoverage":"https://developer.mappls.com/api/coverage","developerExperienceBenchmark":"https://developer.mappls.com/api/developer-experience-benchmark","llmsFullText":"https://developer.mappls.com/llms-full.txt","aiContextJsonl":"https://developer.mappls.com/ai-context.jsonl","aiContextChecksum":"https://developer.mappls.com/ai-context.jsonl.sha256"},"mcp":{"package":"@mappls/mcp-server","endpointPath":"/mcp","local":{"transport":"stdio","executable":"mappls-mcp","toolProfile":"live-read"},"remote":{"transport":"streamable-http","executable":"mappls-mcp-http","defaultToolProfile":"offline","authentication":"Controlled static-bearer; or OAuth JWT resource-server validation with exact issuer, resource audience, principal, client, expiry, and profile scope. Company OAuth 2.1 authorization-server registration remains required.","health":["/health/live","/health/ready"],"sessionMode":"stateless"},"profiles":{"offline":{"tools":32,"providerCredentialsRequired":false,"providerNetworkCalls":false},"live-read":{"tools":42,"providerCredentialsRequired":true,"providerNetworkCalls":true}},"resources":38,"prompts":2,"writesExposed":false},"a2a":{"protocol":"Agent2Agent (A2A)","protocolVersion":"1.0","specification":"https://a2a-protocol.org/v1.0.0/specification/","package":"@mappls/a2a-server","guide":"https://developer.mappls.com/ai/a2a","deploymentRequired":true,"agentCardPath":"/.well-known/agent-card.json","health":{"liveness":"/health/live","readiness":"/health/ready"},"interfaces":[{"protocolBinding":"JSONRPC","path":"/a2a/jsonrpc"},{"protocolBinding":"HTTP+JSON","path":"/a2a/rest"}],"skills":[{"id":"plan-mappls-solution","input":{"useCaseSlug":"last-mile-delivery","platform":"Android"},"coverage":"16 industry outcomes × 13 platforms"},{"id":"inspect-mappls-capability","input":{"productSlug":"routes-navigation","platformSlug":"android"},"coverage":"130 product-platform decisions"},{"id":"simulate-mappls-journey","input":{"journeySlug":"connected-fleet-trip","scenario":"unknown-outcome"},"coverage":"18 journeys × 5 scenarios"}],"liveReadSkills":[{"id":"search-mappls-places","name":"Search live Mappls places","product":"Search","dataClass":"user-place-intent","purpose":"user-requested-place-discovery"},{"id":"geocode-mappls-address","name":"Geocode a live Mappls address","product":"Search","dataClass":"user-address","purpose":"user-requested-place-discovery"},{"id":"reverse-geocode-mappls-coordinate","name":"Reverse geocode a live coordinate","product":"Search","dataClass":"precise-location","purpose":"user-requested-place-discovery"},{"id":"find-mappls-nearby","name":"Find live nearby Mappls places","product":"Search","dataClass":"precise-location","purpose":"user-requested-place-discovery"},{"id":"plan-mappls-route-live","name":"Plan a live Mappls route","product":"Routes & Navigation","dataClass":"precise-location","purpose":"route-planning"},{"id":"calculate-mappls-matrix","name":"Calculate a live Mappls matrix","product":"Routes & Navigation","dataClass":"precise-location","purpose":"route-planning"},{"id":"read-mappls-asset-status","name":"Read live Mappls asset status","product":"InTouch","dataClass":"sensitive-live-location","purpose":"fleet-operations"},{"id":"read-mappls-asset-events","name":"Read Mappls asset events","product":"InTouch","dataClass":"sensitive-location-history","purpose":"safety-investigation"},{"id":"read-mappls-geofence-activity","name":"Read Mappls geofence activity","product":"InTouch","dataClass":"sensitive-location-history","purpose":"safety-investigation"},{"id":"read-mappls-trip-status","name":"Read live Mappls trip status","product":"InTouch","dataClass":"sensitive-operational-state","purpose":"fleet-operations"}],"profiles":{"offline":{"skills":3,"providerCalls":false,"providerCredentialsRequired":false,"taskPayloadCredentialsAccepted":false,"writesExposed":false},"live-read":{"skills":13,"addedProviderReadSkills":10,"providerCalls":true,"providerCredentialsRequired":true,"taskPayloadCredentialsAccepted":false,"writesExposed":false}},"authentication":{"localMode":"fixture-none-loopback-only","productionMode":"oauth-jwt","requiredScope":"mappls:a2a:offline","liveReadScope":"mappls:a2a:live-read","defaultTenantClaim":"mappls_tenant_id","protectedResourceMetadataPath":"/.well-known/oauth-protected-resource/a2a","verifiedClaims":["issuer","resource audience","subject","client","issued-at","expiry","tenant","scope"],"storageIdentity":"issuer-bound opaque tenant and subject digests"},"storage":{"loopbackDefault":"sqlite","productionRequired":"postgres","schemaVersion":1,"migration":"packages/a2a-server/sql/001_a2a_task_store.sql","recordBytes":524288,"isolation":"tenant-owner-task composite key","readiness":"database-backed outside loopback"},"authority":{"profile":"offline","providerCalls":0,"providerCredentialsRequired":false,"providerCredentialsAccepted":false,"taskPayloadCredentialsAccepted":false,"freeFormPromptsAccepted":false,"filesAccepted":false,"urlsAccepted":false,"writesExposed":false,"taskPersistence":"postgres-production-sqlite-loopback","productionApprovalGranted":false,"boundary":"A2A exposes only deterministic public-catalog planning and simulation. It does not call Mappls, accept customer data, persist operational work, grant entitlement, or authorize production."},"limits":{"requestBytes":16384,"resultBytes":131072,"taskBytes":524288,"oneStructuredPartPerMessage":true},"rule":"Deploy the package behind a deliberately governed HTTPS origin before advertising its Agent Card. The default profile is offline; live-read is explicit, requires the stronger scope and restricted server-held Mappls credentials, and still exposes zero writes. Loopback-only fixture mode is unauthenticated and defaults to SQLite; every non-loopback deployment requires PostgreSQL. Production validates OAuth JWT identity and derives opaque storage identities. Authorization-server registration, provider entitlement, managed-database failover/restore, and release evidence remain external. The developer portal does not claim a live hosted A2A endpoint or production approval."},"agentSkill":{"schemaVersion":"mappls.agent-skill-integration.v1","format":"Agent Skills","specification":"https://agentskills.io/specification","name":"build-with-mappls","guide":"https://developer.mappls.com/ai/skills","download":"https://developer.mappls.com/downloads/build-with-mappls-skill.zip","checksum":"https://developer.mappls.com/downloads/build-with-mappls-skill.zip.sha256","workflows":[{"id":"select","title":"Select exact capability","outcome":"Resolve industry, platform, product, state depth, source generation, and evidence gaps before writing code."},{"id":"manifest","title":"Freeze an integration manifest","outcome":"Generate one canonical use-case × platform × operating-mode contract before implementation."},{"id":"implement","title":"Implement the narrowest path","outcome":"Use exact quickstarts, contracts, SDK records, source launchpads, tutorials, and maintained apps without inventing provider syntax."},{"id":"state","title":"Own durable state explicitly","outcome":"Model identities, transitions, idempotency, concurrency, reconciliation, audit, privacy, and recovery outside model context."},{"id":"qualify","title":"Qualify and hand off","outcome":"Prove fixtures first, then separately validate issued-account behavior and independent production authority."}],"bundledCommands":["summary","search","manifest"],"authority":{"providerCredentialsAccepted":false,"providerPayloadsAccepted":false,"providerNetworkCalls":0,"writesExposed":false,"productionApprovalGranted":false,"rule":"The skill packages repository-backed planning and implementation guidance. It cannot prove entitlement, live provider behavior, compatibility, support, customer authority, or production approval."},"rule":"Verify the ZIP checksum, inspect SKILL.md and its zero-dependency helper, then install the unchanged skill folder using the discovery location supported by the chosen agent client. No automatic registry or installation location is claimed by this manifest."},"aiEvaluations":{"schemaVersion":"mappls.ai-evaluation-suite.v1","guide":"https://developer.mappls.com/ai/evals","download":"https://developer.mappls.com/downloads/mappls-ai-evaluation-lab.zip","checksum":"https://developer.mappls.com/downloads/mappls-ai-evaluation-lab.zip.sha256","cases":"https://developer.mappls.com/downloads/mappls-ai-evaluation-cases.jsonl","casesChecksum":"https://developer.mappls.com/downloads/mappls-ai-evaluation-cases.jsonl.sha256","caseCount":90,"assertionCount":918,"protocolCases":{"mcp":42,"a2a":13,"agentSkill":5,"statefulJourneys":18,"hostileBoundaries":12},"surfaces":{"a2a":17,"agent-skill":9,"mcp":46,"stateful-journey":18},"dimensions":{"authority":29,"discovery":3,"grounding":35,"handoff":1,"resilience":3,"state":19},"profiles":{"fixture":18,"hostile":12,"live-read":20,"offline":40},"offlineRunnable":true,"authority":{"providerNetworkCalls":0,"providerCredentialsAccepted":false,"taskPayloadCredentialsAccepted":false,"writesExposed":false,"productionApprovalGranted":false},"rule":"The lab evaluates deterministic structured contracts and negative authority. It does not grade open-ended model quality, call Mappls providers, accept credentials, prove entitlement, or grant production approval."},"clientLibraries":{"schemaVersion":"mappls.client-library-studio.v1","guide":"https://developer.mappls.com/client-libraries","catalog":"https://developer.mappls.com/api/client-libraries","languages":8,"operationsPerLanguage":162,"generatedOperationBindings":1296,"bundles":[{"language":"typescript","transport":"fixture-and-bounded-live","packagingVerification":"runtime-executed","download":"https://developer.mappls.com/downloads/client-libraries/mappls-contract-client-typescript.zip","checksum":"https://developer.mappls.com/downloads/client-libraries/mappls-contract-client-typescript.zip.sha256"},{"language":"python","transport":"fixture-and-bounded-live","packagingVerification":"runtime-executed","download":"https://developer.mappls.com/downloads/client-libraries/mappls-contract-client-python.zip","checksum":"https://developer.mappls.com/downloads/client-libraries/mappls-contract-client-python.zip.sha256"},{"language":"java","transport":"fixture-adapter","packagingVerification":"runtime-executed","download":"https://developer.mappls.com/downloads/client-libraries/mappls-contract-client-java.zip","checksum":"https://developer.mappls.com/downloads/client-libraries/mappls-contract-client-java.zip.sha256"},{"language":"kotlin","transport":"fixture-adapter","packagingVerification":"source-and-manifest-verified","download":"https://developer.mappls.com/downloads/client-libraries/mappls-contract-client-kotlin.zip","checksum":"https://developer.mappls.com/downloads/client-libraries/mappls-contract-client-kotlin.zip.sha256"},{"language":"csharp","transport":"fixture-adapter","packagingVerification":"source-and-manifest-verified","download":"https://developer.mappls.com/downloads/client-libraries/mappls-contract-client-csharp.zip","checksum":"https://developer.mappls.com/downloads/client-libraries/mappls-contract-client-csharp.zip.sha256"},{"language":"go","transport":"fixture-adapter","packagingVerification":"source-and-manifest-verified","download":"https://developer.mappls.com/downloads/client-libraries/mappls-contract-client-go.zip","checksum":"https://developer.mappls.com/downloads/client-libraries/mappls-contract-client-go.zip.sha256"},{"language":"php","transport":"fixture-adapter","packagingVerification":"source-and-manifest-verified","download":"https://developer.mappls.com/downloads/client-libraries/mappls-contract-client-php.zip","checksum":"https://developer.mappls.com/downloads/client-libraries/mappls-contract-client-php.zip.sha256"},{"language":"ruby","transport":"fixture-and-bounded-live","packagingVerification":"runtime-executed","download":"https://developer.mappls.com/downloads/client-libraries/mappls-contract-client-ruby.zip","checksum":"https://developer.mappls.com/downloads/client-libraries/mappls-contract-client-ruby.zip.sha256"}],"authority":{"packageCredentialsIncluded":false,"requestCredentialArgumentsAccepted":false,"fixtureProviderCalls":0,"liveProviderCallsRequireExplicitExecution":true,"writesInferredSafe":false,"entitlementProven":false,"compatibilityProven":false,"productionApprovalGranted":false},"rule":"Generated contract clients make source-backed HTTP integration reusable; they do not replace native SDKs, prove provider support or entitlement, make state-changing operations retry-safe, or grant production approval."},"coverage":{"agentPatterns":6,"agentGovernanceControls":12,"agentEvaluationDimensions":8,"journeySimulationScenarios":5,"journeySimulationFixturePaths":90,"journeyWorkshops":18,"journeyWorkshopLabs":144,"capabilityMatrixCells":130,"capabilityQualificationPlans":130,"personalizedLearningPaths":624,"implementationRecipes":48,"integrationManifests":624,"products":10,"platforms":13,"quickstarts":13,"starterKits":13,"sourceLaunchpads":60,"sourceStarterPacks":60,"apiOperations":162,"apiGenerationGroups":17,"apiGenerationVariants":34,"apiGenerationMigrationKits":17,"sdkEntries":58,"referenceGuides":82,"migrations":13,"tutorials":40,"industryBlueprints":16,"statefulJourneys":18,"eventContracts":138,"downloadableApps":21,"publicRepositories":82,"localRepositories":81,"sourceLifecycleRecords":82,"developerPlatformReleases":4,"documentationCoverageRows":105,"documentationOpenGaps":3,"sourceCompleteRows":79},"developerExperienceBenchmark":{"guide":"https://developer.mappls.com/benchmark","catalog":"https://developer.mappls.com/api/developer-experience-benchmark","criteria":20,"evidencedCriteria":20,"officialPatterns":4,"externalGates":1,"authority":{"providerCalls":0,"credentialsAccepted":false,"competitiveScorePublished":false,"productionApprovalGranted":false,"boundary":"The scorecard proves repository-backed Mappls developer-experience controls and records current official comparison patterns. It does not measure competitor quality, claim product equivalence or superiority, prove Mappls entitlement, or approve production."},"rule":"Use the benchmark as repository-experience evidence only. It publishes no competitive score, product-equivalence claim, provider entitlement, anonymous live sandbox, or production approval."},"offlineContext":{"schemaVersion":"mappls.ai-context-corpus.v1","recordSchemaVersion":"mappls.ai-context-record.v1","llmsFullText":"https://developer.mappls.com/llms-full.txt","jsonl":"https://developer.mappls.com/ai-context.jsonl","checksum":"https://developer.mappls.com/ai-context.jsonl.sha256","firstJsonlRecord":"manifest","conditionalReads":true,"providerCredentialsAccepted":false,"providerPayloadsAccepted":false,"providerCalls":0,"writesExposed":false,"productionApprovalGranted":false,"rule":"Verify the checksum before caching or indexing. Preserve each record's canonical link and treat the corpus as repository evidence, never entitlement, live-provider behavior, compatibility, support, customer authority, or production approval."},"stateModels":{"values":["stateless","stateful","hybrid"],"rule":"Keep durable application and provider state outside model context; use the journey and stateful-planning surfaces before proposing operational workflows."},"contractGenerations":{"guide":"https://developer.mappls.com/api-generations","catalog":"https://developer.mappls.com/api/contract-generations","detailTemplate":"https://developer.mappls.com/api/contract-generations?slug={generationGroupSlug}","detailTool":"mappls_get_contract_generation","resource":"mappls://catalog/contract-generations","migrationKitCount":17,"migrationKitDownloadTemplate":"https://developer.mappls.com/downloads/api-generations/{generationGroupSlug}-migration-kit.zip","providerCalls":false,"writesExposed":false,"rule":"Compare exact retained source generations before changing adapters. The highest version-labelled declaration is preferred source evidence only—not proof of provider support, entitlement, compatibility, host availability, or production readiness."},"agentGovernance":{"guide":"https://developer.mappls.com/ai/agents","catalog":"https://developer.mappls.com/api/agent-integrations","plannerTool":"mappls_plan_agent_integration","resource":"mappls://catalog/agent-integrations","writesExposed":false,"rule":"Bind purpose, profile, exact tools, data class, durable state, human control, evaluations, budgets, audit, disablement, and release evidence outside model context before enabling live reads."},"journeySimulation":{"guide":"https://developer.mappls.com/tools/journey-lab","catalog":"https://developer.mappls.com/api/journey-simulator","simulatorTool":"mappls_simulate_journey","resource":"mappls://catalog/journey-simulator","scenarios":["complete-journey","idempotent-replay","stale-version","invalid-transition","unknown-outcome"],"providerCalls":false,"writesExposed":false,"rule":"Use deterministic application-owned fixtures to prove transitions, idempotency, optimistic concurrency, immutable events, and unknown-outcome reconciliation; never treat a passing fixture as provider, entitlement, webhook, or production evidence."},"journeyWorkshops":{"index":"https://developer.mappls.com/journeys","detailTemplate":"https://developer.mappls.com/journeys/{journeySlug}/workshop","catalog":"https://developer.mappls.com/api/journey-workshops","detailApiTemplate":"https://developer.mappls.com/api/journey-workshops?journey={journeySlug}","detailTool":"mappls_get_journey_workshop","resource":"mappls://catalog/journey-workshops","workshops":18,"labs":144,"providerCalls":false,"writesExposed":false,"rule":"Use the exact journey workshop to implement all states, commands, events, records, replay and concurrency controls, hostile fixtures, maintained capstone evidence, and production exit gates without manufacturing provider behavior."},"capabilityMatrix":{"guide":"https://developer.mappls.com/platforms/matrix","catalog":"https://developer.mappls.com/api/capability-matrix","detailTemplate":"https://developer.mappls.com/api/capability-matrix?product={productSlug}&platform={platformSlug}","detailTool":"mappls_get_capability_matrix","resource":"mappls://catalog/capability-matrix","cells":130,"providerCalls":false,"credentialsAccepted":false,"writesExposed":false,"rule":"Only an explicit canonical product-platform declaration creates a listed cell. Adjacent source, SDK, tutorial, starter, sample, or journey evidence must never be promoted to availability, entitlement, compatibility, support, or production approval."},"capabilityQualifications":{"guide":"https://developer.mappls.com/platforms/qualify","catalog":"https://developer.mappls.com/api/capability-qualifications","detailTemplate":"https://developer.mappls.com/api/capability-qualifications?product={productSlug}&platform={platformSlug}","downloadTemplate":"https://developer.mappls.com/api/capability-qualifications?product={productSlug}&platform={platformSlug}&download=1","detailTool":"mappls_get_capability_qualification","resource":"mappls://catalog/capability-qualifications","plans":130,"providerCalls":false,"credentialsAccepted":false,"providerPayloadsAccepted":false,"writesExposed":false,"productionApprovalGranted":false,"rule":"Qualification preserves the matrix decision, separates offline application proof from issued-account conformance and independent release authority, and adds mandatory replay, concurrency, unknown-outcome, and restart evidence for durable integrations."},"liveConformance":{"guide":"https://developer.mappls.com/conformance","catalog":"https://developer.mappls.com/api/conformance","planTemplate":"https://developer.mappls.com/api/conformance?operation={operation}&generation={generation}&region={region}","downloadTemplate":"https://developer.mappls.com/api/conformance?operation={operation}&generation={generation}&region={region}&download=1","plannerTool":"mappls_plan_live_conformance","resource":"mappls://catalog/live-conformance","reportSchemaVersion":"mappls.live-conformance-report.v1","executableReadOperations":8,"coveredProducts":3,"productFamilies":10,"inspectorExecution":"browser-local-only","providerCallsWhilePlanning":false,"credentialsAccepted":false,"providerPayloadsAccepted":false,"writesExposed":false,"productionApprovalGranted":false,"rule":"A passing report proves only the exact selected read, issued account authority, authentication generation, region, host, and observation time. Keep SDK, widget, stateful, privacy, quota, commercial, release, and deployment authority separate."},"webhooks":{"guide":"https://developer.mappls.com/webhooks","catalog":"https://developer.mappls.com/api/webhook-guide","mcpResource":"mappls://guides/webhooks","topics":["application.provisioning_requested.v1","application.provisioned.v1","usage.metered.v1","usage.threshold_reached.v1"],"signing":"${timestamp}.${eventId}.${rawBody}","providerPayloadClaims":0,"providerCalls":false,"writesExposed":false,"rule":"These four topics describe this developer console reference implementation. They are not Mappls product webhooks, InTouch payloads, or the 138 application-owned event blueprints."},"developerAcademy":{"guide":"https://developer.mappls.com/academy","planner":"https://developer.mappls.com/api/learning-path?useCase={useCaseSlug}&platform={platform}&experience={experience}","plannerTool":"mappls_plan_learning_path","resource":"mappls://catalog/learning-paths","experienceLevels":["beginner","intermediate","advanced"],"providerCalls":false,"writesExposed":false,"certificationClaimed":false,"deviceProgress":{"storage":"browser-local","synchronization":false,"analytics":false,"providerCalls":0,"credentialsAccepted":false,"personalDataAccepted":false,"maximumSavedPaths":12,"authority":"Self-recorded learning preference only. Completion is not Mappls certification, entitlement, provider conformance, release approval, or deployment evidence."},"rule":"Use the Academy to compose repository-backed practice, hostile-path journey evidence, and a maintained capstone. Completion never grants Mappls entitlement, certification, or production approval."},"implementationRecipes":{"guide":"https://developer.mappls.com/recipes","catalog":"https://developer.mappls.com/api/recipes","detailTemplate":"https://developer.mappls.com/api/recipes?slug={recipeSlug}","detailTool":"mappls_get_implementation_recipe","resource":"mappls://catalog/recipes","modes":["request-response","composed-experience","durable-operation"],"codeLanguages":8,"providerCalls":false,"writesExposed":false,"rule":"Choose an operating depth before implementation. Recipes compose canonical contracts, tutorials, journeys, recovery controls, and tested capstones, but never prove entitlement, package availability, payload compatibility, or production readiness."},"integrationManifests":{"guide":"https://developer.mappls.com/integration-manifests","template":"https://developer.mappls.com/api/integration-manifest?useCase={useCaseSlug}&platform={platform}&mode={mode}","tool":"mappls_build_integration_manifest","resource":"mappls://catalog/integration-manifests","combinations":624,"providerCalls":false,"writesExposed":false,"rule":"Commit the source-fingerprinted decision with application code, validate it in CI, and resolve account entitlement, exact host, region, quota, compatibility, and release approval independently."},"developerConsole":{"guide":"https://developer.mappls.com/console/apps","applicationBuildWorkspaceTemplate":"https://developer.mappls.com/console/apps/{applicationId}/build?useCase={useCaseSlug}&mode={mode}","applicationBuildPlanTemplate":"https://developer.mappls.com/api/apps/{applicationId}/build-plan?useCase={useCaseSlug}&mode={mode}","applicationClientPackWorkspaceTemplate":"https://developer.mappls.com/console/apps/{applicationId}/clients?useCase={useCaseSlug}&mode={mode}&language={language}","applicationClientPackDownloadTemplate":"https://developer.mappls.com/api/apps/{applicationId}/client-pack?useCase={useCaseSlug}&mode={mode}&language={language}","applicationClientPackSchema":"mappls.application-client-pack.v1","applicationClientPackLanguages":8,"applicationClientPackContents":["application-manifest","integration-manifest","operation-allowlist","blank-environment","integrity-verifier","generated-client-archive","client-sha256"],"applicationIntegrationManifestTemplate":"https://developer.mappls.com/api/apps/{applicationId}/integration-manifest?useCase={useCaseSlug}&mode={mode}","applicationLaunchDossierTemplate":"https://developer.mappls.com/api/apps/{applicationId}/launch-dossier?useCase={useCaseSlug}&mode={mode}","applicationLaunchDossierSchema":"mappls.application-launch-dossier.v1","applicationReleaseHandoffTemplate":"https://developer.mappls.com/api/apps/{applicationId}/release-handoffs","applicationReleaseHandoffCompanyQueue":"https://developer.mappls.com/admin/releases","releaseDeploymentAdminCreate":"https://developer.mappls.com/api/admin/release-deployments","releaseDeploymentAdminTransitionTemplate":"https://developer.mappls.com/api/admin/release-deployments/{deploymentId}","releaseDeploymentTenantEvidenceTemplate":"https://developer.mappls.com/console/apps/{applicationId}/build","releaseDeploymentStatuses":["planned","authorized","canary","ramping","observing","reconciled","rolled_back","cancelled"],"releaseDeploymentSeparation":["creator","operator","authorizer"],"dataResilienceAdmin":"https://developer.mappls.com/admin/resilience","dataResilienceAdminApi":"https://developer.mappls.com/api/admin/data-resilience","dataResilienceAdminTransitionTemplate":"https://developer.mappls.com/api/admin/data-resilience/{exerciseId}","dataResilienceTenantEvidence":"https://developer.mappls.com/console/resilience","dataResilienceTenantApi":"https://developer.mappls.com/api/console/data-resilience","dataResilienceExerciseTypes":["restore","regional_failover"],"dataResilienceStatuses":["planned","authorized","running","evidence_submitted","reconciled","failed","cancelled"],"dataResilienceSeparation":["creator","authorizer","operator","data-owner"],"dataLifecycleAdmin":"https://developer.mappls.com/admin/data-lifecycle","dataLifecycleAdminApi":"https://developer.mappls.com/api/admin/data-lifecycle","dataLifecycleAdminTransitionTemplate":"https://developer.mappls.com/api/admin/data-lifecycle/{exerciseId}","dataLifecycleTenantEvidence":"https://developer.mappls.com/console/data-lifecycle","dataLifecycleTenantApi":"https://developer.mappls.com/api/console/data-lifecycle","dataLifecycleStatuses":["planned","authorized","running","evidence_submitted","reconciled","failed","cancelled"],"dataLifecycleSeparation":["creator","privacy-reviewer","operator","data-owner"],"applicationDataPracticesTenant":"https://developer.mappls.com/console/data-practices","applicationDataPracticesTenantApi":"https://developer.mappls.com/api/data-practices","applicationDataPracticesAdmin":"https://developer.mappls.com/admin/privacy","applicationDataPracticesAdminApi":"https://developer.mappls.com/api/admin/data-practices","applicationDataPracticesStatuses":["submitted","approved","rejected","cancelled","superseded"],"applicationDataPracticesDecisionBoundary":"Independent company review of a developer declaration; not legal basis, notice/consent verification, runtime inspection, or authorization to process or transfer data.","applicationRetirementsTenant":"https://developer.mappls.com/console/retirements","applicationRetirementsTenantApi":"https://developer.mappls.com/api/application-retirements","applicationRetirementsAdmin":"https://developer.mappls.com/admin/retirements","applicationRetirementsAdminApi":"https://developer.mappls.com/api/admin/application-retirements","applicationRetirementsSignedProviderResultApi":"https://developer.mappls.com/api/internal/application-retirement-events","applicationRetirementStatuses":["submitted","approved","rejected","cancelled","retired","failed"],"applicationRetirementBlockers":["active_credentials","active_webhooks","active_entitlements","pending_entitlement_requests","active_deployments","active_resilience_exercises","active_data_lifecycle_exercises"],"applicationRetirementDecisionBoundary":"Tenant request plus independent administrator review and separately signed provider reconciliation; never hard deletion, data export/deletion proof, legal-retention authority, downstream migration, or contractual closure.","developerSupportTenant":"https://developer.mappls.com/console/support","developerSupportTenantApi":"https://developer.mappls.com/api/support-requests","developerSupportAdmin":"https://developer.mappls.com/admin/support","developerSupportAdminApi":"https://developer.mappls.com/api/admin/support-requests","developerSupportStatuses":["submitted","acknowledged","resolved","cancelled"],"developerSupportBoundary":"A support request is a tenant-owned communication record. It does not grant Mappls access to credentials, payloads, precise locations, customer data, provider systems, or your application. Any investigation that needs privileged diagnostic access requires a separate, purpose-bound support case, step-up authentication, explicit scope, and an expiring delegated session.","organizationAccessPublic":"https://developer.mappls.com/get-started","organizationAccessPublicApi":"https://developer.mappls.com/api/organization-requests","organizationAccessCancellationApiTemplate":"https://developer.mappls.com/api/organization-requests/{requestId}","organizationAccessAdmin":"https://developer.mappls.com/admin/organization-requests","organizationAccessAdminApi":"https://developer.mappls.com/api/admin/organization-requests","organizationAccessReviewApiTemplate":"https://developer.mappls.com/api/admin/organization-requests/{requestId}","organizationAccessApprovedOwnerHandoffTemplate":"https://developer.mappls.com/admin/developers#developer-{developerId}","organizationAccessAdminCapabilities":["search-safe-fields","filter-status","inspect-immutable-timeline","approve-exact-version","reject-exact-version","continue-to-separate-owner-activation"],"organizationAccessStatuses":["submitted","approved","rejected","cancelled"],"organizationAccessBoundary":"A signed HTTP-only browser session—not email—owns pre-login visibility and cancellation. Independent stepped-up review of the exact version may provision an active organization and development project, but creates no sign-in authority, credential, entitlement, or production approval; first-owner OIDC activation remains separate.","organizationOwnerActivationAdmin":"https://developer.mappls.com/admin/developers","organizationOwnerActivationIssueApiTemplate":"https://developer.mappls.com/api/admin/developers/{developerId}/owner-invitation","organizationOwnerActivationAcceptanceEntry":"https://developer.mappls.com/auth/login?invitationToken={oneTimeToken}","organizationOwnerActivationPostClaim":"https://developer.mappls.com/console/get-started","organizationOwnerActivationBoundary":"Only a stepped-up platform administrator can issue or rotate the sole unclaimed owner invitation for an approved active organization. The raw 256-bit capability is returned once and only its SHA-256 digest is persisted; verified OIDC issuer-subject—not email—becomes the exact org_admin authority. Claim commits roster, binding, lifecycle work, events, and audit atomically; it neither completes external directory provisioning nor permits a second active owner.","teamInvitationIssueApi":"https://developer.mappls.com/api/team","teamInvitationAcceptanceEntry":"https://developer.mappls.com/auth/login?invitationToken={oneTimeToken}","teamInvitationBoundary":"Seven-day, one-use, 256-bit invitation capability; SHA-256 digest only at rest; verified OIDC issuer-subject is the identity authority; email is display metadata; roster, binding, events, and audit commit atomically; external directory completion remains separately reconciled.","teamOwnershipTransferTenant":"https://developer.mappls.com/console/team","teamOwnershipTransferTenantApi":"https://developer.mappls.com/api/team/ownership-transfers","teamOwnershipTransferAdminEvidence":"https://developer.mappls.com/admin/access","teamOwnershipTransferAdminApi":"https://developer.mappls.com/api/admin/team-ownership-transfers","teamOwnershipTransferStatuses":["pending","accepted","declined","cancelled","expired"],"teamOwnershipTransferBoundary":"Current owner request plus a named active administrator's separate governed identity; atomic sole-owner swap, seven-day expiry, immutable evidence, no platform override, and no tenant exposure of identity-binding identifiers.","accessCertificationTenant":"https://developer.mappls.com/console/team","accessCertificationTenantApi":"https://developer.mappls.com/api/team/access-certifications","accessCertificationAdmin":"https://developer.mappls.com/admin/access","accessCertificationAdminApi":"https://developer.mappls.com/api/admin/access-certifications","accessCertificationStatuses":["open","completed","completed_with_actions","cancelled","expired"],"accessCertificationDecisions":["retain","remediate"],"accessCertificationBoundary":"Immutable effective-access snapshot with separate tenant-owner and platform-identity lanes. Remediation emits governed work and never silently revokes access or proves downstream completion.","accessRemediationTenantApi":"https://developer.mappls.com/api/team/access-remediations","accessRemediationAdminApi":"https://developer.mappls.com/api/admin/access-remediations","accessRemediationStatuses":["requested","assigned","action_recorded","verified","overdue"],"accessRemediationCorrectiveActions":["suspend_member","set_member_role","transfer_ownership","revoke_identity"],"accessRemediationBoundary":"Assignment and action evidence never mutate access. A distinct assigned verifier closes only after the governed roster or identity-binding ledger exposes the exact approved corrective state.","identityLifecycleAdminApi":"https://developer.mappls.com/api/admin/identity-lifecycle","identityLifecycleSignedProviderResultApi":"https://developer.mappls.com/api/internal/identity-lifecycle-events","identityLifecycleOperations":["provision","reactivate","deprovision"],"identityLifecycleStatuses":["requested","succeeded","failed"],"identityLifecycleBoundary":"Every external directory operation binds one local issuer-subject binding version. Deprovisioning succeeds only with a signed provider result that also confirms provider-session revocation; callbacks never grant or mutate local access.","privilegedAccessAdmin":"https://developer.mappls.com/admin/access","privilegedAccessDashboardApi":"https://developer.mappls.com/api/admin/privileged-access","privilegedStepUpChallengeApi":"https://developer.mappls.com/api/admin/step-up-challenges","privilegedSupportDelegationApi":"https://developer.mappls.com/api/admin/support-delegations","privilegedActionClasses":["support_delegation_request","support_delegation_approval","support_session_start","emergency_access_activation","emergency_access_review","sensitive_admin_change"],"sensitiveAdminOperations":["developer.provision","developer.approve","developer.suspend","developer.resume","organization_owner.invite","organization_request.approve","organization_request.reject","identity_binding.create","identity_binding.revoke","identity_binding.reactivate","application.provision","entitlement_request.approve","entitlement_request.reject","entitlement.update","entitlement_drift.acknowledge","entitlement_drift.request_remediation","incident.declare","incident.identified","incident.monitoring","incident.resolved","incident.postmortem.publish","support_case.create","support_case.close","release_record.create","release_record.evidence","release_record.submit_review","release_record.cancel","release_record.approve","release_record.reject","release_handoff.accept","release_handoff.reject","release_deployment.create","release_deployment.authorize","release_deployment.start_canary","release_deployment.advance","release_deployment.begin_observation","release_deployment.reconcile","release_deployment.rollback","release_deployment.cancel","plan.create","rate_card.create","rate_card.activate","invoice.generate","invoice.adjust","invoice.finalize","billing_dispute.accept","billing_dispute.reject","outbox.replay","webhook_policy.update","slo_policy.update","identity_lifecycle.retry","application_retirement.approve","application_retirement.reject","application_retirement.retry","mcp_client.approve","mcp_client.reject","webhook_replay_request.approve","webhook_replay_request.reject","documentation_evidence.create","documentation_evidence.submit","documentation_evidence.approve","documentation_evidence.reject","documentation_evidence.cancel","documentation_feedback.triage","documentation_feedback.submit","documentation_feedback.approve","documentation_feedback.reject","documentation_feedback.dismiss","access_certification.create","access_certification.cancel","access_certification_item.retain","access_certification_item.remediate","access_remediation.assign","access_remediation.record_action","access_remediation.verify","data_resilience.create","data_resilience.authorize","data_resilience.start","data_resilience.submit_evidence","data_resilience.reconcile","data_resilience.fail","data_resilience.cancel","data_lifecycle.create","data_lifecycle.authorize","data_lifecycle.start","data_lifecycle.submit_evidence","data_lifecycle.reconcile","data_lifecycle.fail","data_lifecycle.cancel","data_practice.approve","data_practice.reject"],"sensitiveAdminAssertionBinding":["canonical_request_sha256","operation","target_type","target_id","target_version","actor_subject","identity_binding_version"],"privilegedDelegationCapabilities":["organization_metadata:read","application_metadata:read","operations_evidence:read"],"privilegedAccessBoundary":"Recent strong authentication creates one short-lived, one-use assertion and never grants a role. Sensitive developer, application, identity, entitlement, incident, release, handoff, and deployment administration additionally binds the canonical request SHA-256, operation, target, target version, actor, and identity-binding version. Standard support delegation requires a separate approver. Emergency access lasts at most 15 minutes, is incident/evidence bound, and requires independent post-review within 24 hours. The resulting support view preserves the support actor, exposes no writes or secrets, and is never represented as the customer.","applicationLaunchDossierAuthorities":["source-contract","application-configuration","provider-conformance","security-privacy","operations","production-release","deployment"],"applicationAiWorkspaceIndex":"https://developer.mappls.com/console/ai","applicationAiWorkspaceTemplate":"https://developer.mappls.com/console/apps/{applicationId}/ai?pattern={patternSlug}&mode={offlineOrLiveRead}","applicationAiPlanTemplate":"https://developer.mappls.com/api/apps/{applicationId}/ai-plan?pattern={patternSlug}&mode={offlineOrLiveRead}","adminAiGovernance":"https://developer.mappls.com/admin/ai","adminAiReadiness":"https://developer.mappls.com/api/admin/ai-readiness","authenticationRequired":true,"tenantScoped":true,"modes":["request-response","composed-experience","durable-operation"],"providerCallsForPlanning":false,"writesExposed":false,"rule":"Use the authenticated Application Build Workspace for exact implementation planning, the application client pack for a checksummed generated client plus an application-owned operation allowlist, its self-verifying launch dossier for the developer-to-independent-review handoff, and the Application AI Workspace for a smallest-authority MCP profile, exact tool allowlist, provider-product boundary, hostile evaluations, and independent release controls. A client pack contains no credential, performs zero provider calls while generating, and does not automatically enforce its allowlist, qualify live transport, grant entitlement, or approve production. The dossier digest is self-generated, not signed; cross-check the canonical application manifest. The launch dossier always keeps provider conformance, security/privacy, operations, production release, and deployment authority unproven. A separate admin-only deployment record requires an approved release plus accepted application handoff, separates creator/operator/authorizer, moves traffic monotonically, retains rollback and reconciliation evidence, and never rewrites release gates. Application data-practices revisions let a tenant declare purpose, data categories, processing modes, subjects, retention, residency, and notice/assessment identities for independent admin review; review never establishes legal basis, verifies the artifacts, inspects runtime data, or authorizes processing or transfer. Application retirement separately requires a tenant request, independent blocker-aware administrator review, and signed provider reconciliation; it retains the application and evidence and never proves data deletion/export, legal disposition, downstream migration, contractual closure, or unobserved provider work. Developer support requests are bounded communications: acknowledgement or resolution never authorizes privileged diagnostics, grants entitlement, proves an incident or SLA, or creates a support case. Privileged investigation remains a separate purpose-bound, stepped-up, scoped, expiring journey. Data-resilience exercises separately bind backup/runbook identities, RPO/RTO targets, measured recovery evidence, zero-variance record reconciliation, and an independent data-owner decision. Data-lifecycle exercises bind policy/query digests and separately assigned privacy, operator, and data-owner decisions to sampled retention, deletion, residency, and backup-scope measurements. These ledgers record evidence but do not execute infrastructure or data mutations, establish legal basis, or prove unobserved data. Tenants receive only bounded or redacted evidence. None of these surfaces returns credential material or provider payloads, registers an OAuth client, calls a provider while planning, or grants access."},"runnableLearning":{"developerCliGuide":"https://developer.mappls.com/cli","quickstartIndex":"https://developer.mappls.com/quickstart","starterKitIndex":"https://developer.mappls.com/starter-kits","sourceLaunchpadIndex":"https://developer.mappls.com/launchpads","sdkIndex":"https://developer.mappls.com/sdks","authenticationCenter":"https://developer.mappls.com/authentication","errorDiagnosticsCenter":"https://developer.mappls.com/errors","environmentReadinessCenter":"https://developer.mappls.com/environments","agentIntegrationCenter":"https://developer.mappls.com/ai/agents","a2aAgentServer":"https://developer.mappls.com/ai/a2a","statefulJourneyLab":"https://developer.mappls.com/tools/journey-lab","journeyWorkshopTemplate":"https://developer.mappls.com/journeys/{journeySlug}/workshop","developerAcademy":"https://developer.mappls.com/academy","implementationRecipeLibrary":"https://developer.mappls.com/recipes","integrationManifestBuilder":"https://developer.mappls.com/integration-manifests","tenantApplicationBuildWorkspace":"https://developer.mappls.com/console/apps","tenantApplicationAiWorkspace":"https://developer.mappls.com/console/ai","tutorialIndex":"https://developer.mappls.com/tutorials","industryIndex":"https://developer.mappls.com/use-cases","journeyIndex":"https://developer.mappls.com/journeys","eventIndex":"https://developer.mappls.com/events","webhookReceiverGuide":"https://developer.mappls.com/webhooks","sampleIndex":"https://developer.mappls.com/samples"},"trust":{"trustCenter":"https://developer.mappls.com/trust","sourceLedger":"https://developer.mappls.com/sources/reconciliation","releaseCenter":"https://developer.mappls.com/changelog","documentationCoverage":"https://developer.mappls.com/coverage","adminDocumentationQueue":"https://developer.mappls.com/admin/documentation","adminDocumentationEvidenceApi":"https://developer.mappls.com/api/admin/documentation-evidence","publicDocumentationFeedbackApi":"https://developer.mappls.com/api/documentation-feedback","adminDocumentationFeedbackQueue":"https://developer.mappls.com/admin/documentation-feedback","adminDocumentationFeedbackApi":"https://developer.mappls.com/api/admin/documentation-feedback","implementationStatus":"docs/IMPLEMENTATION_STATUS.md","developerExperienceBenchmark":"https://developer.mappls.com/benchmark","rules":["Never put a Mappls provider credential in model context, committed client configuration, URLs returned to a model, or browser code.","Treat repository evidence as implementation evidence, not proof of current account entitlement or compatibility.","Preserve Mappls Pins, source fingerprints, provider identity, region, and provenance across a journey.","Require separate authorization, durable state, idempotency, reconciliation, audit, and human control for consequential writes.","Documentation evidence approval is an authenticated ingestion handoff, never authority to change the public catalog without independent fingerprinting, regeneration, and tests.","Documentation feedback is anonymous, exact-page and revision bound, and privacy minimized. Actionable correction evidence requires an assigned owner and a different reviewer; approval emits a publishing handoff but never proves deployment or provider behavior."]}}