Skip to main content
Glama

PHP, Symfony & Laravel playground

Server Details

Create shareable links to run Symfony, Laravel or plain PHP code in the browser, no install.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
Oipnet/apprendre-forelse
GitHub Stars
0
ChatGPT
–
Claude
–

TDQS

A3.9/5.0

Scored across 3 tools

Disambiguation5/5

Each tool maps to a distinct action on a distinct resource: creating a shareable link, fetching a starting project template, and reading an existing link's code. There is no plausible way to confuse get_starter (input: framework name) with read_sandbox (input: URL) or create_sandbox (input: files).

Naming Consistency5/5

All three tools follow the same snake_case verb_noun convention (create_sandbox, get_starter, read_sandbox). The verbs accurately signal the operation type, so the pattern is predictable and readable.

Tool Count4/5

Three tools is on the lean side, but the domain is narrow — generate, template, and inspect a code playground — and each tool earns its place in that lifecycle. Nothing redundant is present, though the surface is small enough that one missing tool (see completeness) is conspicuous.

Completeness2/5

get_starter's description instructs the agent to 'ask for their content with include_config', but no such tool exists, creating a guaranteed dead end for any task requiring config file contents. The workflow create -> inspect -> re-create is otherwise workable, but config files are effectively uneditable and the toolset is all-or-nothing around that gap.

Available Tools

3 tools
create_sandboxCreate a shareable PHP playgroundA
Read-onlyIdempotent
Inspect

Creates a shareable link to a playground that runs the given code in the browser (PHP in WebAssembly), with no account and nothing to install. Give only the files you change or add: the others stay as in the starting project (see get_starter). Nothing is stored: the code travels inside the link, after the "#". The page asks the visitor before running code received by a link.

NameRequiredDescriptionDefault
filesYesThe files to change or add, by path relative to the project root (e.g. "src/Controller/AccueilController.php"), with their full content.
languageNoLanguage of the page: "fr" for a French-speaking user, else "en".en
packagesNoSymfony and plain PHP playgrounds: Composer packages to add, from the "packages" list of get_starter (e.g. "symfony/security-bundle", "nesbot/carbon"). For Symfony, their Flex recipe is applied when the page opens.
frameworkYesThe playground: "symfony", "laravel" or "php" (no framework).

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, it discloses that nothing is stored, that code is embedded in the link fragment, and that visitors are asked before running linked code. These are important behavioral and safety details for an agent to know.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: it leads with what is created, then explains file selection, storage behavior, and execution consent. Every sentence contributes useful information without repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a four-parameter tool with no output schema, the description sufficiently explains the produced link and its behavior. It could be slightly more explicit about the returned value or how read_sandbox consumes the link, but no critical information is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents framework, files, packages, and language. The description reinforces the files semantics but adds little parameter meaning beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it creates a shareable link to a browser-run PHP playground. It also distinguishes the tool from the starter-project workflow by referring to get_starter for unchanged files.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear usage context: supply only files that are changed or added, while the rest come from the starting project. It does not explicitly explain when to use read_sandbox instead, so the alternative-selection guidance is not complete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_starterGet a playground starting projectA
Read-only
Inspect

Returns the starting project of a playground (Symfony 8, Laravel 13 or plain PHP 8.5 with Composer autoloading): its files, the paths you may create or edit, and, for Symfony and plain PHP, the Composer packages you may add. Call it before create_sandbox to write code that fits the project. Configuration files (config/, bootstrap/) are listed in config_files; ask for their content with include_config when you need to change one.

NameRequiredDescriptionDefault
languageNoLanguage of the starting project and its page: "fr" for a French-speaking user, else "en".en
frameworkYesThe playground: "symfony", "laravel" or "php" (no framework).
include_configNoAlso return the content of the configuration files (config/, bootstrap/), e.g. to reproduce a bug that depends on the configuration.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=true and openWorldHint=false, and the description adds real context beyond that: the return payload's three components, the fact that config/ and bootstrap/ files are surfaced only as a listing in config_files, and the remedy (include_config) for reading them. It still doesn't clarify whether non-config files come back with contents or as a bare listing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with what is returned before the call-order advice and the config escape hatch. The parenthetical framework/version list partially duplicates the enum values but earns its place by signaling supported runtime versions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of describing returns and does so at a useful level of detail for a read-only starter-project fetch. The remaining ambiguity is whether file contents are included outside config files, which matters for an agent deciding between this and read_sandbox.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters are already documented, and the description largely restates the framework options and include_config behavior. Its one genuine addition is naming the output field config_files, which the schema cannot convey since there is no output schema. Baseline 3 applies given the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Returns the starting project of a playground') and enumerates exactly what comes back: files, creatable/editable paths, and allowed Composer packages. The framework variants named in the parenthetical map directly to the enum, so an agent knows the scope without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit ordering rule tied to a named sibling: 'Call it before create_sandbox to write code that fits the project.' It also routes config-file needs to the include_config flag. It does not mention read_sandbox or state when this tool is unnecessary, so it falls short of a full when/when-not treatment.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_sandboxRead a shared PHP playgroundA
Read-only
Inspect

Reads a playground link (https:///bac-a-sable/... or /en/playground/...#code=..., or a short link /bac-a-sable/s/ or /en/playground/s/): returns the framework and the files that differ from the starting project, to review or fix the code someone shared.

NameRequiredDescriptionDefault
urlYesThe full playground link: a short link (/s/<id>), or a long one including the part after "#code=".

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description discloses the return payload ('the framework and the files that differ from the starting project'), which is genuinely useful context for a tool with no output schema. It says nothing about failure behavior for expired or malformed links, which is the main remaining gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the verb and resource, with return content at the end. The parenthetical list of URL formats is dense but earns its place by clarifying input shapes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with no output schema, the description covers input shapes and the shape of the result, which is enough to call it correctly. Error cases and any size limits on retrieved payloads are unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single param already documents short vs long links including the '#code=' fragment. The description's URL examples largely restate that, adding only concrete path patterns; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Reads') and resource ('a playground link') and enumerates the accepted URL shapes, so the agent knows exactly what operation is performed. It never names the sibling tools, but 'read' is self-evidently distinct from create_sandbox and get_starter, so the differentiation is implicit rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The trailing clause 'to review or fix the code someone shared' implies the use case, but the description gives no explicit when-not conditions, no mention of what to do with links that fail to resolve, and no routing to alternatives. Usage is inferable but not spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updates
    • First observedcreate_sandbox
    • First observedget_starter
    • First observedread_sandbox

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.