Server definition
- Hash
- sha256:e393786c24c1710454011e5a7eae6a8cef46e8ec69b72a1d40f91bcb37987d1b
- What it is
- What a remote MCP server returned when asked what it offers: 9 tools
The blob, as servednamed by its sha256
{
"instructions": null,
"tools": [
{
"description": "Create a new ACC issue (field observation, coordination clash, safety, quality, etc.) in the target project via the APS Construction Issues API.\n\nWhen to use: The user wants to log a new issue — e.g. 'open a high-priority issue about the leaking valve on level 3' or a downstream agent detected a defect during a model review and needs to record it for the project team.\n\nWhen NOT to use: Do not use to modify an existing issue (use acc_update_issue) and do not use for RFIs (use acc_create_rfi).\n\nAPS scopes: data:read data:write account:read.\n\nRate limits: ACC Issues API limited to ~100 req/min per app; APS default ~50 req/min per endpoint — batch creations with backoff.\n\nErrors: 401 (APS token expired — refresh); 403 (user lacks 'Create Issues' permission on the project or scope insufficient — surface to user); 404 (project_id not found — verify the 'b.' prefix and that the project belongs to a hub the app can see via acc_list_projects); 422 (validation — required field like title/description missing or priority enum invalid); 429 (rate limit — retry after 60s); 5xx (ACC upstream — retry with jitter, do not double-create).\n\nSide effects: Creates a persistent issue record visible to all project members. NOT idempotent — a retry on a 5xx may create duplicates; dedupe by title before retrying.",
"inputSchema": {
"properties": {
"assigned_to": {
"description": "Optional APS user ID (oxygen ID / ACC user UUID) of the assignee. Leave null for unassigned.",
"examples": [
"ABC123XYZ456"
],
"type": "string"
},
"description": {
"description": "Detailed issue description / body. Plain text, up to ~10,000 chars. Required.",
"examples": [
"Observed active drip at VAV-312 supply connection during 2026-04-18 walkthrough. Photos attached in linked RFI."
],
"type": "string"
},
"due_date": {
"description": "Optional due date in ISO 8601 date format (YYYY-MM-DD).",
"examples": [
"2026-05-01"
],
"type": "string"
},
"priority": {
"description": "Issue priority. Defaults to 'medium' if omitted.",
"enum": [
"critical",
"high",
"medium",
"low"
],
"examples": [
"high"
],
"type": "string"
},
"project_id": {
"description": "ACC project ID. MUST use the 'b.' prefix literal (e.g. 'b.a1b2c3d4-...'). The worker strips the prefix internally for the Issues endpoint. Obtain via acc_list_projects.",
"examples": [
"b.a1b2c3d4-1234-5678-9abc-def012345678"
],
"type": "string"
},
"title": {
"description": "Short issue title, 1–255 chars. Required.",
"examples": [
"Leaking valve on Level 3 mech room"
],
"type": "string"
}
},
"required": [
"project_id",
"title",
"description"
],
"type": "object"
},
"name": "acc_create_issue",
"outputSchema": null
},
{
"description": "Create a new Request For Information (RFI) in an ACC project via the APS Construction RFIs API. RFI is created in 'draft' status — the project workflow owner typically transitions it to 'submitted'.\n\nWhen to use: The user needs a formal question-of-record to the design or GC team — e.g. 'raise an RFI asking for clarification on the Level 2 beam schedule'. RFIs are the auditable channel for clarifications; issues are for field observations.\n\nWhen NOT to use: Do not use for informal observations (use acc_create_issue) or to answer an existing RFI (not supported here).\n\nAPS scopes: data:read data:write account:read.\n\nRate limits: APS default ~50 req/min per endpoint per app. RFIs share the Construction API umbrella with issues (~100 req/min combined).\n\nErrors: 401 (APS token expired — refresh); 403 (user lacks RFI create permission on project); 404 (project_id not found — verify 'b.' prefix and hub membership); 422 (validation — subject/question missing or priority enum invalid); 429 (rate limit — back off 60s); 5xx (ACC upstream — retry with jitter, check for duplicate before retrying).\n\nSide effects: Creates a persistent RFI record. NOT idempotent — retry on 5xx risks duplicates; dedupe by subject before retrying.",
"inputSchema": {
"properties": {
"assigned_to": {
"description": "Optional APS user ID of the person the RFI is directed to.",
"examples": [
"ABC123XYZ456"
],
"type": "string"
},
"priority": {
"description": "RFI priority. Defaults to 'medium' if omitted.",
"enum": [
"critical",
"high",
"medium",
"low"
],
"examples": [
"high"
],
"type": "string"
},
"project_id": {
"description": "ACC project ID. MUST use 'b.' prefix literal. Obtain via acc_list_projects.",
"examples": [
"b.a1b2c3d4-1234-5678-9abc-def012345678"
],
"type": "string"
},
"question": {
"description": "Full RFI question body. Plain text, up to ~10,000 chars. Required.",
"examples": [
"Drawing S-201 shows W14x22 but schedule lists W14x26 for gridline C/4. Please confirm which is correct."
],
"type": "string"
},
"subject": {
"description": "Short RFI subject/title, 1–255 chars. Required.",
"examples": [
"Clarification on Level 2 beam schedule"
],
"type": "string"
}
},
"required": [
"project_id",
"subject",
"question"
],
"type": "object"
},
"name": "acc_create_rfi",
"outputSchema": null
},
{
"description": "List and filter issues from a single ACC project (limit 50 per call) via the APS Construction Issues API.\n\nWhen to use: The user or upstream agent needs to review open issues, count issues by status/priority, or look up an issue_id before calling acc_update_issue. E.g. 'show me all critical open issues on the Tower project'.\n\nWhen NOT to use: Do not use to fetch RFIs (use acc_list_rfis) or to search documents.\n\nAPS scopes: data:read account:read. No write scope required.\n\nRate limits: ACC Issues API ~100 req/min per app; results pageable (limit 50 here, max 200 upstream). For large projects, call once and filter client-side instead of looping.\n\nErrors: 401 (APS token expired — refresh); 403 (user lacks 'View Issues' permission on project or scope insufficient); 404 (project_id not found — verify 'b.' prefix and hub membership via acc_list_projects); 422 (invalid filter value — check status/priority spelling); 429 (rate limit — back off 60s); 5xx (ACC upstream — retry with jitter).\n\nSide effects: None. Read-only and idempotent.",
"inputSchema": {
"properties": {
"assigned_to": {
"description": "Optional assignee APS user ID filter. Accepted but not currently forwarded as a URL filter by this server — filter client-side if needed.",
"examples": [
"ABC123XYZ456"
],
"type": "string"
},
"priority": {
"description": "Optional priority filter. Typical values: critical, high, medium, low.",
"examples": [
"critical"
],
"type": "string"
},
"project_id": {
"description": "ACC project ID. MUST use 'b.' prefix literal. Obtain via acc_list_projects.",
"examples": [
"b.a1b2c3d4-1234-5678-9abc-def012345678"
],
"type": "string"
},
"status": {
"description": "Optional status filter. Typical values: open, in_review, closed, draft.",
"examples": [
"open"
],
"type": "string"
}
},
"required": [
"project_id"
],
"type": "object"
},
"name": "acc_list_issues",
"outputSchema": null
},
{
"description": "Enumerate every ACC and BIM 360 project the authenticated APS app can see by walking all accessible hubs and their project lists.\n\nWhen to use: The agent needs to discover project IDs before calling any other tool (e.g. the user says 'show me my projects' or 'find issues in the Tower project' and no project_id is known yet). Also useful to confirm hub membership for a project.\n\nWhen NOT to use: Do not call this repeatedly in a loop — cache the result; if the user already supplied a project_id starting with 'b.', skip discovery.\n\nAPS scopes: data:read account:read. No write scope needed.\n\nRate limits: APS default ~50 req/min per app per endpoint; BIM 360 hubs endpoints are pageable (limit 200). This tool fans out 1 hubs call + N project calls (one per hub) so call it sparingly on tenants with many hubs.\n\nErrors: 401 (APS token expired — refresh and retry once); 403 (app not provisioned in the BIM 360/ACC account — ask user to have an account admin add the APS client_id); 404 (rare, indicates hub deleted mid-call); 429 (rate limit — back off 60s); 5xx (ACC upstream — retry with jitter).\n\nSide effects: None. Read-only and idempotent.",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "acc_list_projects",
"outputSchema": null
},
{
"description": "List and filter RFIs from a single ACC project (limit 50 per call) via the APS Construction RFIs API.\n\nWhen to use: The user wants to review open RFIs, count outstanding ones, or look up an RFI ID. E.g. 'how many RFIs are still open on the Tower project?'\n\nWhen NOT to use: Do not use for issues (use acc_list_issues) or document search (use acc_search_documents).\n\nAPS scopes: data:read account:read. No write scope required.\n\nRate limits: APS default ~50 req/min per endpoint; ACC Construction API shared ~100 req/min cap. Pageable (limit 50 here; upstream max 200).\n\nErrors: 401 (APS token expired — refresh); 403 (user lacks RFI view permission); 404 (project_id not found — verify 'b.' prefix and hub membership); 422 (invalid filter value); 429 (rate limit — back off 60s); 5xx (ACC upstream — retry).\n\nSide effects: None. Read-only and idempotent.",
"inputSchema": {
"properties": {
"project_id": {
"description": "ACC project ID. MUST use 'b.' prefix literal. Obtain via acc_list_projects.",
"examples": [
"b.a1b2c3d4-1234-5678-9abc-def012345678"
],
"type": "string"
},
"status": {
"description": "Optional RFI status filter. Typical values: draft, submitted, open, answered, closed, void.",
"examples": [
"open"
],
"type": "string"
}
},
"required": [
"project_id"
],
"type": "object"
},
"name": "acc_list_rfis",
"outputSchema": null
},
{
"description": "Fetch the full ACC project metadata record (name, type, status, dates, extension attributes) for a single project via APS Data Management. If hub_id is omitted the tool picks the first accessible hub, which may be wrong on multi-hub tenants.\n\nWhen to use: The user asks 'tell me about project X' or an agent needs project metadata (start/end dates, type, Forma/BIM 360 flavor) before deciding which downstream tool to call.\n\nWhen NOT to use: Do not use as a cheap existence check — prefer acc_list_projects which returns hub_id with every project and is one call regardless of tenant size.\n\nAPS scopes: data:read account:read. Forma / BIM 360 hubs endpoints only require data:read.\n\nRate limits: APS default ~50 req/min per endpoint; BIM 360 hubs endpoints pageable (limit 200). Cache results for the session.\n\nErrors: 401 (APS token expired — refresh); 403 (user lacks project view or app not in account); 404 (project not in the chosen hub — supply the correct hub_id, or call acc_list_projects first); 422 (malformed project_id — confirm 'b.' prefix); 429 (rate limit — back off 60s); 5xx (ACC upstream — retry).\n\nSide effects: None. Read-only and idempotent.",
"inputSchema": {
"properties": {
"hub_id": {
"description": "Optional ACC/BIM 360 hub ID. Also uses the 'b.' prefix literal. If omitted, the first hub returned by APS is used — prefer supplying this explicitly on multi-hub tenants to avoid 404s.",
"examples": [
"b.abcdef01-2345-6789-abcd-ef0123456789"
],
"type": "string"
},
"project_id": {
"description": "ACC project ID. MUST use 'b.' prefix literal (this endpoint — unlike Issues/RFIs — wants the prefixed form). Obtain via acc_list_projects.",
"examples": [
"b.a1b2c3d4-1234-5678-9abc-def012345678"
],
"type": "string"
}
},
"required": [
"project_id"
],
"type": "object"
},
"name": "acc_project_summary",
"outputSchema": null
},
{
"description": "Full-text search the ACC Docs repository of a project for drawings, specs, submittals, and other files via the APS Data Management search endpoint.\n\nWhen to use: The user wants to find a document by keyword (filename, sheet number, or metadata match). E.g. 'find the latest A-201 sheet' or 'search for mechanical specs on Tower project'.\n\nWhen NOT to use: Do not use to upload a file (use acc_upload_file); do not use to fetch issues/RFIs. If you already have a document URN, fetch it directly with an agent that has Data Management folder/item access.\n\nAPS scopes: data:read account:read. No write scope required.\n\nRate limits: APS Data Management ~50 req/min per app per endpoint; pageable (limit 200 upstream). Avoid tight query loops.\n\nErrors: 401 (APS token expired — refresh); 403 (user lacks Docs view permission on the project); 404 (project_id not found — verify 'b.' prefix and hub membership); 422 (invalid filter syntax — simplify query text); 429 (rate limit — back off 60s); 5xx (ACC upstream — retry with jitter).\n\nSide effects: None. Read-only and idempotent.",
"inputSchema": {
"properties": {
"document_type": {
"description": "Optional APS document type filter (e.g. 'items:autodesk.bim360:File', 'items:autodesk.bim360:Document').",
"examples": [
"items:autodesk.bim360:Document"
],
"type": "string"
},
"project_id": {
"description": "ACC project ID. MUST use 'b.' prefix literal. The worker re-adds the prefix for Data Management URL formatting. Obtain via acc_list_projects.",
"examples": [
"b.a1b2c3d4-1234-5678-9abc-def012345678"
],
"type": "string"
},
"query": {
"description": "Free-text search string matched against filenames, titles, and indexed metadata. 1–500 chars.",
"examples": [
"A-201 floor plan"
],
"type": "string"
}
},
"required": [
"project_id",
"query"
],
"type": "object"
},
"name": "acc_search_documents",
"outputSchema": null
},
{
"description": "Patch an existing ACC issue — change status, priority, assignee, or description via the APS Construction Issues API.\n\nWhen to use: The user asks to close/reopen/escalate an issue, reassign it, or edit its body. Typical agent flow: acc_list_issues → pick an id → acc_update_issue.\n\nWhen NOT to use: Do not use to create issues (acc_create_issue) or to add comments (not supported by this server).\n\nAPS scopes: data:read data:write account:read.\n\nRate limits: ACC Issues API ~100 req/min per app; APS default ~50 req/min per endpoint.\n\nErrors: 401 (APS token expired — refresh); 403 (user lacks edit permission or status transition not allowed by project workflow); 404 (project_id or issue_id not found — verify 'b.' prefix on project_id and that issue_id belongs to that project); 422 (validation — invalid status/priority enum or illegal state transition); 429 (rate limit — back off 60s); 5xx (ACC upstream — retry with jitter).\n\nSide effects: Mutates the issue record. Idempotent when the same body is resent (PATCH semantics) — safe to retry.",
"inputSchema": {
"properties": {
"assigned_to": {
"description": "APS user ID of the new assignee. Omit to leave unchanged.",
"examples": [
"ABC123XYZ456"
],
"type": "string"
},
"description": {
"description": "Replacement description body. Plain text.",
"examples": [
"Root cause confirmed as cracked fitting; scheduling replacement."
],
"type": "string"
},
"issue_id": {
"description": "UUID of the issue to update, as returned by acc_list_issues or acc_create_issue.",
"examples": [
"7f3e2a1b-4c5d-6e7f-8a9b-0c1d2e3f4a5b"
],
"type": "string"
},
"priority": {
"description": "New priority.",
"enum": [
"critical",
"high",
"medium",
"low"
],
"examples": [
"critical"
],
"type": "string"
},
"project_id": {
"description": "ACC project ID. MUST use the 'b.' prefix literal. Obtain via acc_list_projects.",
"examples": [
"b.a1b2c3d4-1234-5678-9abc-def012345678"
],
"type": "string"
},
"status": {
"description": "New status. Project workflow may forbid certain transitions (e.g. draft → closed).",
"enum": [
"open",
"in_review",
"closed",
"draft"
],
"examples": [
"closed"
],
"type": "string"
}
},
"required": [
"project_id",
"issue_id"
],
"type": "object"
},
"name": "acc_update_issue",
"outputSchema": null
},
{
"description": "Upload a file from a public source URL into an ACC project folder. Runs the full four-step APS Data Management flow: top-folder discovery → storage object creation → OSS PUT of bytes → first-version item creation.\n\nWhen to use: The user wants to push a document/photo/model into ACC Docs — e.g. 'upload this site photo to the Tower project Photos folder' or an automation needs to archive an exported report into Project Files.\n\nWhen NOT to use: Do not use for files already in ACC; do not use for files behind auth-gated URLs (fetch step is an unauthenticated GET). For very large files (>100MB), prefer the chunked/signed-S3 upload flow, not this single-PUT implementation.\n\nAPS scopes: data:read data:write data:create account:read.\n\nRate limits: APS Data Management ~50 req/min per endpoint; OSS upload bandwidth typically 100 MB/min per app. This tool issues 3–5 APS calls per upload, so budget accordingly.\n\nErrors: 401 (APS token expired — refresh); 403 (user lacks folder write permission — ask account admin to grant 'Edit' on folder); 404 (project_id not found or folder_path does not match any top folder — verify 'b.' prefix, hub membership, and folder name); 422 (invalid file_name or conflicting version); 429 (rate limit — back off 60s); 5xx (ACC/OSS upstream — retry with jitter BUT be cautious: storage object may already be created so reuse, do not re-create). Also: if source file_url returns non-2xx, the tool throws before touching ACC.\n\nSide effects: Creates a storage object, uploads bytes, and creates a versioned item in the target folder. NOT idempotent — a retry may create a duplicate item with a new version. Surface the returned item_id to the user to avoid re-uploads.",
"inputSchema": {
"properties": {
"file_name": {
"description": "Destination filename in ACC, including extension. 1–255 chars. Avoid path separators.",
"examples": [
"site-2026-04-18.jpg"
],
"type": "string"
},
"file_url": {
"description": "Publicly fetchable HTTPS URL of the source file. Must return 2xx to an unauthenticated GET. Max practical size ~100MB for this single-PUT implementation.",
"examples": [
"https://cdn.example.com/photos/site-2026-04-18.jpg"
],
"type": "string"
},
"folder_path": {
"description": "Case-insensitive substring of the target top-level folder's display name. Defaults to 'Project Files'. Common values: 'Project Files', 'Plans', 'Photos', 'Submittals'.",
"examples": [
"Photos"
],
"type": "string"
},
"project_id": {
"description": "ACC project ID. MUST use 'b.' prefix literal. Obtain via acc_list_projects.",
"examples": [
"b.a1b2c3d4-1234-5678-9abc-def012345678"
],
"type": "string"
}
},
"required": [
"project_id",
"file_url",
"file_name"
],
"type": "object"
},
"name": "acc_upload_file",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:e393786c24c1710454011e5a7eae6a8cef46e8ec69b72a1d40f91bcb37987d1b | sha256sum