# Openscreen MCP

> Openscreen MCP Server handles dynamic QR code management for physical and digital assets. Your AI client can generate trackable codes, link them to specific SKUs or URLs, list all associated projects, and pull real-time scan data (location, device info) instantly.

## Overview
- **Category:** marketing-advertising
- **Price:** Free
- **Tags:** qr-code, asset-tracking, analytics, dynamic-content

## Description

Your AI client can handle dynamic QR code management and asset tracking right out of the box using this server. You'll get direct access to tools that let you build, track, and update physical assets without ever touching a printer or spreadsheet.

When you need to start tracking something new, your agent uses `create_asset_with_qr`. This function doesn't just make a barcode; it first creates a new asset record in the system, and then it generates the corresponding, trackable QR code linked directly to that data. If you want to check on an existing piece of gear or product, you can use `get_asset` with a specific asset ID to pull all its metadata instantly.

For managing your overall tracking program, you'll first need context about the container itself. To see every Openscreen project available to you, call `list_projects`. Once you know which project you're working in, use `get_project` to get detailed information on that entire project container. You can then pull a full roster of all assets contained within a specific project using `list_assets`, or if you want to see just the QR codes themselves, `list_qr_codes` handles that for you.

Need to know what a single code is supposed to do? `get_qr_code` lets you pull the exact parameters and details associated with one specific QR code identifier. If you're running into issues or need to see what the asset data looks like without listing everything, you can use `get_asset` again, supplying only the designated asset ID.

The tracking part is where it gets good. To track history for any given barcode, your agent just calls `list_scans`. This function returns a detailed list of every scan event associated with that QR code identifier—you get the exact location data, the device type used at the time, and precise timestamps for each historical read.

Managing the codes themselves is easy. If you need to change what a dynamic QR code means—what its underlying purpose or 'intent' is—but you don't want to reprint the physical label, you use `update_qr_code_code_intent`. This function updates the definition of the code programmatically, keeping the asset functional without any physical changes. You also get full visibility into every single QR code within a project using `list_qr_codes`, and if you need to see all assets associated with a specific container, `list_assets` handles that list for you.

It's simple: your AI client uses these functions to read the system state (`get_project`, `list_projects`), build new records (`create_asset_with_qr`), check details (`get_asset`, `get_qr_code`), see who scanned what and where (`list_scans`), or adjust the code's meaning without a reprint (`update_qr_code_intent`). You don't have to juggle multiple systems; you just point your agent at the tool, and it handles the whole workflow.

## Tools

### create_asset_with_qr
Generates a new asset record and creates its corresponding, trackable QR code for use in campaigns.

### get_asset
Retrieves all specific metadata associated with a single designated asset ID.

### get_project
Gets detailed information about an entire Openscreen project container.

### get_qr_code
Retrieves specific details and parameters for a single QR code identifier.

### list_assets
Returns a list of all assets that belong to a specified project container.

### list_projects
Provides an enumeration of every Openscreen project the user has access to.

### list_qr_codes
Returns a list of all QR codes contained within a specified project.

### list_scans
Lists the historical scan data—location, device type, and time—for a given QR code identifier.

### update_qr_code_intent
Changes the defined purpose or meaning (the intent) of an existing dynamic QR code without changing the physical code itself.

## Prompt Examples

**Prompt:** 
```
List my Openscreen projects.
```

**Response:** 
```
Fetching projects... I've found 3 projects: 'Marketing Q1', 'Product Launch', and 'Inventory Tracking'.
```

## Capabilities

### Generate QR Codes
The agent can create a new digital asset record and generate its corresponding, trackable QR code using `create_asset_with_qr`.

### Check Asset Details
Retrieve specific details about an existing asset or project by calling `get_asset` or `get_project`.

### List All Assets & Projects
The agent can retrieve a list of every project available (`list_projects`) or all assets within a specific project container (`list_assets`).

### View Scan History
Pull detailed scan data—including location, device info, and timestamps—for any given QR code using `list_scans`.

### Update Code Intent
You can programmatically change what a dynamic QR code means (its intent) without ever needing to reprint the physical label via `update_qr_code_intent`.

## Use Cases

### Analyzing Event Signage Performance
A marketing director needs to know which event poster is most popular. They ask their agent, 'Show me the scan data for the Q3 Poster.' The agent runs `list_scans` against the specific QR code ID and returns a list showing high-traffic locations (e.g., 'Lobby Entrance') versus low-traffic areas.

### Updating Outdated Inventory Tags
An operations manager finds old product tags that point to an obsolete URL. They tell their agent, 'Update the intent of SKU 4001.' The agent calls `update_qr_code_intent`, changing the code's destination link without touching the physical sticker.

### Project Scoping and Discovery
A new team needs to know what assets are available for a product launch. They ask their agent, 'What projects do we have?' The agent calls `list_projects` first, then uses `list_assets` on the correct project ID to generate an immediate inventory list.

### Rapid Deployment of New Codes
A campaign manager needs 50 new codes for a temporary pop-up shop. They ask their agent, 'Generate 50 tracking codes linked to the Spring Sale.' The agent uses `create_asset_with_qr` fifty times in sequence, generating and managing all the new assets.

## Benefits

- See exactly who scanned what, where, and when. `list_scans` gives you granular data—location, device type, timestamps—so you know if a campaign is working or not.
- Never print an outdated label again. Use `update_qr_code_intent` to change a code's purpose (e.g., from 'Sale Info' to 'Service Page') instantly without physical changes.
- Manage large campaigns by keeping everything organized. `list_projects` and `get_project` let your agent scope all asset activity into predefined containers.
- Scale up asset creation fast. Call `create_asset_with_qr` repeatedly, letting the agent manage hundreds of unique codes across different projects.
- Keep track of what you've already built. If you need to check existing assets, `list_assets` gives you a clean list of everything in scope for immediate review.

## How It Works

The bottom line is you connect your agent to Openscreen, giving it the ability to manage and report on asset performance using structured commands.

1. Subscribe to this server and input your Openscreen API Key and Secret into your client environment.
2. Your agent uses a tool like `list_projects` to find the correct scope, then calls another tool (e.g., `create_asset_with_qr`) with specific parameters.
3. The system returns the requested data—whether it's a list of assets or granular scan metrics—which your AI client can read and act upon.

## Frequently Asked Questions

**How do I start using Openscreen MCP Server with my agent?**
You subscribe to the server and provide your Openscreen API Key and Secret. Your AI client then uses tools like `list_projects` or `create_asset_with_qr` to begin managing assets.

**Can I track a code that was scanned last year?**
Yes, you can retrieve historical data using the `list_scans` tool. It gathers scan records including location and device info for any given QR code identifier.

**What is the difference between `get_asset` and `list_assets`?**
`list_assets` gives you a roster—a list of all assets in a project. You must then call `get_asset` using an ID from that list to pull detailed metadata for one specific asset.

**Does Openscreen MCP Server help with multiple campaigns?**
Yes, it organizes everything by container. Use `list_projects` first to see all active campaign containers before you run any tracking or creation tools.

**How does the `list_scans` tool handle retrieving massive volumes of scan data?**
It handles large datasets using pagination. You don't pull all records at once; instead, you request the scan history in manageable chunks, keeping your agent stable even when dealing with years of tracking data.

**If I run `create_asset_with_qr` and it fails, what are the most common reasons?**
Failure usually points to an invalid Project ID or insufficient permissions. Check that your agent has write access to the target project before running the tool. The API will return a specific error code telling you exactly which scope is missing.

**How does `update_qr_code_intent` change a QR code's function without changing its physical look?**
This tool modifies the logic behind the code, not the visible pattern. You pass in new parameters—like switching from tracking sales to tracking downloads—and all subsequent scans follow those updated rules instantly.

**Before I use `list_assets`, should I run `list_projects` first?**
Yes, it's best practice. First, use `list_projects` to confirm the correct project container ID. This ensures you pass the right scope reference when calling `list_assets`, which prevents your agent from receiving empty results.

**What is the difference between static and dynamic QR codes?**
Static codes are fixed. Dynamic codes allow you to change the destination (Intent) without reprinting the physical code, and they provide scan tracking.